tx · 8Rrz8zUxVgVJR9duPcKe2yQs2M8wVUz6zPnFCByFUknK

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.03700000 Waves

2023.01.09 17:41 [2397542] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "8Rrz8zUxVgVJR9duPcKe2yQs2M8wVUz6zPnFCByFUknK", "fee": 3700000, "feeAssetId": null, "timestamp": 1673275296569, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "4Fmx1CpZuELhbQShj2dnMvtxW5wTaMqVFFXrWQrg1hdd4nm2HqaWWHvvpbEGeZKku9A8ybdZvpe9o1w7yygJoRzP" ], "script": "base64:BgKoKQgCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIAEgQKAggBEgQKAggBEgQKAgEBEgMKAQESBQoDAQEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiIEYmlnMyIEYmlnNCIKc2xpcHBhZ2U0RCILd2F2ZXNTdHJpbmciBUFtdWx0IgVEY29udiIDU0VQIgVFTVBUWSIKUG9vbEFjdGl2ZSIKUG9vbFB1dERpcyIOUG9vbE1hdGNoZXJEaXMiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiCWlkeFBvb2xTdCIJaWR4TFBBc0lkIglpZHhBbUFzSWQiCWlkeFByQXNJZCILaWR4QW10QXNEY20iDWlkeFByaWNlQXNEY20iC2lkeElBbXRBc0lkIg1pZHhJUHJpY2VBc0lkIg9pZHhGYWN0U3Rha0NudHIiEmlkeEZhY3RvcnlSZXN0Q250ciIQaWR4RmFjdFNsaXBwQ250ciIRaWR4RmFjdEd3eFJld0NudHIiCmZlZURlZmF1bHQiAnQxIgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0IgJmMSIDdmFsIg9yZXN1bHRTY2FsZU11bHQiDGZyb21YMThSb3VuZCIFcm91bmQiAnRzIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIBdCIDcGF1IgJ1YSIEdHhJZCIDZ2F1IgJhYSICcGEiA2FtcCIDYWRhIgZrZXlGZWUiA2ZlZSIGa2V5RExwIhVrZXlETHBSZWZyZXNoZWRIZWlnaHQiEmtleURMcFJlZnJlc2hEZWxheSIWZExwUmVmcmVzaERlbGF5RGVmYXVsdCIPZExwUmVmcmVzaERlbGF5IgRmY2ZnIgRtdHBrIgJwYyIGaUFtdEFzIgVpUHJBcyIDbWJhIgViQVN0ciIDYXBzIhxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIgN0b2UiA29yViIGc2VuZHJWIgZtYXRjaFYiBHN0cmYiBGFkZHIiA2tleSIEaW50ZiIIdGhyb3dFcnIiA21zZyIGZm10RXJyIgNmY2EiBWluRmVlIgFAIgZvdXRGZWUiAUEiA2lncyICbXAiE2ZlZUNvbGxlY3RvckFkZHJlc3MiA2dwYyIFYW10QXMiB3ByaWNlQXMiCGlQcmljZUFzIgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwNzU0NDc3NzMiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIhJjZmdJbkFtb3VudEFzc2VkSWQiEWNmZ0luUHJpY2VBc3NldElkIgNnZmMiDWZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIPc2xpcGFnZUNvbnRyYWN0Igtnd3hDb250cmFjdCIMcmVzdENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiBWNwYmlyIgN2YWQiAkExIgJBMiIIc2xpcHBhZ2UiBGRpZmYiBHBhc3MiAnZkIgJEMSICRDAiBHNscGciBGZhaWwiA3BjcCIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10IgthbXRBc0FtdFgxOCIKcHJBc0FtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiCGFtdEFzRGNtIgdwckFzRGNtIghwcmljZVgxOCIIbHBBbXRYMTgiDWxwUHJJbkFtQXNYMTgiDWxwUHJJblByQXNYMTgiD2NhbGN1bGF0ZVByaWNlcyIBcCIHdGFrZUZlZSIGYW1vdW50IglmZWVBbW91bnQiA2VnbyIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCILdXNlckFkZHJlc3MiBGxwSWQiBGFtSWQiBHBySWQiBWFtRGNtIgVwckRjbSIDc3RzIgdscEVtaXNzIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiCmxwRW1pc3NYMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIDZXBvIgdpbkFtQW10IgZpbkFtSWQiB2luUHJBbXQiBmluUHJJZCIGaXNFdmFsIgZlbWl0THAiCmlzT25lQXNzZXQiEHZhbGlkYXRlU2xpcHBhZ2UiBnBtdEFtdCIFcG10SWQiB2FtSWRTdHIiB3BySWRTdHIiCWluQW1JZFN0ciIJaW5QcklkU3RyIgZhbXREY20iCHByaWNlRGNtIgRscEVtIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgFyIgtzbGlwcGFnZVgxOCIPc2xpcHBhZ2VSZWFsWDE4Ig1scEVtaXNzaW9uWDE4IgpwclZpYUFtWDE4IgphbVZpYVByWDE4IgxleHBlY3RlZEFtdHMiEWV4cEFtdEFzc2V0QW10WDE4IhNleHBQcmljZUFzc2V0QW10WDE4IgljYWxjTHBBbXQiDmNhbGNBbUFzc2V0UG10Ig5jYWxjUHJBc3NldFBtdCIMc2xpcHBhZ2VDYWxjIgllbWl0THBBbXQiBmFtRGlmZiIGcHJEaWZmIg0kdDAxODQxNzE4NzYyIgp3cml0ZUFtQW10Igp3cml0ZVByQW10Igtjb21tb25TdGF0ZSIEZ2V0RCICeHAiA3hwMCIDeHAxIgFzIgFhIgNhbm4iC3hwMF94cDFfbl9uIgVhbm5fcyIFYW5uXzEiCWNhbGNETmV4dCIBZCICZGQiA2RkZCICZHAiBGNhbGMiA2FjYyIBaSIFZE5leHQiCGREaWZmUmF3IgVkRGlmZiIDYXJyIg0kdDAyMDY5MDIwNzM4IgIkbCICJHMiBSRhY2MwIgUkZjBfMSICJGEiAiRpIgUkZjBfMiIFZm91bmQiB2dldERPbGQiAW4iCmFQcmVjaXNpb24iEGFubl9zX2FQcmVjaXNpb24iDmFubl9hUHJlY2lzaW9uIgJuMSIDY3VyIg0kdDAyMTM2NzIxMzg3Ig0kdDAyMTgwODIxODU1IgVnZXRZRCIBRCIBeCIBYyIBYiINJHQwMjIzNTUyMjM3NSIBeSIFeU5leHQiBXlEaWZmIg0kdDAyMjY4MjIyNzI5IgdjYWxjRExwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiCmxwRW1pc3Npb24iCnVwZGF0ZWRETHAiDmNhbGNDdXJyZW50RExwIhBhbW91bnRBc3NldERlbHRhIg9wcmljZUFzc2V0RGVsdGEiFGxwQXNzZXRFbWlzc2lvbkRlbHRhIhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iCmN1cnJlbnRETHAiEnJlZnJlc2hETHBJbnRlcm5hbCIXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEiFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEiB2FjdGlvbnMiEnZhbGlkYXRlVXBkYXRlZERMcCIGb2xkRExwIht2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQiBW9yZGVyIhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjQ2NjgyNDg4MCIDZExwIg0kdDAyNTIxMDI1MzEwIg11bnVzZWRBY3Rpb25zIgZkTHBOZXciDGlzT3JkZXJWYWxpZCICY2ciA3BtdCICY3AiBmNhbGxlciIHYW1Bc1BtdCIHcHJBc1BtdCINY2FsY1B1dE9uZVRrbiIJcG10QW10UmF3Igt3aXRoVGFrZUZlZSINY2hlY2hFbWlzc2lvbiINJHQwMjc1NzYyODAzOCIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiDSR0MDI4MDQ0MjgyMjAiC2FtQW1vdW50UmF3IgtwckFtb3VudFJhdyINJHQwMjgyMjQyODQ3OCIIYW1BbW91bnQiCHByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIGY2hlY2tEIghscEFtb3VudCIOcG9vbFByb3BvcnRpb24iD2Ftb3VudEFzc2V0UGFydCIOcHJpY2VBc3NldFBhcnQiCWxwQW10Qm90aCIFYm9udXMiE2dldE9uZVRrblYySW50ZXJuYWwiCm91dEFzc2V0SWQiDG1pbk91dEFtb3VudCIIcGF5bWVudHMiDG9yaWdpbkNhbGxlciINdHJhbnNhY3Rpb25JZCIKYW1EZWNpbWFscyIKcHJEZWNpbWFscyIKcG9vbFN0YXR1cyINJHQwMzA1MjgzMDYzOSIIdG90YWxHZXQiC3RvdGFsQW1vdW50Ig0kdDAzMDgyOTMxMTM2IgVvdXRBbSIFb3V0UHIiCGN1clByWDE4IgVjdXJQciIRb3V0QXNzZXRJZE9yV2F2ZXMiEHNlbmRGZWVUb01hdGNoZXIiBGJ1cm4iDSR0MDMxOTIxMzIyNzEiEGZlZUFtb3VudEZvckNhbGMiEG91dEluQW1vdW50QXNzZXQiDSR0MDMyMjc0MzIzODIiEXJlZnJlc2hETHBBY3Rpb25zIhFpc1VwZGF0ZWRETHBWYWxpZCIBbSIHJG1hdGNoMCICcG0iAnBkIglpc01hbmFnZXIiAnBrIgJtbSIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiAmNtIgNocG0iA2NwbSIEc2xpcCIJYXV0b1N0YWtlIgdmYWN0Q2ZnIgtzdGFraW5nQ250ciIIc2xpcENudHIiCmFtQXNzZXRQbXQiCnByQXNzZXRQbXQiAWUiCWxwQXNzZXRJZCICZWwiBmxlZ2FjeSICc2EiAnNwIghscFRybnNmciICc3MiDSR0MDM2NTMxMzY2NzMiBWNoZWNrIhRscEFzc2V0RW1pc3Npb25BZnRlciIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiBmNoZWNrcyINJHQwMzg2NDUzODgwMyIHZXN0aW1MUCINJHQwMzk2MTgzOTk2NyIUcGF5bWVudEluQW1vdW50QXNzZXQiDSR0MDM5OTcwNDAwNzgiB21heFNscGciBmVzdFB1dCINJHQwNDExMDg0MTE3MyIJb3V0QW10QW10Ig0kdDA0MjM0NjQyNDI4Ig1pc0dldERpc2FibGVkIg0kdDA0MzA0NjQzMjAxIhhsYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiHWNoZWNrTGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ig0kdDA0MzcyNTQzNzg5IhBkTHBVcGRhdGVBY3Rpb25zIg1scEFzc2V0QW1vdW50IgVpbmRleCIEbmV3WSICZHkiC3RvdGFsR2V0UmF3Ig0kdDA0NDcxOTQ0Nzc0Ig0kdDA0NTE0OTQ1MjY0Ig5zdW1PZkdldEFzc2V0cyISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDSR0MDQ2NDMwNDY1MTEiDWNoZWNrUGF5bWVudHMiCmZhY3RvcnlDZmciB3N0YWtpbmciCnVuc3Rha2VJbnYiAXYiBWJ1cm5BIg0kdDA0NzUzNTQ3NjE2Ig11bnN0YWtlQW1vdW50IhVub0xlc3NUaGVuQW1vdW50QXNzZXQiA3JlcyIMY2hlY2tBbW91bnRzIg0kdDA0ODg2NDQ4OTQ1Ig0kdDA0OTg0MDUwMDI4IhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCINJHQwNTAxNTY1MDI1OSINJHQwNTA0MDc1MDUxMSIIYW10QXNTdHIiB3ByQXNTdHIiAWsiAnByIgxyZXNTY2FsZU11bHQiB3VzckFkZHIiB3BtdEFzSWQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIKb3JkZXJWYWxpZCILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNofwABYQCAwtcvAAFiCQC2AgEAgMLXLwABYwkAtgIBAICAkLu61q3wDQABZAkAtgIBAAAAAWUJALYCAQAAAAFmCQC2AgEAAQABZwkAtgIBAAIAAWgJALYCAQADAAFpCQC2AgEABAABagkAtgIBCQBlAgUBYQkAaQIJAGgCBQFhAAEFAWEAAWsCBVdBVkVTAAFsAgMxMDAAAW0CATEAAW4CAl9fAAFvAgAAAXAAAQABcQACAAFyAAMAAXMABAABdAABAAF1AAIAAXYAAwABdwAEAAF4AAUAAXkABgABegAHAAFBAAgAAUIACQABQwABAAFEAAYAAUUABwABRgAKAAFHCQBrAwAKBQFhAJBOAQFIAgFJAUoJALwCAwkAtgIBBQFJBQFjCQC2AgEFAUoBAUsCAUwBTQkAoAMBCQC8AgMFAUwJALYCAQUBTQUBYwEBTgMBTAFNAU8JAKADAQkAvQIEBQFMCQC2AgEFAU0FAWMFAU8BAVADAVEBUgFTCQBrAwUBUQUBUgUBUwEBVAEBTAMJAL8CAgUBZAUBTAkAvgIBBQFMBQFMAQFVAQFMAwkAvwICBQFkBQFMCQC+AgEFAUwFAUwBAVYAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFXAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVgAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVkAAhElcyVzX19wcmljZV9fbGFzdAEBWgICYWECYWIJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQJhYQkAzAgCCQCkAwEFAmFiBQNuaWwFAW4BAmFjAgJhZAJhZQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAmFkAgJfXwUCYWUBAmFmAgJhZAJhZQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAmFkAgJfXwUCYWUBAmFnAAIPJXNfX2Ftb3VudEFzc2V0AQJhaAACDiVzX19wcmljZUFzc2V0AQJhaQACByVzX19hbXABAmFqAAINJXNfX2FkZG9uQWRkcgACYWsCByVzX19mZWUAAmFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFrBQFHAAJhbQkAuQkCCQDMCAICAiVzCQDMCAICA2RMcAUDbmlsBQFuAAJhbgkAuQkCCQDMCAICAiVzCQDMCAICEmRMcFJlZnJlc2hlZEhlaWdodAUDbmlsBQFuAAJhbwkAuQkCCQDMCAICAiVzCQDMCAICD3JlZnJlc2hETHBEZWxheQUDbmlsBQFuAAJhcAABAAJhcQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhbwUCYXABAmFyAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFzAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhdAICYXUCYXYJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmF1AgJfXwUCYXYCCF9fY29uZmlnAQJhdwECYXgJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYXgBAmF5AAIMJXNfX3NodXRkb3duAQJhegACHSVzX19hbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAQJhQQACFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhQgMCYUMCYUQCYUUJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIRRmFpbGVkOiBvcmRWYWxpZD0JAKUDAQUCYUMCCyBzbmRyVmFsaWQ9CQClAwEFAmFEAgwgbXRjaHJWYWxpZD0JAKUDAQUCYUUBAmFGAgJhRwJhSAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFHBQJhSAkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhRwkAzAgCAgEuCQDMCAIFAmFICQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFJAgJhRwJhSAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFHBQJhSAkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhRwkAzAgCAgEuCQDMCAIFAmFICQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFKAQJhSwkAAgEJALkJAgkAzAgCAg9scF9zdGFibGUucmlkZToJAMwIAgUCYUsFA25pbAIBIAECYUwBAmFLCQC5CQIJAMwIAgIPbHBfc3RhYmxlLnJpZGU6CQDMCAIFAmFLBQNuaWwCASAAAmFNCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUYCBQR0aGlzCQEBVgAAAmFOCgACYU8JAPwHBAUCYU0CEGdldEluRmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhTwIDSW50BQJhTwkAAgEJAKwCAgkAAwEFAmFPAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmFQCgACYU8JAPwHBAUCYU0CEWdldE91dEZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYU8CA0ludAUCYU8JAAIBCQCsAgIJAAMBBQJhTwIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJhUQkBAmFGAgUEdGhpcwkBAmFpAAECYVIACQELdmFsdWVPckVsc2UCCQCbCAIFAmFNCQECYXkABwECYVMACQDZBAEJAQJhRgIFAmFNCQECYXMAAAJhVAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFGAgUCYU0JAQJhQQABAmFVAAQCYVYJAQJhRgIFBHRoaXMJAQJhZwAEAmFXCQECYUYCBQR0aGlzCQECYWgABAJhWAkBAmFJAgUCYU0JAQJhdwEFAmFXBAJhdQkBAmFJAgUCYU0JAQJhdwEFAmFWCQC1CQIJAQJhRgIFAmFNCQECYXQCCQCkAwEFAmF1CQCkAwEFAmFYBQFuAQJhWQECYVoDCQAAAgUCYVoFAWsFBHVuaXQJANkEAQUCYVoBAmJhAQJhWgMJAAACBQJhWgUEdW5pdAUBawkA2AQBCQEFdmFsdWUBBQJhWgECYmIBAmJjCQCbCgkJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYmMFAXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBdQkA2QQBCQCRAwIFAmJjBQF2CQECYVkBCQCRAwIFAmJjBQF3CQECYVkBCQCRAwIFAmJjBQF4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBegkA2QQBCQCRAwIFAmJjBQFBCQDZBAEJAJEDAgUCYmMFAUIAAmJkCQECYmIBCQECYVUAAAJiZQUCYmQAAmJmCAUCYmUCXzEAAmJnCAUCYmUCXzIAAmJoCAUCYmUCXzMAAmJpCAUCYmUCXzQAAmJqCAUCYmUCXzUAAmJrCAUCYmUCXzYAAmJsCAUCYmUCXzcAAmJtCAUCYmUCXzgAAmJuCAUCYmUCXzkBAmJvAAkAtQkCCQECYUYCBQJhTQkBAmFyAAUBbgACYnAJAQJibwAAAmJxCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJicAUBQwIgSW52YWxpZCBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MAAmJyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJicAUBRQIgSW52YWxpZCBzbGlwYWdlIGNvbnRyYWN0IGFkZHJlc3MAAmJzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJicAUBRgIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwACYnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJwBQFEAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAQJidQoCYnYCYncCYngCYnkCYnoCYkECYkICYkMCYkQCYkUJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJ2CQDMCAIJAKQDAQUCYncJAMwIAgkApAMBBQJieAkAzAgCCQCkAwEFAmJ5CQDMCAIJAKQDAQUCYnoJAMwIAgkApAMBBQJiQQkAzAgCCQCkAwEFAmJCCQDMCAIJAKQDAQUCYkMJAMwIAgkApAMBBQJiRAkAzAgCCQCkAwEFAmJFBQNuaWwFAW4BAmJGBgJiRwJiSAJiSQJieQJiQgJiQwkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJHCQDMCAIJAKQDAQUCYkgJAMwIAgkApAMBBQJiSQkAzAgCCQCkAwEFAmJ5CQDMCAIJAKQDAQUCYkIJAMwIAgkApAMBBQJiQwUDbmlsBQFuAQJiSgECYksDCQAAAgUCYksCBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFAmJLAQJiTAICYk0CYk4JALwCAwUCYk0FAWMFAmJOAQJiTwMCYk0CYk4BTwkAvQIEBQJiTQUBYwUCYk4FAU8BAmJQAwJiUQJiUgJiUwQCYlQJALwCAwkAuAICBQJiUQUCYlIFAWIFAmJSBAJiVQkAvwICCQC4AgIFAmJTCQEBVAEFAmJUBQFkAwkBASEBBQJiVQkAAgEJAKwCAgIKQmlnIHNscGc6IAkApgMBBQJiVAkAlAoCBQJiVQkAmQMBCQDMCAIFAmJRCQDMCAIFAmJSBQNuaWwBAmJWAwJiVwJiWAJiWQQCYlQJALwCAwUCYlgFAWIFAmJXBAJiWgkAvwICBQJiWQUCYlQDAwUCYloGCQC/AgIFAmJYBQJiVwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKYDAQUCYlgCASAJAKYDAQUCYlcCASAJAKYDAQUCYlQCASAJAKYDAQUCYlkFAmJaAQJjYQQCY2ICY2MCY2QCY2UEAmNmCQEBSAIFAmNkBQJjYgQCY2cJAQFIAgUCY2UFAmNjCQECYkwCBQJjZwUCY2YBAmNoAwJjZAJjZQJjaQQCY2oFAmJrBAJjawUCYmwEAmNsCQECY2EEBQJjagUCY2sFAmNkBQJjZQQCYk4JAQFIAgUCY2QFAmNqBAJiTQkBAUgCBQJjZQUCY2sEAmNtCQEBSAIFAmNpBQFhBAJjbgkBAmJMAgUCYk4FAmNtBAJjbwkBAmJMAgUCYk0FAmNtCQDMCAIFAmNsCQDMCAIFAmNuCQDMCAIFAmNvBQNuaWwBAmNwAwJjZAJjZQJjaQQCY3EJAQJjaAMFAmNkBQJjZQUCY2kJAMwIAgkBAUsCCQCRAwIFAmNxAAAFAWEJAMwIAgkBAUsCCQCRAwIFAmNxAAEFAWEJAMwIAgkBAUsCCQCRAwIFAmNxAAIFAWEFA25pbAECY3ICAmNzAmFsBAJjdAMJAAACBQJhbAAAAAAJAGsDBQJjcwUCYWwFAWEJAJQKAgkAZQIFAmNzBQJjdAUCY3QBAmN1BAJjdgJjdwJjeAJjeQQCY3oFAmJoBAJjQQkA2AQBCQEFdmFsdWUBBQJiaQQCY0IJANgEAQkBBXZhbHVlAQUCYmoEAmNDBQJiawQCY0QFAmJsBAJjRQkApAMBBQJiZwQCY0YICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY3oCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgkA2AQBBQJjegUCY3cJAAIBAg9Xcm9uZyBwbXQgYXNzZXQEAmNHCQECYkoBBQJjQQQCY0gJAQFIAgUCY0cFAmNDBAJjSQkBAmJKAQUCY0IEAmNKCQEBSAIFAmNJBQJjRAQCY0sJAQJiTAIFAmNKBQJjSAQCY0wJAQFLAgUCY0sFAWEEAmNNCQEBSAIFAmN4BQFhBAJjTgkBAUgCBQJjRgUBYQQCY08JALwCAwUCY0gFAmNNBQJjTgQCY1AJALwCAwUCY0oFAmNNBQJjTgQCY1EJAQFOAwUCY08FAmNDBQVGTE9PUgQCY1IJAQFOAwUCY1AFAmNEBQVGTE9PUgQCY1MDCQAAAgUCY3YCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmN5BQJjUQMJAAACBQJjQQIFV0FWRVMFBHVuaXQJANkEAQUCY0EJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3kFAmNSAwkAAAIFAmNCAgVXQVZFUwUEdW5pdAkA2QQBBQJjQgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWYCCQClCAEFAmN5BQJjdgkBAmJGBgUCY1EFAmNSBQJjeAUCY0wFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFZAAUCY0wJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFaAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0wFA25pbAkAnAoKBQJjUQUCY1IFAmNBBQJjQgUCY0cFAmNJBQJjRgUCY0sFAmNFBQJjUwECY1QNAmN2AmJTAmNVAmNWAmNXAmNYAmN5AmNZAmNaAmRhAmRiAmRjAmRkBAJjegUCYmgEAmRlCQDYBAEJAQV2YWx1ZQEFAmJpBAJkZgkA2AQBCQEFdmFsdWUBBQJiagQCZGcFAmJtBAJkaAUCYm4EAmRpBQJiawQCZGoFAmJsBAJjRQkApAMBBQJiZwQCZGsICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY3oCCFdyIGxwIGFzCHF1YW50aXR5BAJjRwMFAmNZCQECYkoBBQJkZQMDBQJkYQkAAAIFAmRkBQJkZQcJAGUCCQECYkoBBQJkZQUCZGMDBQJkYQkBAmJKAQUCZGUJAGUCCQECYkoBBQJkZQUCY1UEAmNJAwUCY1kJAQJiSgEFAmRmAwMFAmRhCQAAAgUCZGQFAmRmBwkAZQIJAQJiSgEFAmRmBQJkYwMFAmRhCQECYkoBBQJkZgkAZQIJAQJiSgEFAmRmBQJjVwQCZGwJAQFIAgUCY1UFAmRpBAJkbQkBAUgCBQJjVwUCZGoEAmRuCQECYkwCBQJkbQUCZGwEAmNICQEBSAIFAmNHBQJkaQQCY0oJAQFIAgUCY0kFAmRqBAJkbwMJAAACBQJkawAABAJjSwUBZAQCZHAFAWQEAmNtCQB2BgkAuQICBQJkbAUCZG0AAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFLAgUCY20FAWEJAQFLAgUCZGwFAmRpCQEBSwIFAmRtBQJkagkBAmJMAgkAtwICBQJjSgUCZG0JALcCAgUCY0gFAmRsBQJkcAQCY0sJAQJiTAIFAmNKBQJjSAQCZHEJALwCAwkBAVQBCQC4AgIFAmNLBQJkbgUBYwUCY0sEAmRwCQEBSAIFAmJTBQFhAwMDBQJkYgkBAiE9AgUCY0sFAWQHCQC/AgIFAmRxBQJkcAcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCZHECAyA+IAkApgMBBQJkcAQCZHIJAQFIAgUCZGsFAWEEAmRzCQC9AgQFAmRsCQECYk8DBQJjSgUCY0gFBUZMT09SBQFjBQVGTE9PUgQCZHQJAL0CBAUCZG0FAWMJAQJiTwMFAmNKBQJjSAUFRkxPT1IFBUZMT09SBAJkdQMJAL8CAgUCZHMFAmRtCQCUCgIFAmR0BQJkbQkAlAoCBQJkbAUCZHMEAmR2CAUCZHUCXzEEAmR3CAUCZHUCXzIEAmNtCQC9AgQFAmRyBQJkdwUCY0oFBUZMT09SCQCXCgUJAQFOAwUCY20FAWEFBUZMT09SCQEBTgMFAmR2BQJkaQUHQ0VJTElORwkBAU4DBQJkdwUCZGoFB0NFSUxJTkcFAmNLBQJkcAQCZHgIBQJkbwJfMQQCZHkIBQJkbwJfMgQCZHoIBQJkbwJfMwQCY0wJAQFLAggFAmRvAl80BQFhBAJkQQkBAUsCCAUCZG8CXzUFAWEDCQBnAgAABQJkeAkAAgECB0xQIDw9IDAEAmRCAwkBASEBBQJjWgAABQJkeAQCZEMJAGUCBQJjVQUCZHkEAmRECQBlAgUCY1cFAmR6BAJkRQMDBQJkYQkAAAIFAmRkBQJkZQcJAJQKAgUCZGMAAAMDBQJkYQkAAAIFAmRkBQJkZgcJAJQKAgAABQJkYwkAlAoCBQJkeQUCZHoEAmRGCAUCZEUCXzEEAmRHCAUCZEUCXzIEAmRICQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWQAFAmNMCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNMCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYwIFAmN5BQJjdgkBAmJ1CgUCZEYFAmRHBQJkQgUCY0wFAmJTBQJkQQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZEMFAmREBQNuaWwJAJ8KDQUCZHgFAmRCBQJjTAUCY0cFAmNJBQJkawUCY3oFAmNFBQJkSAUCZEMFAmREBQJjVgUCY1gBAmRJAQJkSgQCZEsJAJEDAgUCZEoAAAQCZEwJAJEDAgUCZEoAAQQCZE0JALcCAgUCZEsFAmRMAwkAAAIFAmRNBQFlBQFlBAJkTgkBDXBhcnNlSW50VmFsdWUBBQJhUQQCZE8JAGgCBQJkTgACBAJjcQkAvAIDBQJkSwUCZEwFAWYEAmRQCQC8AgMFAmNxBQFpBQFmBAJkUQkAvAIDCQC2AgEFAmRPBQJkTQUBZgQCZFIJALYCAQkAZQIFAmRPAAEKAQJkUwECZFQEAmRVCQC8AgMFAmRUBQJkVAUBZgQCZFYJALwCAwUCZFUFAmRUBQFmBAJkVwkAvAIDBQJkVgUBZgUCZFAJAL0CBAkAtwICBQJkUQkAvAIDBQJkVwUBZwUBZgUCZFQJALcCAgkAvAIDBQJkUgUCZFQFAWYJALwCAwUBaAUCZFcFAWYFB0NFSUxJTkcKAQJkWAICZFkCZFoDCAUCZFkCXzIFAmRZBAJkVAgFAmRZAl8xBAJlYQkBAmRTAQUCZFQEAmViCQCgAwEJALgCAgUCZWEJAQV2YWx1ZQEFAmRUBAJlYwMJAGYCAAAFAmViCQEBLQEFAmViBQJlYgMJAGcCAAEFAmVjCQCUCgIFAmVhBgkAlAoCBQJlYQcEAmVkCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmVlCgACZWYFAmVkCgACZWcJAJADAQUCZWYKAAJlaAkAlAoCBQJkTQcKAQJlaQICZWoCZWsDCQBnAgUCZWsFAmVnBQJlagkBAmRYAgUCZWoJAJEDAgUCZWYFAmVrCgECZWwCAmVqAmVrAwkAZwIFAmVrBQJlZwUCZWoJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmVsAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgUCZWgAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZFQIBQJlZQJfMQQCZW0IBQJlZQJfMgMFAmVtBQJkVAkAAgEJAKwCAgIZRCBjYWxjdWxhdGlvbiBlcnJvciwgRCA9IAkApgMBBQJkVAECZW4BAmRKBAJlbwUBZwQCZEsJAJEDAgUCZEoAAAQCZEwJAJEDAgUCZEoAAQQCZXAJAKcDAQUBbAQCZE4JALkCAgkApwMBBQJhUQUCZXAEAmRNCQC3AgIFAmRLBQJkTAMJAAACBQJkTQUBZQUBZQQCZE8JALkCAgUCZE4FAmVvBAJkUAkAuQICCQC5AgIJALkCAgUCZEsFAmRMBQJlbwUCZW8EAmVxCQC6AgIJALkCAgUCZE8FAmRNBQJlcAQCZXIJALgCAgUCZE8FAmVwBAJlcwkAtwICBQJlbwUBZgoBAmRYAgJkWQJldAQCZXUFAmRZBAJkVAgFAmV1Al8xBAJlbQgFAmV1Al8yAwkBAiE9AgUCZW0FBHVuaXQFAmRZBAJkVwkAugICCQC5AgIJALkCAgUCZFQFAmRUBQJkVAUCZFAEAmVhCQC6AgIJALkCAgkAtwICBQJlcQkAuQICBQJkVwUCZW8FAmRUCQC3AgIJALoCAgkAuQICBQJlcgUCZFQFAmVwCQC5AgIFAmVzBQJkVwQCZWMJAQFVAQkAuAICBQJlYQkBBXZhbHVlAQUCZFQDCQDAAgIFAWYFAmVjCQCUCgIFAmVhBQJldAkAlAoCBQJlYQUEdW5pdAQCZWQJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZXYKAAJlZgUCZWQKAAJlZwkAkAMBBQJlZgoAAmVoCQCUCgIFAmRNBQR1bml0CgECZWkCAmVqAmVrAwkAZwIFAmVrBQJlZwUCZWoJAQJkWAIFAmVqCQCRAwIFAmVmBQJlawoBAmVsAgJlagJlawMJAGcCBQJlawUCZWcFAmVqCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJlbAIJAQJlaQIJAQJlaQIJAQJlaQIJAQJlaQIJAQJlaQIJAQJlaQIJAQJlaQIJAQJlaQIJAQJlaQIJAQJlaQIJAQJlaQIJAQJlaQIJAQJlaQIJAQJlaQIJAQJlaQIFAmVoAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmRUCAUCZXYCXzEEAmVtCAUCZXYCXzIDCQECIT0CBQJlbQUEdW5pdAUCZFQJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCZFQBAmV3AwJkSgJkWgJleAQCZW8FAWcEAmV5CQCRAwIFAmRKAwkAAAIFAmRaAAAAAQAABAJlcAkApwMBBQFsBAJkTgkAuQICCQCnAwEFAmFRBQJlcAQCZE0FAmV5BAJkTwkAuQICBQJkTgUCZW8EAmV6CQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUCZXgFAmV4CQC5AgIFAmV5BQJlbwUCZXgFAmVwCQC5AgIFAmRPBQJlbwQCZUEJALgCAgkAtwICBQJkTQkAugICCQC5AgIFAmV4BQJlcAUCZE8FAmV4CgECZFgCAmRZAmV0BAJlQgUCZFkEAmVDCAUCZUICXzEEAmVtCAUCZUICXzIDCQECIT0CBQJlbQUEdW5pdAUCZFkEAmVECQC6AgIJALcCAgkAuQICBQJlQwUCZUMFAmV6CQC3AgIJALkCAgUBZwUCZUMFAmVBBAJlRQkBAVUBCQC4AgIFAmVECQEFdmFsdWUBBQJlQwMJAMACAgUBZgUCZUUJAJQKAgUCZUQFAmV0CQCUCgIFAmVEBQR1bml0BAJlZAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlRgoAAmVmBQJlZAoAAmVnCQCQAwEFAmVmCgACZWgJAJQKAgUCZXgFBHVuaXQKAQJlaQICZWoCZWsDCQBnAgUCZWsFAmVnBQJlagkBAmRYAgUCZWoJAJEDAgUCZWYFAmVrCgECZWwCAmVqAmVrAwkAZwIFAmVrBQJlZwUCZWoJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmVsAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgkBAmVpAgUCZWgAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZUMIBQJlRgJfMQQCZW0IBQJlRgJfMgMJAQIhPQIFAmVtBQR1bml0BQJlQwkAAgEJAKwCAgIZWSBjYWxjdWxhdGlvbiBlcnJvciwgWSA9IAkApgMBBQJlQwECZUcDAmVIAmVJAmVKBAJlSwkAvAIDCQECZEkBCQDMCAIFAmVICQDMCAIFAmVJBQNuaWwFAWMFAmVKAwkAAAIFAmVKBQFlBQFlBQJlSwECZUwDAmVNAmVOAmVPBAJlUAkAuAICCQC2AgEJAQJiSgEJAQJiYQEFAmJpBQJlTQQCZVEJALgCAgkAtgIBCQECYkoBCQECYmEBBQJiagUCZU4EAmVSCQC4AgIJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYmgIcXVhbnRpdHkFAmVPBAJlUwkBAmVHAwUCZVAFAmVRBQJlUgUCZVMBAmVUAwJlVQJlVgJlTwQCZVAJAGQCCQECYkoBCQECYmEBBQJiaQUCZVUEAmVRCQBkAgkBAmJKAQkBAmJhAQUCYmoFAmVWBAJlUgkAZAIICQEFdmFsdWUBCQDsBwEFAmJoCHF1YW50aXR5BQJlTwQCZUsJAQJlRwMJALYCAQUCZVAJALYCAQUCZVEJALYCAQUCZVIEAmVXCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJhbgUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFAmFtCQCmAwEFAmVLBQNuaWwJAJQKAgUCZVcFAmVLAQJlWAICZVkCZUsDCQDAAgIFAmVLBQJlWQYJAQJhSgECInVwZGF0ZWQgRExwIGxvd2VyIHRoYW4gY3VycmVudCBETHABAmVaAQJmYQQCZmIIBQJmYQZhbW91bnQEAmZjCQBuBAgFAmZhBmFtb3VudAgFAmZhBXByaWNlBQFhBQVGTE9PUgQCZmQDCQAAAggFAmZhCW9yZGVyVHlwZQUDQnV5CQCUCgIFAmZiCQEBLQEFAmZjCQCUCgIJAQEtAQUCZmIFAmZjBAJlVQgFAmZkAl8xBAJlVggFAmZkAl8yAwMDCQECYVIABgkAAAIFAmJnBQFyBgkAAAIFAmJnBQFzCQACAQINQWRtaW4gYmxvY2tlZAMDCQECIT0CCAgFAmZhCWFzc2V0UGFpcgthbW91bnRBc3NldAUCYmkGCQECIT0CCAgFAmZhCWFzc2V0UGFpcgpwcmljZUFzc2V0BQJiagkAAgECCVdyIGFzc2V0cwQCZmUJAKcDAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUCYW0EAmZmCQECZVQDBQJlVQUCZVYAAAQCZmcIBQJmZgJfMQQCZmgIBQJmZgJfMgQCZmkJAMACAgUCZmgFAmZlBQJmaQECZmoBAmRaAwkBAiE9AgkAkAMBCAUCZFoIcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmZrCQEFdmFsdWUBCQCRAwIIBQJkWghwYXltZW50cwAABAJjdwkBBXZhbHVlAQgFAmZrB2Fzc2V0SWQEAmRjCAUCZmsGYW1vdW50BAJkbwkBAmN1BAkA2AQBCAUCZFoNdHJhbnNhY3Rpb25JZAkA2AQBBQJjdwUCZGMIBQJkWgZjYWxsZXIEAmNRCAUCZG8CXzEEAmNSCAUCZG8CXzIEAmNFCQENcGFyc2VJbnRWYWx1ZQEIBQJkbwJfOQQCY1MIBQJkbwNfMTADAwkBAmFSAAYJAAACBQJjRQUBcwkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmNFCQCXCgUFAmNRBQJjUgUCZGMFAmN3BQJjUwECZmwKAmZtAmFlAmZuAmZvAmJTAmNaAmRhAmRiAmRjAmRkBAJkbwkBAmNUDQUCYWUFAmJTCAkBBXZhbHVlAQUCZm4GYW1vdW50CAkBBXZhbHVlAQUCZm4HYXNzZXRJZAgJAQV2YWx1ZQEFAmZvBmFtb3VudAgJAQV2YWx1ZQEFAmZvB2Fzc2V0SWQFAmZtCQAAAgUCYWUCAAUCY1oFAmRhBQJkYgUCZGMFAmRkBAJjRQkBDXBhcnNlSW50VmFsdWUBCAUCZG8CXzgDAwMJAQJhUgAGCQAAAgUCY0UFAXEGCQAAAgUCY0UFAXMJAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFAmNFBQJkbwECZnAFAmZxAmN3AmN5AmFlAmZyBAJjQQkA2AQBCQEFdmFsdWUBBQJiaQQCY0IJANgEAQkBBXZhbHVlAQUCYmoEAmN6BQJiaAQCZGkFAmJrBAJkagUCYmwEAmVSCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY3oCEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmZzAwkAvwICBQJlUgUBZQYJAAIBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmZzBQJmcwQCY0cJAQJiSgEFAmNBBAJjSQkBAmJKAQUCY0IEAmZ0AwkAAAIFAmFlAgAJAJQKAgUCY0cFAmNJAwkAAAIFAmN3BQJjQQMJAGYCBQJmcQUCY0cJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIJAGUCBQJjRwUCZnEFAmNJAwkAAAIFAmN3BQJjQgMJAGYCBQJmcQUCY0kJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIFAmNHCQBlAgUCY0kFAmZxCQACAQIQd3JvbmcgcG10QXNzZXRJZAQCZnUIBQJmdAJfMQQCZnYIBQJmdAJfMgQCZncDCQAAAgUCY3cFAmNBCQCUCgIFAmZxAAADCQAAAgUCY3cFAmNCCQCUCgIAAAUCZnEJAAIBAg9pbnZhbGlkIHBheW1lbnQEAmZ4CAUCZncCXzEEAmZ5CAUCZncCXzIEAmZ6AwUCZnIJAJUKAwgJAQJjcgIFAmZ4BQJhTgJfMQgJAQJjcgIFAmZ5BQJhTgJfMQgJAQJjcgIFAmZxBQJhTgJfMgkAlQoDBQJmeAUCZnkAAAQCZkEIBQJmegJfMQQCZkIIBQJmegJfMgQCY3QIBQJmegJfMwQCZkMJAGQCBQJmdQUCZkEEAmZECQBkAgUCZnYFAmZCBAJiWAkBAmRJAQkAzAgCCQC2AgEFAmZ1CQDMCAIJALYCAQUCZnYFA25pbAQCYlcJAQJkSQEJAMwIAgkAtgIBBQJmQwkAzAgCCQC2AgEFAmZEBQNuaWwEAmZFAwkAvwICBQJiVwUCYlgGCQEFdGhyb3cAAwkAAAIFAmZFBQJmRQQCZkYJAL0CBAUCZVIJALgCAgUCYlcFAmJYBQJiWAUFRkxPT1IEAmNMCQEBSwIJAQJiTAIJAQFIAgUCZkQFAmRqCQEBSAIFAmZDBQJkaQUBYQQCZEgJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFZAAUCY0wJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFaAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0wJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFjAgUCY3kFAmFlCQECYnUKBQJmeAUCZnkJAKADAQUCZkYFAmNMAAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZkcJAGsDBQJmdgUBYQUCZnUEAmZICQBrAwUCZnEFAWEJAGQCBQJmRwUBYQQCZkkJAGUCBQJmcQUCZkgEAmZKCQC8AgMFAmVSCQC2AgEFAmZJCQC2AgEFAmZ2BAJmSwkAoAMBCQC8AgMJALgCAgUCZkYFAmZKBQFiBQJmSgkAlgoECQCgAwEFAmZGBQJkSAUCY3QFAmZLCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmTAYCZk0CZk4CZk8CZm0CZlACZlEEAmN6CQDYBAEJAQV2YWx1ZQEFAmJoBAJjQQkA2AQBCQEFdmFsdWUBBQJiaQQCY0IJANgEAQkBBXZhbHVlAQUCYmoEAmZSBQJiawQCZlMFAmJsBAJmVAUCYmcEAmN5AwkAAAIFAmZtBQJidAUCZlAFAmZtBAJmawkBBXZhbHVlAQkAkQMCBQJmTwAABAJjdwkBBXZhbHVlAQgFAmZrB2Fzc2V0SWQEAmRjCAUCZmsGYW1vdW50BAJlUwkBAmVMAwUBZQUBZQUBZQMJAAACBQJlUwUCZVMEAmN2CQDYBAEFAmZRAwkBAiE9AgUCY3oJANgEAQUCY3cJAAIBAghXcm9uZyBMUAQCY0cJAQJiSgEFAmNBBAJjSQkBAmJKAQUCY0IEAmZVCgACYU8JAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJmTQkAzAgCBQJkYwUDbmlsBQNuaWwDCQABAgUCYU8CCihJbnQsIEludCkFAmFPCQACAQkArAICCQADAQUCYU8CHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkDCQAAAgUCZlUFAmZVBAJjdAgFAmZVAl8yBAJmVggFAmZVAl8xBAJmVwMDCQBmAgUCZk4AAAkAZgIFAmZOBQJmVgcJAQJhSgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZk4FA25pbAIABQJmVgQCZlgDCQAAAgUCZk0FAmNBCQCWCgQFAmZXAAAJAGUCCQBlAgUCY0cFAmZXBQJjdAUCY0kDCQAAAgUCZk0FAmNCCQCWCgQAAAUCZlcFAmNHCQBlAgkAZQIFAmNJBQJmVwUCY3QJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCZlkIBQJmWAJfMQQCZloIBQJmWAJfMgQCZkMIBQJmWAJfMwQCZkQIBQJmWAJfNAQCZ2EJAQJiTAIJAQFIAgUCZkQFAmZTCQEBSAIFAmZDBQJmUgQCZ2IJAQFLAgUCZ2EFAWEEAmdjAwkAAAIFAmZNAgVXQVZFUwUEdW5pdAkA2QQBBQJmTQQCZ2QDCQBmAgUCY3QAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhVAUCY3QFAmdjBQNuaWwFA25pbAQCY1MJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjeQUCZlcFAmdjCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZgIJAKUIAQUCY3kFAmN2CQECYkYGBQJmWQUCZloFAmRjBQJnYgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVkABQJnYgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVoCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJnYgUDbmlsBQJnZAMJAAACBQJjUwUCY1MEAmdlCQD8BwQFAmFNAgRidXJuCQDMCAIFAmRjBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmN3BQJkYwUDbmlsAwkAAAIFAmdlBQJnZQQCZ2YEAmdnAwkAAAIFBHRoaXMFAmFUAAAFAmN0BAJnaAMJAAACCQECYVkBBQJmTQUCYmkGBwMFAmdoCQCUCgIJAQEtAQkAZAIFAmZWBQJnZwAACQCUCgIAAAkBAS0BCQBkAgUCZlYFAmdnBAJlVQgFAmdmAl8xBAJlVggFAmdmAl8yBAJnaQkBAmVUAwUCZVUFAmVWAAAEAmdqCAUCZ2kCXzEEAmVLCAUCZ2kCXzIEAmdrCQECZVgCBQJlUwUCZUsDCQAAAgUCZ2sFAmdrCQCUCgIJAM4IAgUCY1MFAmdqBQJmVwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZ2wABAJnbQkAoggBCQEBVwADCQABAgUCZ20CBlN0cmluZwQCZE0FAmdtCQDZBAEFAmRNAwkAAQIFAmdtAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmduAAQCZ20JAKIIAQkBAVgAAwkAAQIFAmdtAgZTdHJpbmcEAmRNBQJnbQkA2QQBBQJkTQMJAAECBQJnbQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJnbwkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJncAECZFoEAmdtCQECZ2wAAwkAAQIFAmdtAgpCeXRlVmVjdG9yBAJncQUCZ20JAAACCAUCZFoPY2FsbGVyUHVibGljS2V5BQJncQMJAAECBQJnbQIEVW5pdAkAAAIIBQJkWgZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZ3IBAmRaBAJnbQkBAmdsAAMJAAECBQJnbQIKQnl0ZVZlY3RvcgQCZ3EFAmdtAwkAAAIIBQJkWg9jYWxsZXJQdWJsaWNLZXkFAmdxBgUCZ28DCQABAgUCZ20CBFVuaXQDCQAAAggFAmRaBmNhbGxlcgUEdGhpcwYFAmdvCQACAQILTWF0Y2ggZXJyb3IcAmRaAQtjb25zdHJ1Y3RvcgEBVgQCZXoJAQJncgEFAmRaAwkAAAIFAmV6BQJlegkAzAgCCQELU3RyaW5nRW50cnkCCQEBVgAFAVYFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkWgEKc2V0TWFuYWdlcgECZ3MEAmV6CQECZ3IBBQJkWgMJAAACBQJlegUCZXoEAmd0CQDZBAEFAmdzAwkAAAIFAmd0BQJndAkAzAgCCQELU3RyaW5nRW50cnkCCQEBWAAFAmdzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFoBDmNvbmZpcm1NYW5hZ2VyAAQCY3EJAQJnbgAEAmd1AwkBCWlzRGVmaW5lZAEFAmNxBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJndQUCZ3UEAmd2AwkAAAIIBQJkWg9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmNxBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJndgUCZ3YJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVcACQDYBAEJAQV2YWx1ZQEFAmNxCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFYAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRaAQNwdXQCAmd3Amd4BAJneQkBAmJvAAQCZ3oJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmd5BQFDAgpXciBzdCBhZGRyBAJnQQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZ3kFAUUCCldyIHNsIGFkZHIDCQBmAgAABQJndwkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUCZFoIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCZ0IJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRaCHBheW1lbnRzAAAGYW1vdW50BAJnQwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZFoIcGF5bWVudHMAAQZhbW91bnQEAmVQCQC4AgIJALYCAQkBAmJKAQkBAmJhAQUCYmkFAmdCAwkAAAIFAmVQBQJlUAQCZVEJALgCAgkAtgIBCQECYkoBCQECYmEBBQJiagUCZ0MDCQAAAgUCZVEFAmVRBAJlUgkAtgIBCAkBBXZhbHVlAQkA7AcBBQJiaAhxdWFudGl0eQMJAAACBQJlUgUCZVIEAmVTCQECZUwDBQJnQgUCZ0MJALYCAQAAAwkAAAIFAmVTBQJlUwQCZ0QJAQJmbAoJAKUIAQgFAmRaBmNhbGxlcgkA2AQBCAUCZFoNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJkWghwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJkWghwYXltZW50cwAABmFtb3VudAkAkQMCCAUCZFoIcGF5bWVudHMAAQUCZ3cGBwYAAAIABAJkQggFAmdEAl8yBAJnRQgFAmdEAl83BAJjUwgFAmdEAl85BAJkQwgFAmdEA18xMAQCZEQIBQJnRANfMTEEAmNBCAUCZ0QDXzEyBAJjQggFAmdEA18xMwQCZG8JAPwHBAUCYU0CBGVtaXQJAMwIAgUCZEIFA25pbAUDbmlsAwkAAAIFAmRvBQJkbwQCZ0YEAmdtBQJkbwMJAAECBQJnbQIHQWRkcmVzcwQCZ0cFAmdtCQD8BwQFAmdHAgRlbWl0CQDMCAIFAmRCBQNuaWwFA25pbAUEdW5pdAMJAAACBQJnRgUCZ0YEAmdIAwkAZgIFAmRDAAAJAPwHBAUCZ0ECA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjQQUCZEMFA25pbAUDbmlsAwkAAAIFAmdIBQJnSAQCZ0kDCQBmAgUCZEQAAAkA/AcEBQJnQQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNCBQJkRAUDbmlsBQNuaWwDCQAAAgUCZ0kFAmdJBAJnSgMFAmd4BAJnSwkA/AcEBQJnegIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ0UFAmRCBQNuaWwDCQAAAgUCZ0sFAmdLBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRaBmNhbGxlcgUCZEIFAmdFBQNuaWwEAmdMCQECZVQDAAAAAAAABAJnaggFAmdMAl8xBAJlSwgFAmdMAl8yBAJnTQMJAMACAgUCZUsFAmVTBgkBAmFKAQkAuQkCCQDMCAICInVwZGF0ZWQgRExwIGxvd2VyIHRoYW4gY3VycmVudCBETHAJAMwIAgkApgMBBQJlUAkAzAgCCQCmAwEFAmVRCQDMCAIJAKYDAQUCZVIJAMwIAgkApgMBBQJlUwkAzAgCCQCmAwEFAmVLCQDMCAIJAKQDAQUCZEMJAMwIAgkApAMBBQJkRAUDbmlsAgEgAwkAAAIFAmdNBQJnTQQCZ04ICQEFdmFsdWUBCQDsBwEFAmJoCHF1YW50aXR5AwkAAAIFAmdOBQJnTgkAzggCCQDOCAIFAmNTBQJnSgUCZ2oJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFoBC3B1dE9uZVRrblYyAgJmTgJneAQCZ08KAAJhTwkA/AcEBQJhTQIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFPAgdCb29sZWFuBQJhTwkAAgEJAKwCAgkAAwEFAmFPAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnUAMDAwkBAmFSAAYJAAACBQJiZwUBcQYJAAACBQJiZwUBcwYFAmdPBAJnUQkAzAgCAwMJAQEhAQUCZ1AGCQECZ3ABBQJkWgYJAQJhSgECIXB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRaCHBheW1lbnRzAAEGCQECYUoBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnUQUCZ1EEAmNBCQDYBAEJAQV2YWx1ZQEFAmJpBAJjQgkA2AQBCQEFdmFsdWUBBQJiagQCY3oFAmJoBAJmUgUCYmsEAmZTBQJibAQCY3kDCQAAAggFAmRaBmNhbGxlcgUEdGhpcwgFAmRaDG9yaWdpbkNhbGxlcggFAmRaBmNhbGxlcgQCZmsJAQV2YWx1ZQEJAJEDAggFAmRaCHBheW1lbnRzAAAEAmN3CQDYBAEJAQV2YWx1ZQEIBQJmawdhc3NldElkBAJkYwgFAmZrBmFtb3VudAQCZVMDCQAAAggFAmZrB2Fzc2V0SWQFAmJpCQECZUwDCQC2AgEFAmRjCQC2AgEAAAkAtgIBAAAJAQJlTAMJALYCAQAACQC2AgEFAmRjCQC2AgEAAAMJAAACBQJlUwUCZVMEAmdSCQECZnAFBQJkYwUCY3cJAKUIAQUCY3kJANgEAQgFAmRaDXRyYW5zYWN0aW9uSWQGAwkAAAIFAmdSBQJnUgQCY3QIBQJnUgJfMwQCY1MIBQJnUgJfMgQCZ1MIBQJnUgJfMQQCZEIDAwkAZgIFAmZOAAAJAGYCBQJmTgUCZ1MHCQECYUoBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZOBQNuaWwCAAUCZ1MEAmdECQD8BwQFAmFNAgRlbWl0CQDMCAIFAmRCBQNuaWwFA25pbAMJAAACBQJnRAUCZ0QEAmdGBAJnbQUCZ0QDCQABAgUCZ20CB0FkZHJlc3MEAmdHBQJnbQkA/AcEBQJnRwIEZW1pdAkAzAgCBQJkQgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZ0YFAmdGBAJnSgMFAmd4BAJnSwkA/AcEBQJicQIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3oFAmRCBQNuaWwDCQAAAgUCZ0sFAmdLBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRaBmNhbGxlcgUCZEIFAmN6BQNuaWwEAmdkAwkAZgIFAmN0AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVQFAmN0CQDZBAEFAmN3BQNuaWwFA25pbAQCZ1QDCQAAAgUEdGhpcwUCYVQJAJQKAgAAAAAEAmdVAwkAAAIIBQJmawdhc3NldElkBQJiaQYHAwUCZ1UJAJQKAgkBAS0BBQJjdAAACQCUCgIAAAkBAS0BBQJjdAQCZVUIBQJnVAJfMQQCZVYIBQJnVAJfMgQCZ1YJAQJlVAMFAmVVBQJlVgAABAJnaggFAmdWAl8xBAJlSwgFAmdWAl8yBAJnawkBAmVYAgUCZVMFAmVLAwkAAAIFAmdrBQJnawkAlAoCCQDOCAIJAM4IAgkAzggCBQJjUwUCZ0oFAmdkBQJnagUCZEIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFoBCnB1dEZvckZyZWUBAmdXAwkAZgIAAAUCZ1cJAAIBAgpXcm9uZyBzbHBnAwkBAiE9AgkAkAMBCAUCZFoIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCZ1gJAQJmbAoJAKUIAQgFAmRaBmNhbGxlcgkA2AQBCAUCZFoNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJkWghwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJkWghwYXltZW50cwAABmFtb3VudAkAkQMCCAUCZFoIcGF5bWVudHMAAQUCZ1cHBwYAAAIABAJjUwgFAmdYAl85BAJnQgkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZFoIcGF5bWVudHMAAAZhbW91bnQEAmdDCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkWghwYXltZW50cwABBmFtb3VudAQCZVMJAQJlTAMFAmdCBQJnQwkAtgIBAAADCQAAAgUCZVMFAmVTBAJnWQkBAmVUAwAAAAAAAAQCZ2oIBQJnWQJfMQQCZUsIBQJnWQJfMgQCZ2sJAQJlWAIFAmVTBQJlSwMJAAACBQJnawUCZ2sJAM4IAgUCY1MFAmdqCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRaAQNnZXQABAJlUwkBAmVMAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlUwUCZVMEAmRvCQECZmoBBQJkWgQCZ1oIBQJkbwJfMQQCY1IIBQJkbwJfMgQCZGMIBQJkbwJfMwQCY3cIBQJkbwJfNAQCY1MIBQJkbwJfNQQCZUEJAPwHBAUCYU0CBGJ1cm4JAMwIAgUCZGMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3cFAmRjBQNuaWwDCQAAAgUCZUEFAmVBBAJoYQkBAmVUAwkBAS0BBQJnWgkBAS0BBQJjUgAABAJnaggFAmhhAl8xBAJlSwgFAmhhAl8yBAJnawkBAmVYAgUCZVMFAmVLAwkAAAIFAmdrBQJnawkAzggCBQJjUwUCZ2oJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFoBC2dldE9uZVRrblYyAgJmTQJmTgQCZ08KAAJhTwkA/AcEBQJhTQIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFPAgdCb29sZWFuBQJhTwkAAgEJAKwCAgkAAwEFAmFPAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJoYgMDCQECYVIABgkAAAIFAmJnBQFzBgUCZ08EAmdRCQDMCAIDAwkBASEBBQJoYgYJAQJncAEFAmRaBgkBAmFKAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZFoIcGF5bWVudHMAAQYJAQJhSgECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdRBQJnUQQCaGMJAQJmTAYFAmZNBQJmTggFAmRaCHBheW1lbnRzCAUCZFoGY2FsbGVyCAUCZFoMb3JpZ2luQ2FsbGVyCAUCZFoNdHJhbnNhY3Rpb25JZAQCY1MIBQJoYwJfMQQCZlcIBQJoYwJfMgkAlAoCBQJjUwUCZlcJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFoBCnJlZnJlc2hETHAABAJoZAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQJhbgAABAJoZQMJAGcCCQBlAgUGaGVpZ2h0BQJoZAUCYXEFBHVuaXQJAQJhSgEJALkJAgkAzAgCCQCkAwEFAmFxCQDMCAICLyBibG9ja3MgaGF2ZSBub3QgcGFzc2VkIHNpbmNlIHRoZSBwcmV2aW91cyBjYWxsBQNuaWwCAAMJAAACBQJoZQUCaGUEAmZlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJhbQIBMAkBAmFMAQILaW52YWxpZCBkTHAEAmhmCQECZVQDAAAAAAAABAJoZwgFAmhmAl8xBAJlSwgFAmhmAl8yBAJlVwMJAQIhPQIFAmZlBQJlSwUCaGcJAQJhSgECEm5vdGhpbmcgdG8gcmVmcmVzaAkAlAoCBQJlVwkApgMBBQJlSwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkWgETZ2V0T25lVGtuVjJSRUFET05MWQICZk0CaGgEAmNBCQDYBAEJAQV2YWx1ZQEFAmJpBAJjQgkA2AQBCQEFdmFsdWUBBQJiagQCY3oJANgEAQkBBXZhbHVlAQUCYmgEAmRKCQDMCAIJALYCAQkBAmJKAQUCY0EJAMwIAgkAtgIBCQECYkoBBQJjQgUDbmlsBAJlSgkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY3oCEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmJYCQECZEkBBQJkSgQCYlcJALgCAgUCYlgJALwCAwkAtgIBBQJoaAUCYlgFAmVKBAJoaQMJAAACBQJmTQUCY0EAAAMJAAACBQJmTQUCY0IAAQkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJoagkBAmV3AwUCZEoFAmhpBQJiVwQCaGsJALgCAgkAkQMCBQJkSgUCaGkFAmhqBAJobAkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALgCAgUCaGsFAWYFA25pbAQCaG0JAQJjcgIFAmhsBQJhUAQCZlYIBQJobQJfMQQCY3QIBQJobQJfMgkAlAoCBQNuaWwJAJQKAgUCZlYFAmN0AmRaARxnZXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJmTQJoaAQCY0EJANgEAQkBBXZhbHVlAQUCYmkEAmNCCQDYBAEJAQV2YWx1ZQEFAmJqBAJjegkA2AQBCQEFdmFsdWUBBQJiaAQCY0cJAQJiSgEFAmNBBAJjSQkBAmJKAQUCY0IEAmhuCgACYU8JAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJmTQkAzAgCBQJoaAUDbmlsBQNuaWwDCQABAgUCYU8CCihJbnQsIEludCkFAmFPCQACAQkArAICCQADAQUCYU8CHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkEAmZWCAUCaG4CXzEEAmN0CAUCaG4CXzIEAmRvCQECY3UEAgAFAmN6BQJoaAUEdGhpcwQCY1EIBQJkbwJfMQQCY1IIBQJkbwJfMgQCaG8JAGQCBQJjUQUCY1IEAmZLAwkAAAIFAmhvAAADCQAAAgUCZlYAAAAACQACAQIXYm9udXMgY2FsY3VsYXRpb24gZXJyb3IJAGsDCQBlAgUCZlYFAmhvBQFhBQJobwkAlAoCBQNuaWwJAJUKAwUCZlYFAmN0BQJmSwJkWgEJZ2V0Tm9MZXNzAgJocAJocQQCZG8JAQJmagEFAmRaBAJjUQgFAmRvAl8xBAJjUggFAmRvAl8yBAJkYwgFAmRvAl8zBAJjdwgFAmRvAl80BAJjUwgFAmRvAl81AwkAZgIFAmhwBQJjUQkAAgEJAKwCAgkArAICCQCsAgICCUZhaWxlZDogIAkApAMBBQJjUQIDIDwgCQCkAwEFAmhwAwkAZgIFAmhxBQJjUgkAAgEJAKwCAgkArAICCQCsAgICCEZhaWxlZDogCQCkAwEFAmNSAgMgPCAJAKQDAQUCaHEEAmVTCQECZUwDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVTBQJlUwQCaHIJAPwHBAUCYU0CBGJ1cm4JAMwIAgUCZGMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3cFAmRjBQNuaWwDCQAAAgUCaHIFAmhyBAJocwkBAmVUAwkBAS0BBQJjUQkBAS0BBQJjUgAABAJnaggFAmhzAl8xBAJlSwgFAmhzAl8yBAJnawkBAmVYAgUCZVMFAmVLAwkAAAIFAmdrBQJnawkAzggCBQJjUwUCZ2oJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFoBDXVuc3Rha2VBbmRHZXQBAmNzBAJodAMJAQIhPQIJAJADAQgFAmRaCHBheW1lbnRzAAAJAAIBAg1ObyBwbW50cyBleHBkBgMJAAACBQJodAUCaHQEAmh1CQECYm8ABAJnRQUCYmgEAmh2CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJodQUBQwIKV3Igc3QgYWRkcgQCZVMJAQJlTAMJALYCAQAACQC2AgEAAAkAtgIBAAAEAmh3CQD8BwQFAmh2Agd1bnN0YWtlCQDMCAIJANgEAQUCZ0UJAMwIAgUCY3MFA25pbAUDbmlsAwkAAAIFAmh3BQJodwQCZG8JAQJjdQQJANgEAQgFAmRaDXRyYW5zYWN0aW9uSWQJANgEAQUCZ0UFAmNzCAUCZFoGY2FsbGVyBAJjUQgFAmRvAl8xBAJjUggFAmRvAl8yBAJjRQkBDXBhcnNlSW50VmFsdWUBCAUCZG8CXzkEAmNTCAUCZG8DXzEwBAJoeAMDCQECYVIABgkAAAIFAmNFBQFzCQACAQkArAICAglCbG9ja2VkOiAJAKQDAQUCY0UGAwkAAAIFAmh4BQJoeAQCaHkJAPwHBAUCYU0CBGJ1cm4JAMwIAgUCY3MFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ0UFAmNzBQNuaWwDCQAAAgUCaHkFAmh5BAJoegkBAmVUAwkBAS0BBQJjUQkBAS0BBQJjUgAABAJnaggFAmh6Al8xBAJlSwgFAmh6Al8yBAJnawkBAmVYAgUCZVMFAmVLAwkAAAIFAmdrBQJnawkAzggCBQJjUwUCZ2oJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFoBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmhBAmhCAmhxBAJoYgMJAQJhUgAGCQAAAgUCYmcFAXMEAmdRCQDMCAIDCQEBIQEFAmhiBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRaCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ1EFAmdRBAJlUwkBAmVMAwkAtgIBAAAJALYCAQAACQC2AgEAAAQCaHcJAPwHBAUCYnECB3Vuc3Rha2UJAMwIAgkA2AQBBQJiaAkAzAgCBQJoQQUDbmlsBQNuaWwDCQAAAgUCaHcFAmh3BAJoQwkBAmN1BAkA2AQBCAUCZFoNdHJhbnNhY3Rpb25JZAkA2AQBBQJiaAUCaEEIBQJkWgZjYWxsZXIEAmNRCAUCaEMCXzEEAmNSCAUCaEMCXzIEAmNTCAUCaEMDXzEwBAJoRAkAzAgCAwkAZwIFAmNRBQJoQgYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoQgUDbmlsAgAJAMwIAgMJAGcCBQJjUgUCaHEGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJocQUDbmlsAgAFA25pbAMJAAACBQJoRAUCaEQEAmhyCQD8BwQFAmFNAgRidXJuCQDMCAIFAmhBBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJoBQJoQQUDbmlsAwkAAAIFAmhyBQJocgQCaEUJAQJlVAMJAQEtAQUCY1EJAQEtAQUCY1IAAAQCZ2oIBQJoRQJfMQQCZUsIBQJoRQJfMgQCZ2sJAQJlWAIFAmVTBQJlSwMJAAACBQJnawUCZ2sJAM4IAgUCY1MFAmdqCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRaARV1bnN0YWtlQW5kR2V0T25lVGtuVjIDAmhBAmZNAmZOBAJnTwoAAmFPCQD8BwQFAmFNAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYU8CB0Jvb2xlYW4FAmFPCQACAQkArAICCQADAQUCYU8CHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmhiAwMJAQJhUgAGCQAAAgUCYmcFAXMGBQJnTwQCZ1EJAMwIAgMDCQEBIQEFAmhiBgkBAmdwAQUCZFoGCQECYUoBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkWghwYXltZW50cwAABgkBAmFKAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ1EFAmdRBAJodQkBAmJvAAQCZ0UFAmJoBAJodgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaHUFAUMCCldyIHN0IGFkZHIEAmh3CQD8BwQFAmh2Agd1bnN0YWtlCQDMCAIJANgEAQUCZ0UJAMwIAgUCaEEFA25pbAUDbmlsAwkAAAIFAmh3BQJodwQCaEYJAQJmTAYFAmZNBQJmTgkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ0UFAmhBBQNuaWwIBQJkWgZjYWxsZXIIBQJkWgxvcmlnaW5DYWxsZXIIBQJkWg10cmFuc2FjdGlvbklkBAJjUwgFAmhGAl8xBAJmVwgFAmhGAl8yCQCUCgIFAmNTBQJmVwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkWgEccHV0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICaEcCaEgEAmhJCQECZnAFBQJoRwUCaEgCAAIABgQCZkYIBQJoSQJfMQQCY1MIBQJoSQJfMgQCY3QIBQJoSQJfMwQCZksIBQJoSQJfNAkAlAoCBQNuaWwJAJUKAwUCZkYFAmN0BQJmSwJkWgEhcHV0T25lVGtuVjJXaXRob3V0VGFrZUZlZVJFQURPTkxZAgJoRwJoSAQCaEoJAQJmcAUFAmhHBQJoSAIAAgAHBAJmRggFAmhKAl8xBAJjUwgFAmhKAl8yBAJjdAgFAmhKAl8zBAJmSwgFAmhKAl80CQCUCgIFA25pbAkAlQoDBQJmRgUCY3QFAmZLAmRaAQhhY3RpdmF0ZQICaEsCaEwDCQECIT0CCQClCAEIBQJkWgZjYWxsZXIJAKUIAQUCYU0JAAIBAgZkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWcABQJoSwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWgABQJoTAUDbmlsAgdzdWNjZXNzAmRaAQRzZXRTAgJoTQJoeAMJAQIhPQIJAKUIAQgFAmRaBmNhbGxlcgkBAmFGAgUEdGhpcwkBAmFqAAUCZ28JAMwIAgkBC1N0cmluZ0VudHJ5AgUCaE0FAmh4BQNuaWwCZFoBBHNldEkCAmhNAmh4AwkBAiE9AgkApQgBCAUCZFoGY2FsbGVyCQECYUYCBQR0aGlzCQECYWoABQJnbwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCaE0FAmh4BQNuaWwCZFoBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmFVAAJkWgEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYksJAJQKAgUDbmlsCQECYkoBBQJiSwJkWgEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCY2QCY2UCY2kEAmhOCQECY2gDBQJjZAUCY2UFAmNpCQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCaE4AAAkAzAgCCQCmAwEJAJEDAgUCaE4AAQkAzAgCCQCmAwEJAJEDAgUCaE4AAgUDbmlsAmRaARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFMAmhPCQCUCgIFA25pbAkBAUsCCQCnAwEFAUwFAmhPAmRaARR0b1gxOFdyYXBwZXJSRUFET05MWQIBSQFKCQCUCgIFA25pbAkApgMBCQEBSAIFAUkFAUoCZFoBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYk0CYk4JAJQKAgUDbmlsCQCmAwEJAQJiTAIJAKcDAQUCYk0JAKcDAQUCYk4CZFoBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJjdgJiUwJjVQJjVgJjVwJjWAJoUAJjWQJjWgkAlAoCBQNuaWwJAQJjVA0FAmN2BQJiUwUCY1UFAmNWBQJjVwUCY1gFAmhQBQJjWQUCY1oGBwAAAgACZFoBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJjdgJoUQJjeAJoUAQCZG8JAQJjdQQFAmN2BQJoUQUCY3gJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmhQCQCUCgIFA25pbAkAnAoKCAUCZG8CXzEIBQJkbwJfMggFAmRvAl8zCAUCZG8CXzQIBQJkbwJfNQgFAmRvAl82CAUCZG8CXzcJAKYDAQgFAmRvAl84CAUCZG8CXzkIBQJkbwNfMTABAmhSAQJoUwAEAmhUBAJnbQkBAmdsAAMJAAECBQJnbQIKQnl0ZVZlY3RvcgQCZ3EFAmdtBQJncQMJAAECBQJnbQIEVW5pdAgFAmhSD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJnbQUCaFIDCQABAgUCZ20CBU9yZGVyBAJmYQUCZ20EAmhVCQECYVMABAJoVgkBAmVaAQUCZmEEAmhXCQD0AwMIBQJmYQlib2R5Qnl0ZXMJAJEDAggFAmZhBnByb29mcwAACAUCZmEPc2VuZGVyUHVibGljS2V5BAJoWAkA9AMDCAUCZmEJYm9keUJ5dGVzCQCRAwIIBQJmYQZwcm9vZnMAAQUCaFUDAwMFAmhWBQJoVwcFAmhYBwYJAQJhQgMFAmhWBQJoVwUCaFgDCQABAgUCZ20CFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJkTQUCZ20EAmhZCQD2AwEJAQV2YWx1ZQEIBQJkTQZzY3JpcHQEAmhaCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYU0JAQJhegAEAmlhCQDxBwEFBHRoaXMDAwkAAAIFAmhaBQJoWQkBAiE9AgUCaWEFAmhZBwYJAPQDAwgFAmhSCWJvZHlCeXRlcwkAkQMCCAUCaFIGcHJvb2ZzAAAFAmhUCQD0AwMIBQJoUglib2R5Qnl0ZXMJAJEDAggFAmhSBnByb29mcwAABQJoVLF0X1g=", "chainId": 84, "height": 2397542, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FM6Xy64oUtu2HMfXWSve5kC36ZarRBXnB2NmgNf7XDvq Next: DSfJeiJ4cezn81aJx53XvgGosMnFZ3EStgZ8phM97dEN Diff:
OldNewDifferences
1515
1616 let g = toBigInt(2)
1717
18-let h = toBigInt((a - ((a * 1) / a)))
18+let h = toBigInt(3)
1919
20-let i = "WAVES"
20+let i = toBigInt(4)
2121
22-let j = "100"
22+let j = toBigInt((a - ((a * 1) / a)))
2323
24-let k = "1"
24+let k = "WAVES"
2525
26-let l = "__"
26+let l = "100"
2727
28-let m = ""
28+let m = "1"
2929
30-let n = 1
30+let n = "__"
3131
32-let o = 2
32+let o = ""
3333
34-let p = 3
34+let p = 1
3535
36-let q = 4
36+let q = 2
3737
38-let r = 1
38+let r = 3
3939
40-let s = 2
40+let s = 4
4141
42-let t = 3
42+let t = 1
4343
44-let u = 4
44+let u = 2
4545
46-let v = 5
46+let v = 3
4747
48-let w = 6
48+let w = 4
4949
50-let x = 7
50+let x = 5
5151
52-let y = 8
52+let y = 6
5353
54-let z = 9
54+let z = 7
5555
56-let A = 1
56+let A = 8
5757
58-let B = 6
58+let B = 9
5959
60-let C = 7
60+let C = 1
6161
62-let D = 10
62+let D = 6
6363
64-let E = fraction(10, a, 10000)
64+let E = 7
6565
66-func F (G,H) = fraction(toBigInt(G), c, toBigInt(H))
66+let F = 10
67+
68+let G = fraction(10, a, 10000)
69+
70+func H (I,J) = fraction(toBigInt(I), c, toBigInt(J))
6771
6872
69-func I (J,K) = toInt(fraction(J, toBigInt(K), c))
73+func K (L,M) = toInt(fraction(L, toBigInt(M), c))
7074
7175
72-func L (M,N,O) = fraction(M, N, O)
76+func N (L,M,O) = toInt(fraction(L, toBigInt(M), c, O))
7377
7478
75-func P (J) = if ((d > J))
76- then -(J)
77- else J
79+func P (Q,R,S) = fraction(Q, R, S)
7880
7981
80-func Q (J) = if ((d > J))
81- then -(J)
82- else J
82+func T (L) = if ((d > L))
83+ then -(L)
84+ else L
8385
8486
85-func R () = "%s__factoryContract"
87+func U (L) = if ((d > L))
88+ then -(L)
89+ else L
8690
8791
88-func S () = "%s__managerPublicKey"
92+func V () = "%s__factoryContract"
8993
9094
91-func T () = "%s__pendingManagerPublicKey"
95+func W () = "%s__managerPublicKey"
9296
9397
94-func U () = "%s%s__price__last"
98+func X () = "%s__pendingManagerPublicKey"
9599
96100
97-func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], l)
101+func Y () = "%s%s__price__last"
98102
99103
100-func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
104+func Z (aa,ab) = makeString(["%s%s%d%d__price__history", toString(aa), toString(ab)], n)
101105
102106
103-func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
107+func ac (ad,ae) = ((("%s%s%s__P__" + ad) + "__") + ae)
104108
105109
106-func ac () = "%s__amountAsset"
110+func af (ad,ae) = ((("%s%s%s__G__" + ad) + "__") + ae)
107111
108112
109-func ad () = "%s__priceAsset"
113+func ag () = "%s__amountAsset"
110114
111115
112-func ae () = "%s__amp"
116+func ah () = "%s__priceAsset"
113117
114118
115-func af () = "%s__addonAddr"
119+func ai () = "%s__amp"
116120
117121
118-func ag () = "%s__factoryConfig"
122+func aj () = "%s__addonAddr"
119123
120124
121-func ah () = "%s%s__matcher__publicKey"
125+let ak = "%s__fee"
126+
127+let al = valueOrElse(getInteger(this, ak), G)
128+
129+let am = makeString(["%s", "dLp"], n)
130+
131+let an = makeString(["%s", "dLpRefreshedHeight"], n)
132+
133+let ao = makeString(["%s", "refreshDLpDelay"], n)
134+
135+let ap = 1
136+
137+let aq = valueOrElse(getInteger(this, ao), ap)
138+
139+func ar () = "%s__factoryConfig"
122140
123141
124-func ai (aj,ak) = (((("%d%d%s__" + aj) + "__") + ak) + "__config")
142+func as () = "%s%s__matcher__publicKey"
125143
126144
127-func al (am) = ("%s%s%s__mappings__baseAsset2internalId__" + am)
145+func at (au,av) = (((("%d%d%s__" + au) + "__") + av) + "__config")
128146
129147
130-func an () = "%s__shutdown"
148+func aw (ax) = ("%s%s%s__mappings__baseAsset2internalId__" + ax)
131149
132150
133-func ao () = "%s__allowedLpStableScriptHash"
151+func ay () = "%s__shutdown"
134152
135153
136-func ap () = "%s__feeCollectorAddress"
154+func az () = "%s__allowedLpStableScriptHash"
137155
138156
139-func aq (ar,as,at) = throw(((((("Failed: ordValid=" + toString(ar)) + " sndrValid=") + toString(as)) + " mtchrValid=") + toString(at)))
157+func aA () = "%s__feeCollectorAddress"
140158
141159
142-func au (J) = {
143- let av = J
144- if ($isInstanceOf(av, "String"))
145- then {
146- let aw = av
147- aw
148- }
149- else throw("fail cast to String")
160+func aB (aC,aD,aE) = throw(((((("Failed: ordValid=" + toString(aC)) + " sndrValid=") + toString(aD)) + " mtchrValid=") + toString(aE)))
161+
162+
163+func aF (aG,aH) = valueOrErrorMessage(getString(aG, aH), makeString(["mandatory ", toString(aG), ".", aH, " not defined"], ""))
164+
165+
166+func aI (aG,aH) = valueOrErrorMessage(getInteger(aG, aH), makeString(["mandatory ", toString(aG), ".", aH, " not defined"], ""))
167+
168+
169+func aJ (aK) = throw(makeString(["lp_stable.ride:", aK], " "))
170+
171+
172+func aL (aK) = makeString(["lp_stable.ride:", aK], " ")
173+
174+
175+let aM = addressFromStringValue(aF(this, V()))
176+
177+let aN = {
178+ let aO = invoke(aM, "getInFeeREADONLY", [toString(this)], nil)
179+ if ($isInstanceOf(aO, "Int"))
180+ then aO
181+ else throw(($getType(aO) + " couldn't be cast to Int"))
182+ }
183+
184+let aP = {
185+ let aO = invoke(aM, "getOutFeeREADONLY", [toString(this)], nil)
186+ if ($isInstanceOf(aO, "Int"))
187+ then aO
188+ else throw(($getType(aO) + " couldn't be cast to Int"))
189+ }
190+
191+let aQ = aF(this, ai())
192+
193+func aR () = valueOrElse(getBoolean(aM, ay()), false)
194+
195+
196+func aS () = fromBase58String(aF(aM, as()))
197+
198+
199+let aT = addressFromStringValue(aF(aM, aA()))
200+
201+func aU () = {
202+ let aV = aF(this, ag())
203+ let aW = aF(this, ah())
204+ let aX = aI(aM, aw(aW))
205+ let au = aI(aM, aw(aV))
206+ split(aF(aM, at(toString(au), toString(aX))), n)
150207 }
151208
152209
153-func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
210+func aY (aZ) = if ((aZ == k))
211+ then unit
212+ else fromBase58String(aZ)
154213
155214
156-func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
215+func ba (aZ) = if ((aZ == unit))
216+ then k
217+ else toBase58String(value(aZ))
157218
158219
159-func aB (aC) = throw(makeString(["lp_stable.ride:", aC], " "))
220+func bb (bc) = $Tuple9(addressFromStringValue(bc[t]), parseIntValue(bc[u]), fromBase58String(bc[v]), aY(bc[w]), aY(bc[x]), parseIntValue(bc[y]), parseIntValue(bc[z]), fromBase58String(bc[A]), fromBase58String(bc[B]))
160221
161222
162-let aD = addressFromStringValue(ax(this, R()))
223+let bd = bb(aU())
163224
164-let aE = {
165- let aF = invoke(aD, "getInFeeREADONLY", [toString(this)], nil)
166- if ($isInstanceOf(aF, "Int"))
167- then aF
168- else throw(($getType(aF) + " couldn't be cast to Int"))
169- }
225+let be = bd
170226
171-let aG = {
172- let aF = invoke(aD, "getOutFeeREADONLY", [toString(this)], nil)
173- if ($isInstanceOf(aF, "Int"))
174- then aF
175- else throw(($getType(aF) + " couldn't be cast to Int"))
176- }
227+let bf = be._1
177228
178-let aH = ax(this, ae())
229+let bg = be._2
179230
180-func aI () = valueOrElse(getBoolean(aD, an()), false)
231+let bh = be._3
232+
233+let bi = be._4
234+
235+let bj = be._5
236+
237+let bk = be._6
238+
239+let bl = be._7
240+
241+let bm = be._8
242+
243+let bn = be._9
244+
245+func bo () = split(aF(aM, ar()), n)
181246
182247
183-func aJ () = fromBase58String(ax(aD, ah()))
248+let bp = bo()
249+
250+let bq = valueOrErrorMessage(addressFromString(bp[C]), "Invalid staking contract address")
251+
252+let br = valueOrErrorMessage(addressFromString(bp[E]), "Invalid slipage contract address")
253+
254+let bs = valueOrErrorMessage(addressFromString(bp[F]), "Invalid gwx contract address")
255+
256+let bt = valueOrErrorMessage(addressFromString(bp[D]), "Invalid gwx contract address")
257+
258+func bu (bv,bw,bx,by,bz,bA,bB,bC,bD,bE) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA), toString(bB), toString(bC), toString(bD), toString(bE)], n)
184259
185260
186-let aK = addressFromStringValue(ax(aD, ap()))
261+func bF (bG,bH,bI,by,bB,bC) = makeString(["%d%d%d%d%d%d", toString(bG), toString(bH), toString(bI), toString(by), toString(bB), toString(bC)], n)
187262
188-func aL () = {
189- let aM = ax(this, ac())
190- let aN = ax(this, ad())
191- let aO = aA(aD, al(aN))
192- let aj = aA(aD, al(aM))
193- split(ax(aD, ai(toString(aj), toString(aO))), l)
263+
264+func bJ (bK) = if ((bK == "WAVES"))
265+ then wavesBalance(this).available
266+ else assetBalance(this, fromBase58String(bK))
267+
268+
269+func bL (bM,bN) = fraction(bM, c, bN)
270+
271+
272+func bO (bM,bN,O) = fraction(bM, c, bN, O)
273+
274+
275+func bP (bQ,bR,bS) = {
276+ let bT = fraction((bQ - bR), b, bR)
277+ let bU = ((bS - T(bT)) > d)
278+ if (!(bU))
279+ then throw(("Big slpg: " + toString(bT)))
280+ else $Tuple2(bU, min([bQ, bR]))
194281 }
195282
196283
197-func aP (aQ) = if ((aQ == i))
198- then unit
199- else fromBase58String(aQ)
200-
201-
202-func aR (aQ) = if ((aQ == unit))
203- then i
204- else toBase58String(value(aQ))
205-
206-
207-func aS (aT) = $Tuple7(addressFromStringValue(aT[r]), parseIntValue(aT[s]), fromBase58String(aT[t]), aP(aT[u]), aP(aT[v]), parseIntValue(aT[w]), parseIntValue(aT[x]))
208-
209-
210-let aU = aS(aL())
211-
212-let aV = aU
213-
214-let aW = aV._1
215-
216-let aX = aV._2
217-
218-let aY = aV._3
219-
220-let aZ = aV._4
221-
222-let ba = aV._5
223-
224-let bb = aV._6
225-
226-let bc = aV._7
227-
228-func bd () = split(ax(aD, ag()), l)
229-
230-
231-let be = bd()
232-
233-let bf = valueOrErrorMessage(addressFromString(be[A]), "Invalid staking contract address")
234-
235-let bg = valueOrErrorMessage(addressFromString(be[C]), "Invalid slipage contract address")
236-
237-let bh = valueOrErrorMessage(addressFromString(be[D]), "Invalid gwx contract address")
238-
239-let bi = valueOrErrorMessage(addressFromString(be[B]), "Invalid gwx contract address")
240-
241-func bj (bk,bl,bm,bn,bo,bp,bq,br,bs,bt) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt)], l)
242-
243-
244-func bu (bv,bw,bx,bn,bq,br) = makeString(["%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(bn), toString(bq), toString(br)], l)
245-
246-
247-func by (bz) = if ((bz == "WAVES"))
248- then wavesBalance(this).available
249- else assetBalance(this, fromBase58String(bz))
250-
251-
252-func bA (bB,bC) = fraction(bB, c, bC)
253-
254-
255-func bD (bE,bF,bG) = {
256- let bH = fraction((bE - bF), b, bF)
257- let bI = ((bG - P(bH)) > d)
258- if (!(bI))
259- then throw(("Big slpg: " + toString(bH)))
260- else $Tuple2(bI, min([bE, bF]))
284+func bV (bW,bX,bY) = {
285+ let bT = fraction(bX, b, bW)
286+ let bZ = (bY > bT)
287+ if (if (bZ)
288+ then true
289+ else (bX > bW))
290+ then throw(((((((toString(bX) + " ") + toString(bW)) + " ") + toString(bT)) + " ") + toString(bY)))
291+ else bZ
261292 }
262293
263294
264-func bJ (bK,bL,bM) = {
265- let bH = fraction(bL, b, bK)
266- let bN = (bM > bH)
267- if (if (bN)
268- then true
269- else (bL > bK))
270- then throw(((((((toString(bL) + " ") + toString(bK)) + " ") + toString(bH)) + " ") + toString(bM)))
271- else bN
295+func ca (cb,cc,cd,ce) = {
296+ let cf = H(cd, cb)
297+ let cg = H(ce, cc)
298+ bL(cg, cf)
272299 }
273300
274301
275-func bO (bP,bQ,bR,bS) = {
276- let bT = F(bR, bP)
277- let bU = F(bS, bQ)
278- bA(bU, bT)
302+func ch (cd,ce,ci) = {
303+ let cj = bk
304+ let ck = bl
305+ let cl = ca(cj, ck, cd, ce)
306+ let bN = H(cd, cj)
307+ let bM = H(ce, ck)
308+ let cm = H(ci, a)
309+ let cn = bL(bN, cm)
310+ let co = bL(bM, cm)
311+[cl, cn, co]
279312 }
280313
281314
282-func bV (bR,bS,bW) = {
283- let bX = aL()
284- let bY = parseIntValue(bX[w])
285- let bZ = parseIntValue(bX[x])
286- let ca = bO(bY, bZ, bR, bS)
287- let bC = F(bR, bY)
288- let bB = F(bS, bZ)
289- let cb = F(bW, a)
290- let cc = bA(bC, cb)
291- let cd = bA(bB, cb)
292-[ca, cc, cd]
315+func cp (cd,ce,ci) = {
316+ let cq = ch(cd, ce, ci)
317+[K(cq[0], a), K(cq[1], a), K(cq[2], a)]
293318 }
294319
295320
296-func ce (bR,bS,bW) = {
297- let cf = bV(bR, bS, bW)
298-[I(cf[0], a), I(cf[1], a), I(cf[2], a)]
321+func cr (cs,al) = {
322+ let ct = if ((al == 0))
323+ then 0
324+ else fraction(cs, al, a)
325+ $Tuple2((cs - ct), ct)
299326 }
300327
301328
302-func cg (ch,ci) = {
303- let cj = if ((ci == 0))
304- then 0
305- else fraction(ch, ci, a)
306- $Tuple2((ch - cj), cj)
307- }
308-
309-
310-func ck (cl,cm,cn,co) = {
311- let bX = aL()
312- let cp = bX[t]
313- let cq = bX[u]
314- let cr = bX[v]
315- let cs = parseIntValue(bX[w])
316- let ct = parseIntValue(bX[x])
317- let cu = bX[s]
318- let cv = valueOrErrorMessage(assetInfo(fromBase58String(cp)), "Wrong LP id").quantity
319- if ((cp != cm))
329+func cu (cv,cw,cx,cy) = {
330+ let cz = bh
331+ let cA = toBase58String(value(bi))
332+ let cB = toBase58String(value(bj))
333+ let cC = bk
334+ let cD = bl
335+ let cE = toString(bg)
336+ let cF = valueOrErrorMessage(assetInfo(cz), "Wrong LP id").quantity
337+ if ((toBase58String(cz) != cw))
320338 then throw("Wrong pmt asset")
321339 else {
322- let cw = by(cq)
323- let cx = F(cw, cs)
324- let cy = by(cr)
325- let cz = F(cy, ct)
326- let cA = bA(cz, cx)
327- let cB = I(cA, a)
328- let cC = F(cn, a)
329- let cD = F(cv, a)
330- let cE = fraction(cx, cC, cD)
331- let cF = fraction(cz, cC, cD)
332- let cG = I(cE, cs)
333- let cH = I(cF, ct)
334- let cI = if ((cl == ""))
340+ let cG = bJ(cA)
341+ let cH = H(cG, cC)
342+ let cI = bJ(cB)
343+ let cJ = H(cI, cD)
344+ let cK = bL(cJ, cH)
345+ let cL = K(cK, a)
346+ let cM = H(cx, a)
347+ let cN = H(cF, a)
348+ let cO = fraction(cH, cM, cN)
349+ let cP = fraction(cJ, cM, cN)
350+ let cQ = N(cO, cC, FLOOR)
351+ let cR = N(cP, cD, FLOOR)
352+ let cS = if ((cv == ""))
335353 then nil
336- else [ScriptTransfer(co, cG, if ((cq == "WAVES"))
354+ else [ScriptTransfer(cy, cQ, if ((cA == "WAVES"))
337355 then unit
338- else fromBase58String(cq)), ScriptTransfer(co, cH, if ((cr == "WAVES"))
356+ else fromBase58String(cA)), ScriptTransfer(cy, cR, if ((cB == "WAVES"))
339357 then unit
340- else fromBase58String(cr)), StringEntry(ab(toString(co), cl), bu(cG, cH, cn, cB, height, lastBlock.timestamp)), IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB)]
341- $Tuple10(cG, cH, cq, cr, cw, cy, cv, cA, cu, cI)
358+ else fromBase58String(cB)), StringEntry(af(toString(cy), cv), bF(cQ, cR, cx, cL, height, lastBlock.timestamp)), IntegerEntry(Y(), cL), IntegerEntry(Z(height, lastBlock.timestamp), cL)]
359+ $Tuple10(cQ, cR, cA, cB, cG, cI, cF, cK, cE, cS)
342360 }
343361 }
344362
345363
346-func cJ (cl,bG,cK,cL,cM,cN,co,cO,cP,cQ,cR,cS,cT) = {
347- let bX = aL()
348- let cp = fromBase58String(bX[t])
349- let cU = bX[u]
350- let cV = bX[v]
351- let cW = bX[y]
352- let cX = bX[z]
353- let cY = parseIntValue(bX[w])
354- let cZ = parseIntValue(bX[x])
355- let cu = bX[s]
356- let da = valueOrErrorMessage(assetInfo(cp), "Wr lp as").quantity
357- let cw = if (cO)
358- then by(cU)
359- else if (if (cQ)
360- then (cT == cU)
364+func cT (cv,bS,cU,cV,cW,cX,cy,cY,cZ,da,db,dc,dd) = {
365+ let cz = bh
366+ let de = toBase58String(value(bi))
367+ let df = toBase58String(value(bj))
368+ let dg = bm
369+ let dh = bn
370+ let di = bk
371+ let dj = bl
372+ let cE = toString(bg)
373+ let dk = valueOrErrorMessage(assetInfo(cz), "Wr lp as").quantity
374+ let cG = if (cY)
375+ then bJ(de)
376+ else if (if (da)
377+ then (dd == de)
361378 else false)
362- then (by(cU) - cS)
363- else if (cQ)
364- then by(cU)
365- else (by(cU) - cK)
366- let cy = if (cO)
367- then by(cV)
368- else if (if (cQ)
369- then (cT == cV)
379+ then (bJ(de) - dc)
380+ else if (da)
381+ then bJ(de)
382+ else (bJ(de) - cU)
383+ let cI = if (cY)
384+ then bJ(df)
385+ else if (if (da)
386+ then (dd == df)
370387 else false)
371- then (by(cV) - cS)
372- else if (cQ)
373- then by(cV)
374- else (by(cV) - cM)
375- let db = F(cK, cY)
376- let dc = F(cM, cZ)
377- let dd = bA(dc, db)
378- let cx = F(cw, cY)
379- let cz = F(cy, cZ)
380- let de = if ((da == 0))
388+ then (bJ(df) - dc)
389+ else if (da)
390+ then bJ(df)
391+ else (bJ(df) - cW)
392+ let dl = H(cU, di)
393+ let dm = H(cW, dj)
394+ let dn = bL(dm, dl)
395+ let cH = H(cG, di)
396+ let cJ = H(cI, dj)
397+ let do = if ((dk == 0))
381398 then {
382- let cA = d
383- let df = d
384- let cb = pow((db * dc), 0, toBigInt(5), 1, 0, DOWN)
385- $Tuple5(I(cb, a), I(db, cY), I(dc, cZ), bA((cz + dc), (cx + db)), df)
399+ let cK = d
400+ let dp = d
401+ let cm = pow((dl * dm), 0, toBigInt(5), 1, 0, DOWN)
402+ $Tuple5(K(cm, a), K(dl, di), K(dm, dj), bL((cJ + dm), (cH + dl)), dp)
386403 }
387404 else {
388- let cA = bA(cz, cx)
389- let dg = fraction(P((cA - dd)), c, cA)
390- let df = F(bG, a)
391- if (if (if (cR)
392- then (cA != d)
405+ let cK = bL(cJ, cH)
406+ let dq = fraction(T((cK - dn)), c, cK)
407+ let dp = H(bS, a)
408+ if (if (if (db)
409+ then (cK != d)
393410 else false)
394- then (dg > df)
411+ then (dq > dp)
395412 else false)
396- then throw(((("Price slippage " + toString(dg)) + " > ") + toString(df)))
413+ then throw(((("Price slippage " + toString(dq)) + " > ") + toString(dp)))
397414 else {
398- let dh = F(da, a)
399- let di = fraction(db, cA, c)
400- let dj = fraction(dc, c, cA)
401- let dk = if ((di > dc))
402- then $Tuple2(dj, dc)
403- else $Tuple2(db, di)
404- let dl = dk._1
405- let dm = dk._2
406- let cb = fraction(dh, dm, cz)
407- $Tuple5(I(cb, a), I(dl, cY), I(dm, cZ), cA, df)
415+ let dr = H(dk, a)
416+ let ds = fraction(dl, bO(cJ, cH, FLOOR), c, FLOOR)
417+ let dt = fraction(dm, c, bO(cJ, cH, FLOOR), FLOOR)
418+ let du = if ((ds > dm))
419+ then $Tuple2(dt, dm)
420+ else $Tuple2(dl, ds)
421+ let dv = du._1
422+ let dw = du._2
423+ let cm = fraction(dr, dw, cJ, FLOOR)
424+ $Tuple5(N(cm, a, FLOOR), N(dv, di, CEILING), N(dw, dj, CEILING), cK, dp)
408425 }
409426 }
410- let dn = de._1
411- let do = de._2
412- let dp = de._3
413- let cB = I(de._4, a)
414- let dq = I(de._5, a)
415- if ((0 >= dn))
427+ let dx = do._1
428+ let dy = do._2
429+ let dz = do._3
430+ let cL = K(do._4, a)
431+ let dA = K(do._5, a)
432+ if ((0 >= dx))
416433 then throw("LP <= 0")
417434 else {
418- let dr = if (!(cP))
435+ let dB = if (!(cZ))
419436 then 0
420- else dn
421- let ds = (cK - do)
422- let dt = (cM - dp)
423- let du = if (if (cQ)
424- then (cT == cU)
437+ else dx
438+ let dC = (cU - dy)
439+ let dD = (cW - dz)
440+ let dE = if (if (da)
441+ then (dd == de)
425442 else false)
426- then $Tuple2(cS, 0)
427- else if (if (cQ)
428- then (cT == cV)
443+ then $Tuple2(dc, 0)
444+ else if (if (da)
445+ then (dd == df)
429446 else false)
430- then $Tuple2(0, cS)
431- else $Tuple2(do, dp)
432- let dv = du._1
433- let dw = du._2
434- let dx = [IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB), StringEntry(Y(co, cl), bj(dv, dw, dr, cB, bG, dq, height, lastBlock.timestamp, ds, dt))]
435- $Tuple13(dn, dr, cB, cw, cy, da, cp, cu, dx, ds, dt, cL, cN)
447+ then $Tuple2(0, dc)
448+ else $Tuple2(dy, dz)
449+ let dF = dE._1
450+ let dG = dE._2
451+ let dH = [IntegerEntry(Y(), cL), IntegerEntry(Z(height, lastBlock.timestamp), cL), StringEntry(ac(cy, cv), bu(dF, dG, dB, cL, bS, dA, height, lastBlock.timestamp, dC, dD))]
452+ $Tuple13(dx, dB, cL, cG, cI, dk, cz, cE, dH, dC, dD, cV, cX)
436453 }
437454 }
438455
439456
440-func dy (dz) = {
441- let bX = aL()
442- let dA = bX[u]
443- let dB = bX[v]
444- let cu = parseIntValue(bX[s])
445- let bY = parseIntValue(bX[w])
446- let bZ = parseIntValue(bX[x])
447- let dC = by(dA)
448- let dD = by(dB)
449- let cA = if ((dz.orderType == Buy))
450- then bO(bY, bZ, (dC + dz.amount), dD)
451- else bO(bY, bZ, (dC - dz.amount), dD)
452- let cB = I(cA, a)
453- if (if (if (aI())
454- then true
455- else (cu == p))
456- then true
457- else (cu == q))
458- then throw("Admin blocked")
457+func dI (dJ) = {
458+ let dK = dJ[0]
459+ let dL = dJ[1]
460+ let dM = (dK + dL)
461+ if ((dM == e))
462+ then e
459463 else {
460- let dE = dz.assetPair.amountAsset
461- let dF = if ((dE == unit))
462- then "WAVES"
463- else toBase58String(value(dE))
464- let dG = dz.assetPair.priceAsset
465- let dH = if ((dG == unit))
466- then "WAVES"
467- else toBase58String(value(dG))
468- if (if ((dF != dA))
469- then true
470- else (dH != dB))
471- then throw("Wr assets")
464+ let dN = parseIntValue(aQ)
465+ let dO = (dN * 2)
466+ let cq = fraction(dK, dL, f)
467+ let dP = fraction(cq, i, f)
468+ let dQ = fraction(toBigInt(dO), dM, f)
469+ let dR = toBigInt((dO - 1))
470+ func dS (dT) = {
471+ let dU = fraction(dT, dT, f)
472+ let dV = fraction(dU, dT, f)
473+ let dW = fraction(dV, f, dP)
474+ fraction((dQ + fraction(dW, g, f)), dT, (fraction(dR, dT, f) + fraction(h, dW, f)), CEILING)
475+ }
476+
477+ func dX (dY,dZ) = if (dY._2)
478+ then dY
472479 else {
473- let dI = dz.price
474- let cZ = fraction(a, bZ, bY)
475- let dJ = L(dI, a, cZ)
476- let dK = if ((dz.orderType == Buy))
477- then (cB >= dJ)
478- else (dJ >= cB)
479- true
480+ let dT = dY._1
481+ let ea = dS(dT)
482+ let eb = toInt((ea - value(dT)))
483+ let ec = if ((0 > eb))
484+ then -(eb)
485+ else eb
486+ if ((1 >= ec))
487+ then $Tuple2(ea, true)
488+ else $Tuple2(ea, false)
480489 }
490+
491+ let ed = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
492+ let ee = {
493+ let ef = ed
494+ let eg = size(ef)
495+ let eh = $Tuple2(dM, false)
496+ func ei (ej,ek) = if ((ek >= eg))
497+ then ej
498+ else dX(ej, ef[ek])
499+
500+ func el (ej,ek) = if ((ek >= eg))
501+ then ej
502+ else throw("List size exceeds 15")
503+
504+ el(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(eh, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
505+ }
506+ let dT = ee._1
507+ let em = ee._2
508+ if (em)
509+ then dT
510+ else throw(("D calculation error, D = " + toString(dT)))
481511 }
482512 }
483513
484514
485-func dL (dM) = if ((size(dM.payments) != 1))
486- then throw("1 pmnt exp")
487- else {
488- let dN = value(dM.payments[0])
489- let cm = value(dN.assetId)
490- let cS = dN.amount
491- let de = ck(toBase58String(dM.transactionId), toBase58String(cm), cS, dM.caller)
492- let cG = de._1
493- let cH = de._2
494- let cu = parseIntValue(de._9)
495- let cI = de._10
496- if (if (aI())
497- then true
498- else (cu == q))
499- then throw(("Admin blocked: " + toString(cu)))
500- else $Tuple5(cG, cH, cS, cm, cI)
501- }
502-
503-
504-func dO (dP,aa,dQ,dR,bG,cP,cQ,cR,cS,cT) = {
505- let de = cJ(aa, bG, value(dQ).amount, value(dQ).assetId, value(dR).amount, value(dR).assetId, dP, (aa == ""), cP, cQ, cR, cS, cT)
506- let cu = parseIntValue(de._8)
507- if (if (if (aI())
508- then true
509- else (cu == o))
510- then true
511- else (cu == q))
512- then throw(("Blocked:" + toString(cu)))
513- else de
514- }
515-
516-
517-func dS (dT) = {
518- let dU = g
519- let dV = dT[0]
520- let dW = dT[1]
521- let dX = parseBigIntValue(j)
522- let dY = (parseBigIntValue(aH) * dX)
523- let dZ = (dV + dW)
524- if ((dZ == e))
515+func en (dJ) = {
516+ let eo = g
517+ let dK = dJ[0]
518+ let dL = dJ[1]
519+ let ep = parseBigIntValue(l)
520+ let dN = (parseBigIntValue(aQ) * ep)
521+ let dM = (dK + dL)
522+ if ((dM == e))
525523 then e
526524 else {
527- let ea = (dY * dU)
528- let eb = (((dV * dW) * dU) * dU)
529- let ec = ((ea * dZ) / dX)
530- let ed = (ea - dX)
531- let ee = (dU + f)
532- func ef (eg,eh) = {
533- let ei = eg
534- let ej = ei._1
535- let ek = ei._2
536- if ((ek != unit))
537- then eg
525+ let dO = (dN * eo)
526+ let dP = (((dK * dL) * eo) * eo)
527+ let eq = ((dO * dM) / ep)
528+ let er = (dO - ep)
529+ let es = (eo + f)
530+ func dX (dY,et) = {
531+ let eu = dY
532+ let dT = eu._1
533+ let em = eu._2
534+ if ((em != unit))
535+ then dY
538536 else {
539- let el = (((ej * ej) * ej) / eb)
540- let em = (((ec + (el * dU)) * ej) / (((ed * ej) / dX) + (ee * el)))
541- let en = Q((em - value(ej)))
542- if ((f >= en))
543- then $Tuple2(em, eh)
544- else $Tuple2(em, unit)
537+ let dW = (((dT * dT) * dT) / dP)
538+ let ea = (((eq + (dW * eo)) * dT) / (((er * dT) / ep) + (es * dW)))
539+ let ec = U((ea - value(dT)))
540+ if ((f >= ec))
541+ then $Tuple2(ea, et)
542+ else $Tuple2(ea, unit)
545543 }
546544 }
547545
548- let eo = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
549- let ep = {
550- let eq = eo
551- let er = size(eq)
552- let es = $Tuple2(dZ, unit)
553- func et (eu,ev) = if ((ev >= er))
554- then eu
555- else ef(eu, eq[ev])
546+ let ed = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
547+ let ev = {
548+ let ef = ed
549+ let eg = size(ef)
550+ let eh = $Tuple2(dM, unit)
551+ func ei (ej,ek) = if ((ek >= eg))
552+ then ej
553+ else dX(ej, ef[ek])
556554
557- func ew (eu,ev) = if ((ev >= er))
558- then eu
555+ func el (ej,ek) = if ((ek >= eg))
556+ then ej
559557 else throw("List size exceeds 15")
560558
561- ew(et(et(et(et(et(et(et(et(et(et(et(et(et(et(et(es, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
559+ el(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(eh, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
562560 }
563- let ej = ep._1
564- let ek = ep._2
565- if ((ek != unit))
566- then ej
567- else throw(("D calculation error, D = " + toString(ej)))
561+ let dT = ev._1
562+ let em = ev._2
563+ if ((em != unit))
564+ then dT
565+ else throw(("D calculation error, D = " + toString(dT)))
568566 }
569567 }
570568
571569
572-func ex (dT,dM,ey) = {
573- let dU = g
574- let ez = dT[if ((dM == 0))
570+func ew (dJ,dZ,ex) = {
571+ let eo = g
572+ let ey = dJ[if ((dZ == 0))
575573 then 1
576574 else 0]
577- let dX = parseBigIntValue(j)
578- let dY = (parseBigIntValue(aH) * dX)
579- let dZ = ez
580- let ea = (dY * dU)
581- let eA = (((((ey * ey) / (ez * dU)) * ey) * dX) / (ea * dU))
582- let eB = ((dZ + ((ey * dX) / ea)) - ey)
583- func ef (eg,eh) = {
584- let eC = eg
585- let eD = eC._1
586- let ek = eC._2
587- if ((ek != unit))
588- then eg
575+ let ep = parseBigIntValue(l)
576+ let dN = (parseBigIntValue(aQ) * ep)
577+ let dM = ey
578+ let dO = (dN * eo)
579+ let ez = (((((ex * ex) / (ey * eo)) * ex) * ep) / (dO * eo))
580+ let eA = ((dM + ((ex * ep) / dO)) - ex)
581+ func dX (dY,et) = {
582+ let eB = dY
583+ let eC = eB._1
584+ let em = eB._2
585+ if ((em != unit))
586+ then dY
589587 else {
590- let eE = (((eD * eD) + eA) / ((g * eD) + eB))
591- let eF = Q((eE - value(eD)))
592- if ((f >= eF))
593- then $Tuple2(eE, eh)
594- else $Tuple2(eE, unit)
588+ let eD = (((eC * eC) + ez) / ((g * eC) + eA))
589+ let eE = U((eD - value(eC)))
590+ if ((f >= eE))
591+ then $Tuple2(eD, et)
592+ else $Tuple2(eD, unit)
595593 }
596594 }
597595
598- let eo = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
599- let eG = {
600- let eq = eo
601- let er = size(eq)
602- let es = $Tuple2(ey, unit)
603- func et (eu,ev) = if ((ev >= er))
604- then eu
605- else ef(eu, eq[ev])
596+ let ed = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
597+ let eF = {
598+ let ef = ed
599+ let eg = size(ef)
600+ let eh = $Tuple2(ex, unit)
601+ func ei (ej,ek) = if ((ek >= eg))
602+ then ej
603+ else dX(ej, ef[ek])
606604
607- func ew (eu,ev) = if ((ev >= er))
608- then eu
605+ func el (ej,ek) = if ((ek >= eg))
606+ then ej
609607 else throw("List size exceeds 15")
610608
611- ew(et(et(et(et(et(et(et(et(et(et(et(et(et(et(et(es, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
609+ el(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(eh, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
612610 }
613- let eD = eG._1
614- let ek = eG._2
615- if ((ek != unit))
616- then eD
617- else throw(("Y calculation error, Y = " + toString(eD)))
611+ let eC = eF._1
612+ let em = eF._2
613+ if ((em != unit))
614+ then eC
615+ else throw(("Y calculation error, Y = " + toString(eC)))
618616 }
619617
620618
621-func eH (eI,cm,co,aa,eJ) = {
622- let aT = aL()
623- let cq = aT[u]
624- let cr = aT[v]
625- let cp = aT[t]
626- let cY = parseIntValue(aT[w])
627- let cZ = parseIntValue(aT[x])
628- let eK = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cp)), "invalid lp asset").quantity)
629- let eL = if ((eK > e))
619+func eG (eH,eI,eJ) = {
620+ let eK = fraction(dI([eH, eI]), c, eJ)
621+ if ((eJ == e))
622+ then e
623+ else eK
624+ }
625+
626+
627+func eL (eM,eN,eO) = {
628+ let eP = (toBigInt(bJ(ba(bi))) - eM)
629+ let eQ = (toBigInt(bJ(ba(bj))) - eN)
630+ let eR = (toBigInt(value(assetInfo(bh)).quantity) - eO)
631+ let eS = eG(eP, eQ, eR)
632+ eS
633+ }
634+
635+
636+func eT (eU,eV,eO) = {
637+ let eP = (bJ(ba(bi)) + eU)
638+ let eQ = (bJ(ba(bj)) + eV)
639+ let eR = (value(assetInfo(bh)).quantity + eO)
640+ let eK = eG(toBigInt(eP), toBigInt(eQ), toBigInt(eR))
641+ let eW = [IntegerEntry(an, height), StringEntry(am, toString(eK))]
642+ $Tuple2(eW, eK)
643+ }
644+
645+
646+func eX (eY,eK) = if ((eK >= eY))
647+ then true
648+ else aJ("updated DLp lower than current DLp")
649+
650+
651+func eZ (fa) = {
652+ let fb = fa.amount
653+ let fc = fraction(fa.amount, fa.price, a, FLOOR)
654+ let fd = if ((fa.orderType == Buy))
655+ then $Tuple2(fb, -(fc))
656+ else $Tuple2(-(fb), fc)
657+ let eU = fd._1
658+ let eV = fd._2
659+ if (if (if (aR())
660+ then true
661+ else (bg == r))
662+ then true
663+ else (bg == s))
664+ then throw("Admin blocked")
665+ else if (if ((fa.assetPair.amountAsset != bi))
666+ then true
667+ else (fa.assetPair.priceAsset != bj))
668+ then throw("Wr assets")
669+ else {
670+ let fe = parseBigIntValue(getStringValue(this, am))
671+ let ff = eT(eU, eV, 0)
672+ let fg = ff._1
673+ let fh = ff._2
674+ let fi = (fh >= fe)
675+ fi
676+ }
677+ }
678+
679+
680+func fj (dZ) = if ((size(dZ.payments) != 1))
681+ then throw("1 pmnt exp")
682+ else {
683+ let fk = value(dZ.payments[0])
684+ let cw = value(fk.assetId)
685+ let dc = fk.amount
686+ let do = cu(toBase58String(dZ.transactionId), toBase58String(cw), dc, dZ.caller)
687+ let cQ = do._1
688+ let cR = do._2
689+ let cE = parseIntValue(do._9)
690+ let cS = do._10
691+ if (if (aR())
692+ then true
693+ else (cE == s))
694+ then throw(("Admin blocked: " + toString(cE)))
695+ else $Tuple5(cQ, cR, dc, cw, cS)
696+ }
697+
698+
699+func fl (fm,ae,fn,fo,bS,cZ,da,db,dc,dd) = {
700+ let do = cT(ae, bS, value(fn).amount, value(fn).assetId, value(fo).amount, value(fo).assetId, fm, (ae == ""), cZ, da, db, dc, dd)
701+ let cE = parseIntValue(do._8)
702+ if (if (if (aR())
703+ then true
704+ else (cE == q))
705+ then true
706+ else (cE == s))
707+ then throw(("Blocked:" + toString(cE)))
708+ else do
709+ }
710+
711+
712+func fp (fq,cw,cy,ae,fr) = {
713+ let cA = toBase58String(value(bi))
714+ let cB = toBase58String(value(bj))
715+ let cz = bh
716+ let di = bk
717+ let dj = bl
718+ let eR = toBigInt(valueOrErrorMessage(assetInfo(cz), "invalid lp asset").quantity)
719+ let fs = if ((eR > e))
630720 then true
631721 else throw("initial deposit requires all coins")
632- if ((eL == eL))
722+ if ((fs == fs))
633723 then {
634- let cw = by(cq)
635- let cy = by(cr)
636- let eM = if ((aa == ""))
637- then $Tuple2(cw, cy)
638- else if ((cm == cq))
639- then if ((eI > cw))
724+ let cG = bJ(cA)
725+ let cI = bJ(cB)
726+ let ft = if ((ae == ""))
727+ then $Tuple2(cG, cI)
728+ else if ((cw == cA))
729+ then if ((fq > cG))
640730 then throw("invalid payment amount")
641- else $Tuple2((cw - eI), cy)
642- else if ((cm == cr))
643- then if ((eI > cy))
731+ else $Tuple2((cG - fq), cI)
732+ else if ((cw == cB))
733+ then if ((fq > cI))
644734 then throw("invalid payment amount")
645- else $Tuple2(cw, (cy - eI))
735+ else $Tuple2(cG, (cI - fq))
646736 else throw("wrong pmtAssetId")
647- let eN = eM._1
648- let eO = eM._2
649- let eP = if ((cm == cq))
650- then $Tuple2(eI, 0)
651- else if ((cm == cr))
652- then $Tuple2(0, eI)
737+ let fu = ft._1
738+ let fv = ft._2
739+ let fw = if ((cw == cA))
740+ then $Tuple2(fq, 0)
741+ else if ((cw == cB))
742+ then $Tuple2(0, fq)
653743 else throw("invalid payment")
654- let eQ = eP._1
655- let eR = eP._2
656- let eS = if (eJ)
657- then $Tuple3(cg(eQ, aE)._1, cg(eR, aE)._1, cg(eI, aE)._2)
658- else $Tuple3(eQ, eR, 0)
659- let eT = eS._1
660- let eU = eS._2
661- let cj = eS._3
662- let eV = (eN + eT)
663- let eW = (eO + eU)
664- let bL = dS([toBigInt(eN), toBigInt(eO)])
665- let bK = dS([toBigInt(eV), toBigInt(eW)])
666- let eX = if ((bK > bL))
744+ let fx = fw._1
745+ let fy = fw._2
746+ let fz = if (fr)
747+ then $Tuple3(cr(fx, aN)._1, cr(fy, aN)._1, cr(fq, aN)._2)
748+ else $Tuple3(fx, fy, 0)
749+ let fA = fz._1
750+ let fB = fz._2
751+ let ct = fz._3
752+ let fC = (fu + fA)
753+ let fD = (fv + fB)
754+ let bX = dI([toBigInt(fu), toBigInt(fv)])
755+ let bW = dI([toBigInt(fC), toBigInt(fD)])
756+ let fE = if ((bW > bX))
667757 then true
668758 else throw()
669- if ((eX == eX))
759+ if ((fE == fE))
670760 then {
671- let eY = fraction(eK, (bK - bL), bL)
672- let cB = I(bA(F(eW, cZ), F(eV, cY)), a)
673- let dx = [IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB), StringEntry(Y(co, aa), bj(eQ, eR, toInt(eY), cB, 0, 0, height, lastBlock.timestamp, 0, 0))]
674- let eZ = fraction(eO, a, eN)
675- let fa = fraction(eI, a, (eZ + a))
676- let fb = (eI - fa)
677- let fc = fraction(eK, toBigInt(fb), toBigInt(eO))
678- let fd = toInt(fraction((eY - fc), b, fc))
679- $Tuple4(toInt(eY), dx, cj, fd)
761+ let fF = fraction(eR, (bW - bX), bX, FLOOR)
762+ let cL = K(bL(H(fD, dj), H(fC, di)), a)
763+ let dH = [IntegerEntry(Y(), cL), IntegerEntry(Z(height, lastBlock.timestamp), cL), StringEntry(ac(cy, ae), bu(fx, fy, toInt(fF), cL, 0, 0, height, lastBlock.timestamp, 0, 0))]
764+ let fG = fraction(fv, a, fu)
765+ let fH = fraction(fq, a, (fG + a))
766+ let fI = (fq - fH)
767+ let fJ = fraction(eR, toBigInt(fI), toBigInt(fv))
768+ let fK = toInt(fraction((fF - fJ), b, fJ))
769+ $Tuple4(toInt(fF), dH, ct, fK)
680770 }
681771 else throw("Strict value is not equal to itself.")
682772 }
684774 }
685775
686776
687-func fe (ff,fg,fh,dP,fi,fj) = {
688- let aT = aL()
689- let cp = aT[t]
690- let cq = aT[u]
691- let cr = aT[v]
692- let fk = parseIntValue(aT[w])
693- let fl = parseIntValue(aT[x])
694- let fm = aT[s]
695- let co = if ((dP == bi))
696- then fi
697- else dP
698- let dN = value(fh[0])
699- let cm = value(dN.assetId)
700- let cS = dN.amount
701- let cl = toBase58String(fj)
702- if ((cp != toBase58String(cm)))
703- then throw("Wrong LP")
704- else {
705- let cw = by(cq)
706- let cy = by(cr)
707- let fn = {
708- let aF = invoke(this, "getOneTknV2READONLY", [ff, cS], nil)
709- if ($isInstanceOf(aF, "(Int, Int)"))
710- then aF
711- else throw(($getType(aF) + " couldn't be cast to (Int, Int)"))
712- }
713- if ((fn == fn))
714- then {
715- let cj = fn._2
716- let fo = fn._1
717- let fp = if (if ((fg > 0))
718- then (fg > fo)
719- else false)
720- then aB(makeString(["amount to receive is less than ", toString(fg)], ""))
721- else fo
722- let fq = if ((ff == cq))
723- then $Tuple4(fp, 0, ((cw - fp) - cj), cy)
724- else if ((ff == cr))
725- then $Tuple4(0, fp, cw, ((cy - fp) - cj))
726- else throw("invalid out asset id")
727- let fr = fq._1
728- let fs = fq._2
729- let eV = fq._3
730- let eW = fq._4
731- let ft = bA(F(eW, fl), F(eV, fk))
732- let fu = I(ft, a)
733- let fv = if ((ff == "WAVES"))
734- then unit
735- else fromBase58String(ff)
736- let fw = if ((cj > 0))
737- then [ScriptTransfer(aK, cj, fv)]
738- else nil
739- let cI = ([ScriptTransfer(co, fp, fv), StringEntry(ab(toString(co), cl), bu(fr, fs, cS, fu, height, lastBlock.timestamp)), IntegerEntry(U(), fu), IntegerEntry(V(height, lastBlock.timestamp), fu)] ++ fw)
740- if ((cI == cI))
777+func fL (fM,fN,fO,fm,fP,fQ) = {
778+ let cz = toBase58String(value(bh))
779+ let cA = toBase58String(value(bi))
780+ let cB = toBase58String(value(bj))
781+ let fR = bk
782+ let fS = bl
783+ let fT = bg
784+ let cy = if ((fm == bt))
785+ then fP
786+ else fm
787+ let fk = value(fO[0])
788+ let cw = value(fk.assetId)
789+ let dc = fk.amount
790+ let eS = eL(e, e, e)
791+ if ((eS == eS))
792+ then {
793+ let cv = toBase58String(fQ)
794+ if ((cz != toBase58String(cw)))
795+ then throw("Wrong LP")
796+ else {
797+ let cG = bJ(cA)
798+ let cI = bJ(cB)
799+ let fU = {
800+ let aO = invoke(this, "getOneTknV2READONLY", [fM, dc], nil)
801+ if ($isInstanceOf(aO, "(Int, Int)"))
802+ then aO
803+ else throw(($getType(aO) + " couldn't be cast to (Int, Int)"))
804+ }
805+ if ((fU == fU))
741806 then {
742- let fx = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
743- if ((fx == fx))
744- then $Tuple2(cI, fp)
807+ let ct = fU._2
808+ let fV = fU._1
809+ let fW = if (if ((fN > 0))
810+ then (fN > fV)
811+ else false)
812+ then aJ(makeString(["amount to receive is less than ", toString(fN)], ""))
813+ else fV
814+ let fX = if ((fM == cA))
815+ then $Tuple4(fW, 0, ((cG - fW) - ct), cI)
816+ else if ((fM == cB))
817+ then $Tuple4(0, fW, cG, ((cI - fW) - ct))
818+ else throw("invalid out asset id")
819+ let fY = fX._1
820+ let fZ = fX._2
821+ let fC = fX._3
822+ let fD = fX._4
823+ let ga = bL(H(fD, fS), H(fC, fR))
824+ let gb = K(ga, a)
825+ let gc = if ((fM == "WAVES"))
826+ then unit
827+ else fromBase58String(fM)
828+ let gd = if ((ct > 0))
829+ then [ScriptTransfer(aT, ct, gc)]
830+ else nil
831+ let cS = ([ScriptTransfer(cy, fW, gc), StringEntry(af(toString(cy), cv), bF(fY, fZ, dc, gb, height, lastBlock.timestamp)), IntegerEntry(Y(), gb), IntegerEntry(Z(height, lastBlock.timestamp), gb)] ++ gd)
832+ if ((cS == cS))
833+ then {
834+ let ge = invoke(aM, "burn", [dc], [AttachedPayment(cw, dc)])
835+ if ((ge == ge))
836+ then {
837+ let gf = {
838+ let gg = if ((this == aT))
839+ then 0
840+ else ct
841+ let gh = if ((aY(fM) == bi))
842+ then true
843+ else false
844+ if (gh)
845+ then $Tuple2(-((fV + gg)), 0)
846+ else $Tuple2(0, -((fV + gg)))
847+ }
848+ let eU = gf._1
849+ let eV = gf._2
850+ let gi = eT(eU, eV, 0)
851+ let gj = gi._1
852+ let eK = gi._2
853+ let gk = eX(eS, eK)
854+ if ((gk == gk))
855+ then $Tuple2((cS ++ gj), fW)
856+ else throw("Strict value is not equal to itself.")
857+ }
858+ else throw("Strict value is not equal to itself.")
859+ }
745860 else throw("Strict value is not equal to itself.")
746861 }
747862 else throw("Strict value is not equal to itself.")
748863 }
749- else throw("Strict value is not equal to itself.")
750864 }
865+ else throw("Strict value is not equal to itself.")
751866 }
752867
753868
754-func fy () = {
755- let av = getString(S())
756- if ($isInstanceOf(av, "String"))
869+func gl () = {
870+ let gm = getString(W())
871+ if ($isInstanceOf(gm, "String"))
757872 then {
758- let dZ = av
759- fromBase58String(dZ)
873+ let dM = gm
874+ fromBase58String(dM)
760875 }
761- else if ($isInstanceOf(av, "Unit"))
876+ else if ($isInstanceOf(gm, "Unit"))
762877 then unit
763878 else throw("Match error")
764879 }
765880
766881
767-func fz () = {
768- let av = getString(T())
769- if ($isInstanceOf(av, "String"))
882+func gn () = {
883+ let gm = getString(X())
884+ if ($isInstanceOf(gm, "String"))
770885 then {
771- let dZ = av
772- fromBase58String(dZ)
886+ let dM = gm
887+ fromBase58String(dM)
773888 }
774- else if ($isInstanceOf(av, "Unit"))
889+ else if ($isInstanceOf(gm, "Unit"))
775890 then unit
776891 else throw("Match error")
777892 }
778893
779894
780-let fA = throw("Permission denied")
895+let go = throw("Permission denied")
781896
782-func fB (dM) = {
783- let av = fy()
784- if ($isInstanceOf(av, "ByteVector"))
897+func gp (dZ) = {
898+ let gm = gl()
899+ if ($isInstanceOf(gm, "ByteVector"))
785900 then {
786- let fC = av
787- (dM.callerPublicKey == fC)
901+ let gq = gm
902+ (dZ.callerPublicKey == gq)
788903 }
789- else if ($isInstanceOf(av, "Unit"))
790- then (dM.caller == this)
904+ else if ($isInstanceOf(gm, "Unit"))
905+ then (dZ.caller == this)
791906 else throw("Match error")
792907 }
793908
794909
795-func fD (dM) = {
796- let av = fy()
797- if ($isInstanceOf(av, "ByteVector"))
910+func gr (dZ) = {
911+ let gm = gl()
912+ if ($isInstanceOf(gm, "ByteVector"))
798913 then {
799- let fC = av
800- if ((dM.callerPublicKey == fC))
914+ let gq = gm
915+ if ((dZ.callerPublicKey == gq))
801916 then true
802- else fA
917+ else go
803918 }
804- else if ($isInstanceOf(av, "Unit"))
805- then if ((dM.caller == this))
919+ else if ($isInstanceOf(gm, "Unit"))
920+ then if ((dZ.caller == this))
806921 then true
807- else fA
922+ else go
808923 else throw("Match error")
809924 }
810925
811926
812-@Callable(dM)
813-func constructor (R) = {
814- let eA = fD(dM)
815- if ((eA == eA))
816- then [StringEntry(R(), R)]
927+@Callable(dZ)
928+func constructor (V) = {
929+ let ez = gr(dZ)
930+ if ((ez == ez))
931+ then [StringEntry(V(), V)]
817932 else throw("Strict value is not equal to itself.")
818933 }
819934
820935
821936
822-@Callable(dM)
823-func setManager (fE) = {
824- let eA = fD(dM)
825- if ((eA == eA))
937+@Callable(dZ)
938+func setManager (gs) = {
939+ let ez = gr(dZ)
940+ if ((ez == ez))
826941 then {
827- let fF = fromBase58String(fE)
828- if ((fF == fF))
829- then [StringEntry(T(), fE)]
942+ let gt = fromBase58String(gs)
943+ if ((gt == gt))
944+ then [StringEntry(X(), gs)]
830945 else throw("Strict value is not equal to itself.")
831946 }
832947 else throw("Strict value is not equal to itself.")
834949
835950
836951
837-@Callable(dM)
952+@Callable(dZ)
838953 func confirmManager () = {
839- let cf = fz()
840- let fG = if (isDefined(cf))
954+ let cq = gn()
955+ let gu = if (isDefined(cq))
841956 then true
842957 else throw("No pending manager")
843- if ((fG == fG))
958+ if ((gu == gu))
844959 then {
845- let fH = if ((dM.callerPublicKey == value(cf)))
960+ let gv = if ((dZ.callerPublicKey == value(cq)))
846961 then true
847962 else throw("You are not pending manager")
848- if ((fH == fH))
849- then [StringEntry(S(), toBase58String(value(cf))), DeleteEntry(T())]
963+ if ((gv == gv))
964+ then [StringEntry(W(), toBase58String(value(cq))), DeleteEntry(X())]
850965 else throw("Strict value is not equal to itself.")
851966 }
852967 else throw("Strict value is not equal to itself.")
854969
855970
856971
857-@Callable(dM)
858-func put (fI,fJ) = {
859- let fK = bd()
860- let fL = valueOrErrorMessage(addressFromString(fK[A]), "Wr st addr")
861- let fM = valueOrErrorMessage(addressFromString(fK[C]), "Wr sl addr")
862- if ((0 > fI))
972+@Callable(dZ)
973+func put (gw,gx) = {
974+ let gy = bo()
975+ let gz = valueOrErrorMessage(addressFromString(gy[C]), "Wr st addr")
976+ let gA = valueOrErrorMessage(addressFromString(gy[E]), "Wr sl addr")
977+ if ((0 > gw))
863978 then throw("Wrong slippage")
864- else if ((size(dM.payments) != 2))
979+ else if ((size(dZ.payments) != 2))
865980 then throw("2 pmnts expd")
866981 else {
867- let fN = dO(toString(dM.caller), toBase58String(dM.transactionId), AttachedPayment(value(dM.payments[0]).assetId, value(dM.payments[0]).amount), dM.payments[1], fI, true, false, true, 0, "")
868- let dr = fN._2
869- let fO = fN._7
870- let cI = fN._9
871- let ds = fN._10
872- let dt = fN._11
873- let cq = fN._12
874- let cr = fN._13
875- let de = invoke(aD, "emit", [dr], nil)
876- if ((de == de))
982+ let gB = toBigInt(value(dZ.payments[0]).amount)
983+ let gC = toBigInt(value(dZ.payments[1]).amount)
984+ let eP = (toBigInt(bJ(ba(bi))) - gB)
985+ if ((eP == eP))
877986 then {
878- let fP = {
879- let av = de
880- if ($isInstanceOf(av, "Address"))
881- then {
882- let fQ = av
883- invoke(fQ, "emit", [dr], nil)
884- }
885- else unit
886- }
887- if ((fP == fP))
987+ let eQ = (toBigInt(bJ(ba(bj))) - gC)
988+ if ((eQ == eQ))
888989 then {
889- let fR = if ((ds > 0))
890- then invoke(fM, "put", nil, [AttachedPayment(cq, ds)])
891- else nil
892- if ((fR == fR))
990+ let eR = toBigInt(value(assetInfo(bh)).quantity)
991+ if ((eR == eR))
893992 then {
894- let fS = if ((dt > 0))
895- then invoke(fM, "put", nil, [AttachedPayment(cr, dt)])
896- else nil
897- if ((fS == fS))
993+ let eS = eL(gB, gC, toBigInt(0))
994+ if ((eS == eS))
898995 then {
899- let fT = if (fJ)
996+ let gD = fl(toString(dZ.caller), toBase58String(dZ.transactionId), AttachedPayment(value(dZ.payments[0]).assetId, value(dZ.payments[0]).amount), dZ.payments[1], gw, true, false, true, 0, "")
997+ let dB = gD._2
998+ let gE = gD._7
999+ let cS = gD._9
1000+ let dC = gD._10
1001+ let dD = gD._11
1002+ let cA = gD._12
1003+ let cB = gD._13
1004+ let do = invoke(aM, "emit", [dB], nil)
1005+ if ((do == do))
9001006 then {
901- let fU = invoke(fL, "stake", nil, [AttachedPayment(fO, dr)])
902- if ((fU == fU))
903- then nil
1007+ let gF = {
1008+ let gm = do
1009+ if ($isInstanceOf(gm, "Address"))
1010+ then {
1011+ let gG = gm
1012+ invoke(gG, "emit", [dB], nil)
1013+ }
1014+ else unit
1015+ }
1016+ if ((gF == gF))
1017+ then {
1018+ let gH = if ((dC > 0))
1019+ then invoke(gA, "put", nil, [AttachedPayment(cA, dC)])
1020+ else nil
1021+ if ((gH == gH))
1022+ then {
1023+ let gI = if ((dD > 0))
1024+ then invoke(gA, "put", nil, [AttachedPayment(cB, dD)])
1025+ else nil
1026+ if ((gI == gI))
1027+ then {
1028+ let gJ = if (gx)
1029+ then {
1030+ let gK = invoke(gz, "stake", nil, [AttachedPayment(gE, dB)])
1031+ if ((gK == gK))
1032+ then nil
1033+ else throw("Strict value is not equal to itself.")
1034+ }
1035+ else [ScriptTransfer(dZ.caller, dB, gE)]
1036+ let gL = eT(0, 0, 0)
1037+ let gj = gL._1
1038+ let eK = gL._2
1039+ let gM = if ((eK >= eS))
1040+ then true
1041+ else aJ(makeString(["updated DLp lower than current DLp", toString(eP), toString(eQ), toString(eR), toString(eS), toString(eK), toString(dC), toString(dD)], " "))
1042+ if ((gM == gM))
1043+ then {
1044+ let gN = value(assetInfo(bh)).quantity
1045+ if ((gN == gN))
1046+ then ((cS ++ gJ) ++ gj)
1047+ else throw("Strict value is not equal to itself.")
1048+ }
1049+ else throw("Strict value is not equal to itself.")
1050+ }
1051+ else throw("Strict value is not equal to itself.")
1052+ }
1053+ else throw("Strict value is not equal to itself.")
1054+ }
9041055 else throw("Strict value is not equal to itself.")
9051056 }
906- else [ScriptTransfer(dM.caller, dr, fO)]
907- (cI ++ fT)
1057+ else throw("Strict value is not equal to itself.")
9081058 }
9091059 else throw("Strict value is not equal to itself.")
9101060 }
9181068
9191069
9201070
921-@Callable(dM)
922-func putOneTknV2 (fg,fJ) = {
923- let fV = {
924- let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
925- if ($isInstanceOf(aF, "Boolean"))
926- then aF
927- else throw(($getType(aF) + " couldn't be cast to Boolean"))
1071+@Callable(dZ)
1072+func putOneTknV2 (fN,gx) = {
1073+ let gO = {
1074+ let aO = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1075+ if ($isInstanceOf(aO, "Boolean"))
1076+ then aO
1077+ else throw(($getType(aO) + " couldn't be cast to Boolean"))
9281078 }
929- let fW = if (if (if (aI())
1079+ let gP = if (if (if (aR())
9301080 then true
931- else (aX == o))
1081+ else (bg == q))
9321082 then true
933- else (aX == q))
1083+ else (bg == s))
9341084 then true
935- else fV
936- let fX = [if (if (!(fW))
1085+ else gO
1086+ let gQ = [if (if (!(gP))
9371087 then true
938- else fB(dM))
1088+ else gp(dZ))
9391089 then true
940- else aB("put operation is blocked by admin"), if ((size(dM.payments) == 1))
1090+ else aJ("put operation is blocked by admin"), if ((size(dZ.payments) == 1))
9411091 then true
942- else aB("exactly 1 payment are expected")]
943- if ((fX == fX))
1092+ else aJ("exactly 1 payment are expected")]
1093+ if ((gQ == gQ))
9441094 then {
945- let aT = aL()
946- let cq = aT[u]
947- let cr = aT[v]
948- let cp = fromBase58String(aT[t])
949- let fk = parseIntValue(aT[w])
950- let fl = parseIntValue(aT[x])
951- let co = if ((dM.caller == this))
952- then dM.originCaller
953- else dM.caller
954- let dN = value(dM.payments[0])
955- let cm = toBase58String(value(dN.assetId))
956- let cS = dN.amount
957- let fY = eH(cS, cm, toString(co), toBase58String(dM.transactionId), true)
958- if ((fY == fY))
1095+ let cA = toBase58String(value(bi))
1096+ let cB = toBase58String(value(bj))
1097+ let cz = bh
1098+ let fR = bk
1099+ let fS = bl
1100+ let cy = if ((dZ.caller == this))
1101+ then dZ.originCaller
1102+ else dZ.caller
1103+ let fk = value(dZ.payments[0])
1104+ let cw = toBase58String(value(fk.assetId))
1105+ let dc = fk.amount
1106+ let eS = if ((fk.assetId == bi))
1107+ then eL(toBigInt(dc), toBigInt(0), toBigInt(0))
1108+ else eL(toBigInt(0), toBigInt(dc), toBigInt(0))
1109+ if ((eS == eS))
9591110 then {
960- let cj = fY._3
961- let cI = fY._2
962- let fZ = fY._1
963- let dr = if (if ((fg > 0))
964- then (fg > fZ)
965- else false)
966- then aB(makeString(["amount to receive is less than ", toString(fg)], ""))
967- else fZ
968- let fN = invoke(aD, "emit", [dr], nil)
969- if ((fN == fN))
1111+ let gR = fp(dc, cw, toString(cy), toBase58String(dZ.transactionId), true)
1112+ if ((gR == gR))
9701113 then {
971- let fP = {
972- let av = fN
973- if ($isInstanceOf(av, "Address"))
974- then {
975- let fQ = av
976- invoke(fQ, "emit", [dr], nil)
1114+ let ct = gR._3
1115+ let cS = gR._2
1116+ let gS = gR._1
1117+ let dB = if (if ((fN > 0))
1118+ then (fN > gS)
1119+ else false)
1120+ then aJ(makeString(["amount to receive is less than ", toString(fN)], ""))
1121+ else gS
1122+ let gD = invoke(aM, "emit", [dB], nil)
1123+ if ((gD == gD))
1124+ then {
1125+ let gF = {
1126+ let gm = gD
1127+ if ($isInstanceOf(gm, "Address"))
1128+ then {
1129+ let gG = gm
1130+ invoke(gG, "emit", [dB], nil)
1131+ }
1132+ else unit
9771133 }
978- else unit
979- }
980- if ((fP == fP))
981- then {
982- let fT = if (fJ)
1134+ if ((gF == gF))
9831135 then {
984- let fU = invoke(bf, "stake", nil, [AttachedPayment(cp, dr)])
985- if ((fU == fU))
986- then nil
1136+ let gJ = if (gx)
1137+ then {
1138+ let gK = invoke(bq, "stake", nil, [AttachedPayment(cz, dB)])
1139+ if ((gK == gK))
1140+ then nil
1141+ else throw("Strict value is not equal to itself.")
1142+ }
1143+ else [ScriptTransfer(dZ.caller, dB, cz)]
1144+ let gd = if ((ct > 0))
1145+ then [ScriptTransfer(aT, ct, fromBase58String(cw))]
1146+ else nil
1147+ let gT = if ((this == aT))
1148+ then $Tuple2(0, 0)
1149+ else {
1150+ let gU = if ((fk.assetId == bi))
1151+ then true
1152+ else false
1153+ if (gU)
1154+ then $Tuple2(-(ct), 0)
1155+ else $Tuple2(0, -(ct))
1156+ }
1157+ let eU = gT._1
1158+ let eV = gT._2
1159+ let gV = eT(eU, eV, 0)
1160+ let gj = gV._1
1161+ let eK = gV._2
1162+ let gk = eX(eS, eK)
1163+ if ((gk == gk))
1164+ then $Tuple2((((cS ++ gJ) ++ gd) ++ gj), dB)
9871165 else throw("Strict value is not equal to itself.")
9881166 }
989- else [ScriptTransfer(dM.caller, dr, cp)]
990- let fw = if ((cj > 0))
991- then [ScriptTransfer(aK, cj, fromBase58String(cm))]
992- else nil
993- $Tuple2(((cI ++ fT) ++ fw), dr)
1167+ else throw("Strict value is not equal to itself.")
9941168 }
9951169 else throw("Strict value is not equal to itself.")
9961170 }
10031177
10041178
10051179
1006-@Callable(dM)
1007-func putForFree (ga) = if ((0 > ga))
1180+@Callable(dZ)
1181+func putForFree (gW) = if ((0 > gW))
10081182 then throw("Wrong slpg")
1009- else if ((size(dM.payments) != 2))
1183+ else if ((size(dZ.payments) != 2))
10101184 then throw("2 pmnts expd")
10111185 else {
1012- let gb = dO(toString(dM.caller), toBase58String(dM.transactionId), AttachedPayment(value(dM.payments[0]).assetId, value(dM.payments[0]).amount), dM.payments[1], ga, false, false, true, 0, "")
1013- gb._9
1186+ let gX = fl(toString(dZ.caller), toBase58String(dZ.transactionId), AttachedPayment(value(dZ.payments[0]).assetId, value(dZ.payments[0]).amount), dZ.payments[1], gW, false, false, true, 0, "")
1187+ let cS = gX._9
1188+ let gB = toBigInt(value(dZ.payments[0]).amount)
1189+ let gC = toBigInt(value(dZ.payments[1]).amount)
1190+ let eS = eL(gB, gC, toBigInt(0))
1191+ if ((eS == eS))
1192+ then {
1193+ let gY = eT(0, 0, 0)
1194+ let gj = gY._1
1195+ let eK = gY._2
1196+ let gk = eX(eS, eK)
1197+ if ((gk == gk))
1198+ then (cS ++ gj)
1199+ else throw("Strict value is not equal to itself.")
1200+ }
1201+ else throw("Strict value is not equal to itself.")
10141202 }
10151203
10161204
10171205
1018-@Callable(dM)
1206+@Callable(dZ)
10191207 func get () = {
1020- let de = dL(dM)
1021- let gc = de._1
1022- let cH = de._2
1023- let cS = de._3
1024- let cm = de._4
1025- let cI = de._5
1026- let eB = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
1027- if ((eB == eB))
1028- then cI
1029- else throw("Strict value is not equal to itself.")
1030- }
1031-
1032-
1033-
1034-@Callable(dM)
1035-func getOneTknV2 (ff,fg) = {
1036- let fV = {
1037- let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1038- if ($isInstanceOf(aF, "Boolean"))
1039- then aF
1040- else throw(($getType(aF) + " couldn't be cast to Boolean"))
1041- }
1042- let gd = if (if (aI())
1043- then true
1044- else (aX == q))
1045- then true
1046- else fV
1047- let fX = [if (if (!(gd))
1048- then true
1049- else fB(dM))
1050- then true
1051- else aB("get operation is blocked by admin"), if ((size(dM.payments) == 1))
1052- then true
1053- else aB("exactly 1 payment are expected")]
1054- if ((fX == fX))
1208+ let eS = eL(toBigInt(0), toBigInt(0), toBigInt(0))
1209+ if ((eS == eS))
10551210 then {
1056- let ge = fe(ff, fg, dM.payments, dM.caller, dM.originCaller, dM.transactionId)
1057- let cI = ge._1
1058- let fp = ge._2
1059- $Tuple2(cI, fp)
1211+ let do = fj(dZ)
1212+ let gZ = do._1
1213+ let cR = do._2
1214+ let dc = do._3
1215+ let cw = do._4
1216+ let cS = do._5
1217+ let eA = invoke(aM, "burn", [dc], [AttachedPayment(cw, dc)])
1218+ if ((eA == eA))
1219+ then {
1220+ let ha = eT(-(gZ), -(cR), 0)
1221+ let gj = ha._1
1222+ let eK = ha._2
1223+ let gk = eX(eS, eK)
1224+ if ((gk == gk))
1225+ then (cS ++ gj)
1226+ else throw("Strict value is not equal to itself.")
1227+ }
1228+ else throw("Strict value is not equal to itself.")
10601229 }
10611230 else throw("Strict value is not equal to itself.")
10621231 }
10631232
10641233
10651234
1066-@Callable(dM)
1067-func getOneTknV2READONLY (ff,gf) = {
1068- let aT = aL()
1069- let cq = aT[u]
1070- let cr = aT[v]
1071- let cp = aT[t]
1072- let dT = [toBigInt(by(cq)), toBigInt(by(cr))]
1073- let gg = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cp)), "invalid lp asset").quantity)
1074- let bL = dS(dT)
1075- let bK = (bL - fraction(toBigInt(gf), bL, gg))
1076- let gh = if ((ff == cq))
1077- then 0
1078- else if ((ff == cr))
1079- then 1
1080- else throw("invalid out asset id")
1081- let gi = ex(dT, gh, bK)
1082- let gj = (dT[gh] - gi)
1083- let gk = max([0, toInt((gj - f))])
1084- let gl = cg(gk, aG)
1085- let fo = gl._1
1086- let cj = gl._2
1087- $Tuple2(nil, $Tuple2(fo, cj))
1235+@Callable(dZ)
1236+func getOneTknV2 (fM,fN) = {
1237+ let gO = {
1238+ let aO = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1239+ if ($isInstanceOf(aO, "Boolean"))
1240+ then aO
1241+ else throw(($getType(aO) + " couldn't be cast to Boolean"))
1242+ }
1243+ let hb = if (if (aR())
1244+ then true
1245+ else (bg == s))
1246+ then true
1247+ else gO
1248+ let gQ = [if (if (!(hb))
1249+ then true
1250+ else gp(dZ))
1251+ then true
1252+ else aJ("get operation is blocked by admin"), if ((size(dZ.payments) == 1))
1253+ then true
1254+ else aJ("exactly 1 payment are expected")]
1255+ if ((gQ == gQ))
1256+ then {
1257+ let hc = fL(fM, fN, dZ.payments, dZ.caller, dZ.originCaller, dZ.transactionId)
1258+ let cS = hc._1
1259+ let fW = hc._2
1260+ $Tuple2(cS, fW)
1261+ }
1262+ else throw("Strict value is not equal to itself.")
10881263 }
10891264
10901265
10911266
1092-@Callable(dM)
1093-func getOneTknV2WithBonusREADONLY (ff,gf) = {
1094- let aT = aL()
1095- let cq = aT[u]
1096- let cr = aT[v]
1097- let cp = aT[t]
1098- let cw = by(cq)
1099- let cy = by(cr)
1100- let gm = {
1101- let aF = invoke(this, "getOneTknV2READONLY", [ff, gf], nil)
1102- if ($isInstanceOf(aF, "(Int, Int)"))
1103- then aF
1104- else throw(($getType(aF) + " couldn't be cast to (Int, Int)"))
1105- }
1106- let fo = gm._1
1107- let cj = gm._2
1108- let de = ck("", cp, gf, this)
1109- let cG = de._1
1110- let cH = de._2
1111- let gn = (cG + cH)
1112- let fd = if ((gn == 0))
1113- then if ((fo == 0))
1114- then 0
1115- else throw("bonus calculation error")
1116- else fraction((fo - gn), a, gn)
1117- $Tuple2(nil, $Tuple3(fo, cj, fd))
1267+@Callable(dZ)
1268+func refreshDLp () = {
1269+ let hd = valueOrElse(getInteger(an), 0)
1270+ let he = if (((height - hd) >= aq))
1271+ then unit
1272+ else aJ(makeString([toString(aq), " blocks have not passed since the previous call"], ""))
1273+ if ((he == he))
1274+ then {
1275+ let fe = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, am), "0")), aL("invalid dLp"))
1276+ let hf = eT(0, 0, 0)
1277+ let hg = hf._1
1278+ let eK = hf._2
1279+ let eW = if ((fe != eK))
1280+ then hg
1281+ else aJ("nothing to refresh")
1282+ $Tuple2(eW, toString(eK))
1283+ }
1284+ else throw("Strict value is not equal to itself.")
11181285 }
11191286
11201287
11211288
1122-@Callable(dM)
1123-func getNoLess (go,gp) = {
1124- let de = dL(dM)
1125- let cG = de._1
1126- let cH = de._2
1127- let cS = de._3
1128- let cm = de._4
1129- let cI = de._5
1130- if ((go > cG))
1131- then throw(((("Failed: " + toString(cG)) + " < ") + toString(go)))
1132- else if ((gp > cH))
1133- then throw(((("Failed: " + toString(cH)) + " < ") + toString(gp)))
1289+@Callable(dZ)
1290+func getOneTknV2READONLY (fM,hh) = {
1291+ let cA = toBase58String(value(bi))
1292+ let cB = toBase58String(value(bj))
1293+ let cz = toBase58String(value(bh))
1294+ let dJ = [toBigInt(bJ(cA)), toBigInt(bJ(cB))]
1295+ let eJ = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cz)), "invalid lp asset").quantity)
1296+ let bX = dI(dJ)
1297+ let bW = (bX - fraction(toBigInt(hh), bX, eJ))
1298+ let hi = if ((fM == cA))
1299+ then 0
1300+ else if ((fM == cB))
1301+ then 1
1302+ else throw("invalid out asset id")
1303+ let hj = ew(dJ, hi, bW)
1304+ let hk = (dJ[hi] - hj)
1305+ let hl = max([0, toInt((hk - f))])
1306+ let hm = cr(hl, aP)
1307+ let fV = hm._1
1308+ let ct = hm._2
1309+ $Tuple2(nil, $Tuple2(fV, ct))
1310+ }
1311+
1312+
1313+
1314+@Callable(dZ)
1315+func getOneTknV2WithBonusREADONLY (fM,hh) = {
1316+ let cA = toBase58String(value(bi))
1317+ let cB = toBase58String(value(bj))
1318+ let cz = toBase58String(value(bh))
1319+ let cG = bJ(cA)
1320+ let cI = bJ(cB)
1321+ let hn = {
1322+ let aO = invoke(this, "getOneTknV2READONLY", [fM, hh], nil)
1323+ if ($isInstanceOf(aO, "(Int, Int)"))
1324+ then aO
1325+ else throw(($getType(aO) + " couldn't be cast to (Int, Int)"))
1326+ }
1327+ let fV = hn._1
1328+ let ct = hn._2
1329+ let do = cu("", cz, hh, this)
1330+ let cQ = do._1
1331+ let cR = do._2
1332+ let ho = (cQ + cR)
1333+ let fK = if ((ho == 0))
1334+ then if ((fV == 0))
1335+ then 0
1336+ else throw("bonus calculation error")
1337+ else fraction((fV - ho), a, ho)
1338+ $Tuple2(nil, $Tuple3(fV, ct, fK))
1339+ }
1340+
1341+
1342+
1343+@Callable(dZ)
1344+func getNoLess (hp,hq) = {
1345+ let do = fj(dZ)
1346+ let cQ = do._1
1347+ let cR = do._2
1348+ let dc = do._3
1349+ let cw = do._4
1350+ let cS = do._5
1351+ if ((hp > cQ))
1352+ then throw(((("Failed: " + toString(cQ)) + " < ") + toString(hp)))
1353+ else if ((hq > cR))
1354+ then throw(((("Failed: " + toString(cR)) + " < ") + toString(hq)))
11341355 else {
1135- let gq = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
1136- if ((gq == gq))
1137- then cI
1356+ let eS = eL(toBigInt(0), toBigInt(0), toBigInt(0))
1357+ if ((eS == eS))
1358+ then {
1359+ let hr = invoke(aM, "burn", [dc], [AttachedPayment(cw, dc)])
1360+ if ((hr == hr))
1361+ then {
1362+ let hs = eT(-(cQ), -(cR), 0)
1363+ let gj = hs._1
1364+ let eK = hs._2
1365+ let gk = eX(eS, eK)
1366+ if ((gk == gk))
1367+ then (cS ++ gj)
1368+ else throw("Strict value is not equal to itself.")
1369+ }
1370+ else throw("Strict value is not equal to itself.")
1371+ }
11381372 else throw("Strict value is not equal to itself.")
11391373 }
11401374 }
11411375
11421376
11431377
1144-@Callable(dM)
1145-func unstakeAndGet (ch) = {
1146- let gr = if ((size(dM.payments) != 0))
1378+@Callable(dZ)
1379+func unstakeAndGet (cs) = {
1380+ let ht = if ((size(dZ.payments) != 0))
11471381 then throw("No pmnts expd")
11481382 else true
1149- if ((gr == gr))
1383+ if ((ht == ht))
11501384 then {
1151- let bX = aL()
1152- let gs = bd()
1153- let fO = fromBase58String(bX[t])
1154- let gt = valueOrErrorMessage(addressFromString(gs[A]), "Wr st addr")
1155- let gu = invoke(gt, "unstake", [toBase58String(fO), ch], nil)
1156- if ((gu == gu))
1385+ let hu = bo()
1386+ let gE = bh
1387+ let hv = valueOrErrorMessage(addressFromString(hu[C]), "Wr st addr")
1388+ let eS = eL(toBigInt(0), toBigInt(0), toBigInt(0))
1389+ let hw = invoke(hv, "unstake", [toBase58String(gE), cs], nil)
1390+ if ((hw == hw))
11571391 then {
1158- let de = ck(toBase58String(dM.transactionId), toBase58String(fO), ch, dM.caller)
1159- let cu = parseIntValue(de._9)
1160- let cI = de._10
1161- let gv = if (if (aI())
1392+ let do = cu(toBase58String(dZ.transactionId), toBase58String(gE), cs, dZ.caller)
1393+ let cQ = do._1
1394+ let cR = do._2
1395+ let cE = parseIntValue(do._9)
1396+ let cS = do._10
1397+ let hx = if (if (aR())
11621398 then true
1163- else (cu == q))
1164- then throw(("Blocked: " + toString(cu)))
1399+ else (cE == s))
1400+ then throw(("Blocked: " + toString(cE)))
11651401 else true
1166- if ((gv == gv))
1402+ if ((hx == hx))
11671403 then {
1168- let gw = invoke(aD, "burn", [ch], [AttachedPayment(fO, ch)])
1169- if ((gw == gw))
1170- then cI
1404+ let hy = invoke(aM, "burn", [cs], [AttachedPayment(gE, cs)])
1405+ if ((hy == hy))
1406+ then {
1407+ let hz = eT(-(cQ), -(cR), 0)
1408+ let gj = hz._1
1409+ let eK = hz._2
1410+ let gk = eX(eS, eK)
1411+ if ((gk == gk))
1412+ then (cS ++ gj)
1413+ else throw("Strict value is not equal to itself.")
1414+ }
11711415 else throw("Strict value is not equal to itself.")
11721416 }
11731417 else throw("Strict value is not equal to itself.")
11791423
11801424
11811425
1182-@Callable(dM)
1183-func unstakeAndGetNoLess (gx,gy,gp) = {
1184- let gd = if (aI())
1426+@Callable(dZ)
1427+func unstakeAndGetNoLess (hA,hB,hq) = {
1428+ let hb = if (aR())
11851429 then true
1186- else (aX == q)
1187- let fX = [if (!(gd))
1430+ else (bg == s)
1431+ let gQ = [if (!(hb))
11881432 then true
1189- else throw("get operation is blocked by admin"), if ((size(dM.payments) == 0))
1433+ else throw("get operation is blocked by admin"), if ((size(dZ.payments) == 0))
11901434 then true
11911435 else throw("no payments are expected")]
1192- if ((fX == fX))
1436+ if ((gQ == gQ))
11931437 then {
1194- let gu = invoke(bf, "unstake", [toBase58String(aY), gx], nil)
1195- if ((gu == gu))
1438+ let eS = eL(toBigInt(0), toBigInt(0), toBigInt(0))
1439+ let hw = invoke(bq, "unstake", [toBase58String(bh), hA], nil)
1440+ if ((hw == hw))
11961441 then {
1197- let gz = ck(toBase58String(dM.transactionId), toBase58String(aY), gx, dM.caller)
1198- let cG = gz._1
1199- let cH = gz._2
1200- let cI = gz._10
1201- let gA = [if ((cG >= gy))
1442+ let hC = cu(toBase58String(dZ.transactionId), toBase58String(bh), hA, dZ.caller)
1443+ let cQ = hC._1
1444+ let cR = hC._2
1445+ let cS = hC._10
1446+ let hD = [if ((cQ >= hB))
12021447 then true
1203- else throw(makeString(["amount asset amount to receive is less than ", toString(gy)], "")), if ((cH >= gp))
1448+ else throw(makeString(["amount asset amount to receive is less than ", toString(hB)], "")), if ((cR >= hq))
12041449 then true
1205- else throw(makeString(["price asset amount to receive is less than ", toString(gp)], ""))]
1206- if ((gA == gA))
1450+ else throw(makeString(["price asset amount to receive is less than ", toString(hq)], ""))]
1451+ if ((hD == hD))
12071452 then {
1208- let gq = invoke(aD, "burn", [gx], [AttachedPayment(aY, gx)])
1209- if ((gq == gq))
1210- then cI
1453+ let hr = invoke(aM, "burn", [hA], [AttachedPayment(bh, hA)])
1454+ if ((hr == hr))
1455+ then {
1456+ let hE = eT(-(cQ), -(cR), 0)
1457+ let gj = hE._1
1458+ let eK = hE._2
1459+ let gk = eX(eS, eK)
1460+ if ((gk == gk))
1461+ then (cS ++ gj)
1462+ else throw("Strict value is not equal to itself.")
1463+ }
12111464 else throw("Strict value is not equal to itself.")
12121465 }
12131466 else throw("Strict value is not equal to itself.")
12191472
12201473
12211474
1222-@Callable(dM)
1223-func unstakeAndGetOneTknV2 (gx,ff,fg) = {
1224- let fV = {
1225- let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1226- if ($isInstanceOf(aF, "Boolean"))
1227- then aF
1228- else throw(($getType(aF) + " couldn't be cast to Boolean"))
1475+@Callable(dZ)
1476+func unstakeAndGetOneTknV2 (hA,fM,fN) = {
1477+ let gO = {
1478+ let aO = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1479+ if ($isInstanceOf(aO, "Boolean"))
1480+ then aO
1481+ else throw(($getType(aO) + " couldn't be cast to Boolean"))
12291482 }
1230- let gd = if (if (aI())
1483+ let hb = if (if (aR())
12311484 then true
1232- else (aX == q))
1485+ else (bg == s))
12331486 then true
1234- else fV
1235- let fX = [if (if (!(gd))
1487+ else gO
1488+ let gQ = [if (if (!(hb))
12361489 then true
1237- else fB(dM))
1490+ else gp(dZ))
12381491 then true
1239- else aB("get operation is blocked by admin"), if ((size(dM.payments) == 0))
1492+ else aJ("get operation is blocked by admin"), if ((size(dZ.payments) == 0))
12401493 then true
1241- else aB("no payments are expected")]
1242- if ((fX == fX))
1494+ else aJ("no payments are expected")]
1495+ if ((gQ == gQ))
12431496 then {
1244- let bX = aL()
1245- let gs = bd()
1246- let fO = fromBase58String(bX[t])
1247- let gt = valueOrErrorMessage(addressFromString(gs[A]), "Wr st addr")
1248- let gu = invoke(gt, "unstake", [toBase58String(fO), gx], nil)
1249- if ((gu == gu))
1497+ let hu = bo()
1498+ let gE = bh
1499+ let hv = valueOrErrorMessage(addressFromString(hu[C]), "Wr st addr")
1500+ let hw = invoke(hv, "unstake", [toBase58String(gE), hA], nil)
1501+ if ((hw == hw))
12501502 then {
1251- let gB = fe(ff, fg, [AttachedPayment(fO, gx)], dM.caller, dM.originCaller, dM.transactionId)
1252- let cI = gB._1
1253- let fp = gB._2
1254- $Tuple2(cI, fp)
1503+ let hF = fL(fM, fN, [AttachedPayment(gE, hA)], dZ.caller, dZ.originCaller, dZ.transactionId)
1504+ let cS = hF._1
1505+ let fW = hF._2
1506+ $Tuple2(cS, fW)
12551507 }
12561508 else throw("Strict value is not equal to itself.")
12571509 }
12601512
12611513
12621514
1263-@Callable(dM)
1264-func putOneTknV2WithBonusREADONLY (gC,gD) = {
1265- let aT = aL()
1266- let cq = aT[u]
1267- let cr = aT[v]
1268- let cp = aT[t]
1269- let gE = eH(gC, gD, "", "", true)
1270- let eY = gE._1
1271- let cI = gE._2
1272- let cj = gE._3
1273- let fd = gE._4
1274- $Tuple2(nil, $Tuple3(eY, cj, fd))
1515+@Callable(dZ)
1516+func putOneTknV2WithBonusREADONLY (hG,hH) = {
1517+ let hI = fp(hG, hH, "", "", true)
1518+ let fF = hI._1
1519+ let cS = hI._2
1520+ let ct = hI._3
1521+ let fK = hI._4
1522+ $Tuple2(nil, $Tuple3(fF, ct, fK))
12751523 }
12761524
12771525
12781526
1279-@Callable(dM)
1280-func putOneTknV2WithoutTakeFeeREADONLY (gC,gD) = {
1281- let aT = aL()
1282- let cq = aT[u]
1283- let cr = aT[v]
1284- let cp = aT[t]
1285- let gF = eH(gC, gD, "", "", false)
1286- let eY = gF._1
1287- let cI = gF._2
1288- let cj = gF._3
1289- let fd = gF._4
1290- $Tuple2(nil, $Tuple3(eY, cj, fd))
1527+@Callable(dZ)
1528+func putOneTknV2WithoutTakeFeeREADONLY (hG,hH) = {
1529+ let hJ = fp(hG, hH, "", "", false)
1530+ let fF = hJ._1
1531+ let cS = hJ._2
1532+ let ct = hJ._3
1533+ let fK = hJ._4
1534+ $Tuple2(nil, $Tuple3(fF, ct, fK))
12911535 }
12921536
12931537
12941538
1295-@Callable(dM)
1296-func activate (gG,gH) = if ((toString(dM.caller) != toString(aD)))
1539+@Callable(dZ)
1540+func activate (hK,hL) = if ((toString(dZ.caller) != toString(aM)))
12971541 then throw("denied")
1298- else $Tuple2([StringEntry(ac(), gG), StringEntry(ad(), gH)], "success")
1542+ else $Tuple2([StringEntry(ag(), hK), StringEntry(ah(), hL)], "success")
12991543
13001544
13011545
1302-@Callable(dM)
1303-func setS (gI,gv) = if ((toString(dM.caller) != ax(this, af())))
1304- then fA
1305- else [StringEntry(gI, gv)]
1546+@Callable(dZ)
1547+func setS (hM,hx) = if ((toString(dZ.caller) != aF(this, aj())))
1548+ then go
1549+ else [StringEntry(hM, hx)]
13061550
13071551
13081552
1309-@Callable(dM)
1310-func setI (gI,gv) = if ((toString(dM.caller) != ax(this, af())))
1311- then fA
1312- else [IntegerEntry(gI, gv)]
1553+@Callable(dZ)
1554+func setI (hM,hx) = if ((toString(dZ.caller) != aF(this, aj())))
1555+ then go
1556+ else [IntegerEntry(hM, hx)]
13131557
13141558
13151559
1316-@Callable(dM)
1317-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aL())
1560+@Callable(dZ)
1561+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aU())
13181562
13191563
13201564
1321-@Callable(dM)
1322-func getAccBalanceWrapperREADONLY (bz) = $Tuple2(nil, by(bz))
1565+@Callable(dZ)
1566+func getAccBalanceWrapperREADONLY (bK) = $Tuple2(nil, bJ(bK))
13231567
13241568
13251569
1326-@Callable(dM)
1327-func calcPricesWrapperREADONLY (bR,bS,bW) = {
1328- let gJ = bV(bR, bS, bW)
1329- $Tuple2(nil, [toString(gJ[0]), toString(gJ[1]), toString(gJ[2])])
1570+@Callable(dZ)
1571+func calcPricesWrapperREADONLY (cd,ce,ci) = {
1572+ let hN = ch(cd, ce, ci)
1573+ $Tuple2(nil, [toString(hN[0]), toString(hN[1]), toString(hN[2])])
13301574 }
13311575
13321576
13331577
1334-@Callable(dM)
1335-func fromX18WrapperREADONLY (J,gK) = $Tuple2(nil, I(parseBigIntValue(J), gK))
1578+@Callable(dZ)
1579+func fromX18WrapperREADONLY (L,hO) = $Tuple2(nil, K(parseBigIntValue(L), hO))
13361580
13371581
13381582
1339-@Callable(dM)
1340-func toX18WrapperREADONLY (G,H) = $Tuple2(nil, toString(F(G, H)))
1583+@Callable(dZ)
1584+func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
13411585
13421586
13431587
1344-@Callable(dM)
1345-func calcPriceBigIntWrapperREADONLY (bB,bC) = $Tuple2(nil, toString(bA(parseBigIntValue(bB), parseBigIntValue(bC))))
1588+@Callable(dZ)
1589+func calcPriceBigIntWrapperREADONLY (bM,bN) = $Tuple2(nil, toString(bL(parseBigIntValue(bM), parseBigIntValue(bN))))
13461590
13471591
13481592
1349-@Callable(dM)
1350-func estimatePutOperationWrapperREADONLY (cl,bG,cK,cL,cM,cN,gL,cO,cP) = $Tuple2(nil, cJ(cl, bG, cK, cL, cM, cN, gL, cO, cP, true, false, 0, ""))
1593+@Callable(dZ)
1594+func estimatePutOperationWrapperREADONLY (cv,bS,cU,cV,cW,cX,hP,cY,cZ) = $Tuple2(nil, cT(cv, bS, cU, cV, cW, cX, hP, cY, cZ, true, false, 0, ""))
13511595
13521596
13531597
1354-@Callable(dM)
1355-func estimateGetOperationWrapperREADONLY (cl,gM,cn,gL) = {
1356- let de = ck(cl, gM, cn, addressFromStringValue(gL))
1357- $Tuple2(nil, $Tuple10(de._1, de._2, de._3, de._4, de._5, de._6, de._7, toString(de._8), de._9, de._10))
1598+@Callable(dZ)
1599+func estimateGetOperationWrapperREADONLY (cv,hQ,cx,hP) = {
1600+ let do = cu(cv, hQ, cx, addressFromStringValue(hP))
1601+ $Tuple2(nil, $Tuple10(do._1, do._2, do._3, do._4, do._5, do._6, do._7, toString(do._8), do._9, do._10))
13581602 }
13591603
13601604
1361-@Verifier(gN)
1362-func gO () = {
1363- let gP = {
1364- let av = fy()
1365- if ($isInstanceOf(av, "ByteVector"))
1605+@Verifier(hR)
1606+func hS () = {
1607+ let hT = {
1608+ let gm = gl()
1609+ if ($isInstanceOf(gm, "ByteVector"))
13661610 then {
1367- let fC = av
1368- fC
1611+ let gq = gm
1612+ gq
13691613 }
1370- else if ($isInstanceOf(av, "Unit"))
1371- then gN.senderPublicKey
1614+ else if ($isInstanceOf(gm, "Unit"))
1615+ then hR.senderPublicKey
13721616 else throw("Match error")
13731617 }
1374- let av = gN
1375- if ($isInstanceOf(av, "Order"))
1618+ let gm = hR
1619+ if ($isInstanceOf(gm, "Order"))
13761620 then {
1377- let dz = av
1378- let gQ = aJ()
1379- let gR = dy(dz)
1380- let gS = sigVerify(dz.bodyBytes, dz.proofs[0], dz.senderPublicKey)
1381- let gT = sigVerify(dz.bodyBytes, dz.proofs[1], gQ)
1382- if (if (if (gR)
1383- then gS
1621+ let fa = gm
1622+ let hU = aS()
1623+ let hV = eZ(fa)
1624+ let hW = sigVerify(fa.bodyBytes, fa.proofs[0], fa.senderPublicKey)
1625+ let hX = sigVerify(fa.bodyBytes, fa.proofs[1], hU)
1626+ if (if (if (hV)
1627+ then hW
13841628 else false)
1385- then gT
1629+ then hX
13861630 else false)
13871631 then true
1388- else aq(gR, gS, gT)
1632+ else aB(hV, hW, hX)
13891633 }
1390- else if ($isInstanceOf(av, "SetScriptTransaction"))
1634+ else if ($isInstanceOf(gm, "SetScriptTransaction"))
13911635 then {
1392- let dZ = av
1393- let gU = blake2b256(value(dZ.script))
1394- let gV = fromBase64String(value(getString(aD, ao())))
1395- let gW = scriptHash(this)
1396- if (if ((gV == gU))
1397- then (gW != gU)
1636+ let dM = gm
1637+ let hY = blake2b256(value(dM.script))
1638+ let hZ = fromBase64String(value(getString(aM, az())))
1639+ let ia = scriptHash(this)
1640+ if (if ((hZ == hY))
1641+ then (ia != hY)
13981642 else false)
13991643 then true
1400- else sigVerify(gN.bodyBytes, gN.proofs[0], gP)
1644+ else sigVerify(hR.bodyBytes, hR.proofs[0], hT)
14011645 }
1402- else sigVerify(gN.bodyBytes, gN.proofs[0], gP)
1646+ else sigVerify(hR.bodyBytes, hR.proofs[0], hT)
14031647 }
14041648
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
18-let h = toBigInt((a - ((a * 1) / a)))
18+let h = toBigInt(3)
1919
20-let i = "WAVES"
20+let i = toBigInt(4)
2121
22-let j = "100"
22+let j = toBigInt((a - ((a * 1) / a)))
2323
24-let k = "1"
24+let k = "WAVES"
2525
26-let l = "__"
26+let l = "100"
2727
28-let m = ""
28+let m = "1"
2929
30-let n = 1
30+let n = "__"
3131
32-let o = 2
32+let o = ""
3333
34-let p = 3
34+let p = 1
3535
36-let q = 4
36+let q = 2
3737
38-let r = 1
38+let r = 3
3939
40-let s = 2
40+let s = 4
4141
42-let t = 3
42+let t = 1
4343
44-let u = 4
44+let u = 2
4545
46-let v = 5
46+let v = 3
4747
48-let w = 6
48+let w = 4
4949
50-let x = 7
50+let x = 5
5151
52-let y = 8
52+let y = 6
5353
54-let z = 9
54+let z = 7
5555
56-let A = 1
56+let A = 8
5757
58-let B = 6
58+let B = 9
5959
60-let C = 7
60+let C = 1
6161
62-let D = 10
62+let D = 6
6363
64-let E = fraction(10, a, 10000)
64+let E = 7
6565
66-func F (G,H) = fraction(toBigInt(G), c, toBigInt(H))
66+let F = 10
67+
68+let G = fraction(10, a, 10000)
69+
70+func H (I,J) = fraction(toBigInt(I), c, toBigInt(J))
6771
6872
69-func I (J,K) = toInt(fraction(J, toBigInt(K), c))
73+func K (L,M) = toInt(fraction(L, toBigInt(M), c))
7074
7175
72-func L (M,N,O) = fraction(M, N, O)
76+func N (L,M,O) = toInt(fraction(L, toBigInt(M), c, O))
7377
7478
75-func P (J) = if ((d > J))
76- then -(J)
77- else J
79+func P (Q,R,S) = fraction(Q, R, S)
7880
7981
80-func Q (J) = if ((d > J))
81- then -(J)
82- else J
82+func T (L) = if ((d > L))
83+ then -(L)
84+ else L
8385
8486
85-func R () = "%s__factoryContract"
87+func U (L) = if ((d > L))
88+ then -(L)
89+ else L
8690
8791
88-func S () = "%s__managerPublicKey"
92+func V () = "%s__factoryContract"
8993
9094
91-func T () = "%s__pendingManagerPublicKey"
95+func W () = "%s__managerPublicKey"
9296
9397
94-func U () = "%s%s__price__last"
98+func X () = "%s__pendingManagerPublicKey"
9599
96100
97-func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], l)
101+func Y () = "%s%s__price__last"
98102
99103
100-func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
104+func Z (aa,ab) = makeString(["%s%s%d%d__price__history", toString(aa), toString(ab)], n)
101105
102106
103-func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
107+func ac (ad,ae) = ((("%s%s%s__P__" + ad) + "__") + ae)
104108
105109
106-func ac () = "%s__amountAsset"
110+func af (ad,ae) = ((("%s%s%s__G__" + ad) + "__") + ae)
107111
108112
109-func ad () = "%s__priceAsset"
113+func ag () = "%s__amountAsset"
110114
111115
112-func ae () = "%s__amp"
116+func ah () = "%s__priceAsset"
113117
114118
115-func af () = "%s__addonAddr"
119+func ai () = "%s__amp"
116120
117121
118-func ag () = "%s__factoryConfig"
122+func aj () = "%s__addonAddr"
119123
120124
121-func ah () = "%s%s__matcher__publicKey"
125+let ak = "%s__fee"
126+
127+let al = valueOrElse(getInteger(this, ak), G)
128+
129+let am = makeString(["%s", "dLp"], n)
130+
131+let an = makeString(["%s", "dLpRefreshedHeight"], n)
132+
133+let ao = makeString(["%s", "refreshDLpDelay"], n)
134+
135+let ap = 1
136+
137+let aq = valueOrElse(getInteger(this, ao), ap)
138+
139+func ar () = "%s__factoryConfig"
122140
123141
124-func ai (aj,ak) = (((("%d%d%s__" + aj) + "__") + ak) + "__config")
142+func as () = "%s%s__matcher__publicKey"
125143
126144
127-func al (am) = ("%s%s%s__mappings__baseAsset2internalId__" + am)
145+func at (au,av) = (((("%d%d%s__" + au) + "__") + av) + "__config")
128146
129147
130-func an () = "%s__shutdown"
148+func aw (ax) = ("%s%s%s__mappings__baseAsset2internalId__" + ax)
131149
132150
133-func ao () = "%s__allowedLpStableScriptHash"
151+func ay () = "%s__shutdown"
134152
135153
136-func ap () = "%s__feeCollectorAddress"
154+func az () = "%s__allowedLpStableScriptHash"
137155
138156
139-func aq (ar,as,at) = throw(((((("Failed: ordValid=" + toString(ar)) + " sndrValid=") + toString(as)) + " mtchrValid=") + toString(at)))
157+func aA () = "%s__feeCollectorAddress"
140158
141159
142-func au (J) = {
143- let av = J
144- if ($isInstanceOf(av, "String"))
145- then {
146- let aw = av
147- aw
148- }
149- else throw("fail cast to String")
160+func aB (aC,aD,aE) = throw(((((("Failed: ordValid=" + toString(aC)) + " sndrValid=") + toString(aD)) + " mtchrValid=") + toString(aE)))
161+
162+
163+func aF (aG,aH) = valueOrErrorMessage(getString(aG, aH), makeString(["mandatory ", toString(aG), ".", aH, " not defined"], ""))
164+
165+
166+func aI (aG,aH) = valueOrErrorMessage(getInteger(aG, aH), makeString(["mandatory ", toString(aG), ".", aH, " not defined"], ""))
167+
168+
169+func aJ (aK) = throw(makeString(["lp_stable.ride:", aK], " "))
170+
171+
172+func aL (aK) = makeString(["lp_stable.ride:", aK], " ")
173+
174+
175+let aM = addressFromStringValue(aF(this, V()))
176+
177+let aN = {
178+ let aO = invoke(aM, "getInFeeREADONLY", [toString(this)], nil)
179+ if ($isInstanceOf(aO, "Int"))
180+ then aO
181+ else throw(($getType(aO) + " couldn't be cast to Int"))
182+ }
183+
184+let aP = {
185+ let aO = invoke(aM, "getOutFeeREADONLY", [toString(this)], nil)
186+ if ($isInstanceOf(aO, "Int"))
187+ then aO
188+ else throw(($getType(aO) + " couldn't be cast to Int"))
189+ }
190+
191+let aQ = aF(this, ai())
192+
193+func aR () = valueOrElse(getBoolean(aM, ay()), false)
194+
195+
196+func aS () = fromBase58String(aF(aM, as()))
197+
198+
199+let aT = addressFromStringValue(aF(aM, aA()))
200+
201+func aU () = {
202+ let aV = aF(this, ag())
203+ let aW = aF(this, ah())
204+ let aX = aI(aM, aw(aW))
205+ let au = aI(aM, aw(aV))
206+ split(aF(aM, at(toString(au), toString(aX))), n)
150207 }
151208
152209
153-func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
210+func aY (aZ) = if ((aZ == k))
211+ then unit
212+ else fromBase58String(aZ)
154213
155214
156-func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
215+func ba (aZ) = if ((aZ == unit))
216+ then k
217+ else toBase58String(value(aZ))
157218
158219
159-func aB (aC) = throw(makeString(["lp_stable.ride:", aC], " "))
220+func bb (bc) = $Tuple9(addressFromStringValue(bc[t]), parseIntValue(bc[u]), fromBase58String(bc[v]), aY(bc[w]), aY(bc[x]), parseIntValue(bc[y]), parseIntValue(bc[z]), fromBase58String(bc[A]), fromBase58String(bc[B]))
160221
161222
162-let aD = addressFromStringValue(ax(this, R()))
223+let bd = bb(aU())
163224
164-let aE = {
165- let aF = invoke(aD, "getInFeeREADONLY", [toString(this)], nil)
166- if ($isInstanceOf(aF, "Int"))
167- then aF
168- else throw(($getType(aF) + " couldn't be cast to Int"))
169- }
225+let be = bd
170226
171-let aG = {
172- let aF = invoke(aD, "getOutFeeREADONLY", [toString(this)], nil)
173- if ($isInstanceOf(aF, "Int"))
174- then aF
175- else throw(($getType(aF) + " couldn't be cast to Int"))
176- }
227+let bf = be._1
177228
178-let aH = ax(this, ae())
229+let bg = be._2
179230
180-func aI () = valueOrElse(getBoolean(aD, an()), false)
231+let bh = be._3
232+
233+let bi = be._4
234+
235+let bj = be._5
236+
237+let bk = be._6
238+
239+let bl = be._7
240+
241+let bm = be._8
242+
243+let bn = be._9
244+
245+func bo () = split(aF(aM, ar()), n)
181246
182247
183-func aJ () = fromBase58String(ax(aD, ah()))
248+let bp = bo()
249+
250+let bq = valueOrErrorMessage(addressFromString(bp[C]), "Invalid staking contract address")
251+
252+let br = valueOrErrorMessage(addressFromString(bp[E]), "Invalid slipage contract address")
253+
254+let bs = valueOrErrorMessage(addressFromString(bp[F]), "Invalid gwx contract address")
255+
256+let bt = valueOrErrorMessage(addressFromString(bp[D]), "Invalid gwx contract address")
257+
258+func bu (bv,bw,bx,by,bz,bA,bB,bC,bD,bE) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA), toString(bB), toString(bC), toString(bD), toString(bE)], n)
184259
185260
186-let aK = addressFromStringValue(ax(aD, ap()))
261+func bF (bG,bH,bI,by,bB,bC) = makeString(["%d%d%d%d%d%d", toString(bG), toString(bH), toString(bI), toString(by), toString(bB), toString(bC)], n)
187262
188-func aL () = {
189- let aM = ax(this, ac())
190- let aN = ax(this, ad())
191- let aO = aA(aD, al(aN))
192- let aj = aA(aD, al(aM))
193- split(ax(aD, ai(toString(aj), toString(aO))), l)
263+
264+func bJ (bK) = if ((bK == "WAVES"))
265+ then wavesBalance(this).available
266+ else assetBalance(this, fromBase58String(bK))
267+
268+
269+func bL (bM,bN) = fraction(bM, c, bN)
270+
271+
272+func bO (bM,bN,O) = fraction(bM, c, bN, O)
273+
274+
275+func bP (bQ,bR,bS) = {
276+ let bT = fraction((bQ - bR), b, bR)
277+ let bU = ((bS - T(bT)) > d)
278+ if (!(bU))
279+ then throw(("Big slpg: " + toString(bT)))
280+ else $Tuple2(bU, min([bQ, bR]))
194281 }
195282
196283
197-func aP (aQ) = if ((aQ == i))
198- then unit
199- else fromBase58String(aQ)
200-
201-
202-func aR (aQ) = if ((aQ == unit))
203- then i
204- else toBase58String(value(aQ))
205-
206-
207-func aS (aT) = $Tuple7(addressFromStringValue(aT[r]), parseIntValue(aT[s]), fromBase58String(aT[t]), aP(aT[u]), aP(aT[v]), parseIntValue(aT[w]), parseIntValue(aT[x]))
208-
209-
210-let aU = aS(aL())
211-
212-let aV = aU
213-
214-let aW = aV._1
215-
216-let aX = aV._2
217-
218-let aY = aV._3
219-
220-let aZ = aV._4
221-
222-let ba = aV._5
223-
224-let bb = aV._6
225-
226-let bc = aV._7
227-
228-func bd () = split(ax(aD, ag()), l)
229-
230-
231-let be = bd()
232-
233-let bf = valueOrErrorMessage(addressFromString(be[A]), "Invalid staking contract address")
234-
235-let bg = valueOrErrorMessage(addressFromString(be[C]), "Invalid slipage contract address")
236-
237-let bh = valueOrErrorMessage(addressFromString(be[D]), "Invalid gwx contract address")
238-
239-let bi = valueOrErrorMessage(addressFromString(be[B]), "Invalid gwx contract address")
240-
241-func bj (bk,bl,bm,bn,bo,bp,bq,br,bs,bt) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt)], l)
242-
243-
244-func bu (bv,bw,bx,bn,bq,br) = makeString(["%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(bn), toString(bq), toString(br)], l)
245-
246-
247-func by (bz) = if ((bz == "WAVES"))
248- then wavesBalance(this).available
249- else assetBalance(this, fromBase58String(bz))
250-
251-
252-func bA (bB,bC) = fraction(bB, c, bC)
253-
254-
255-func bD (bE,bF,bG) = {
256- let bH = fraction((bE - bF), b, bF)
257- let bI = ((bG - P(bH)) > d)
258- if (!(bI))
259- then throw(("Big slpg: " + toString(bH)))
260- else $Tuple2(bI, min([bE, bF]))
284+func bV (bW,bX,bY) = {
285+ let bT = fraction(bX, b, bW)
286+ let bZ = (bY > bT)
287+ if (if (bZ)
288+ then true
289+ else (bX > bW))
290+ then throw(((((((toString(bX) + " ") + toString(bW)) + " ") + toString(bT)) + " ") + toString(bY)))
291+ else bZ
261292 }
262293
263294
264-func bJ (bK,bL,bM) = {
265- let bH = fraction(bL, b, bK)
266- let bN = (bM > bH)
267- if (if (bN)
268- then true
269- else (bL > bK))
270- then throw(((((((toString(bL) + " ") + toString(bK)) + " ") + toString(bH)) + " ") + toString(bM)))
271- else bN
295+func ca (cb,cc,cd,ce) = {
296+ let cf = H(cd, cb)
297+ let cg = H(ce, cc)
298+ bL(cg, cf)
272299 }
273300
274301
275-func bO (bP,bQ,bR,bS) = {
276- let bT = F(bR, bP)
277- let bU = F(bS, bQ)
278- bA(bU, bT)
302+func ch (cd,ce,ci) = {
303+ let cj = bk
304+ let ck = bl
305+ let cl = ca(cj, ck, cd, ce)
306+ let bN = H(cd, cj)
307+ let bM = H(ce, ck)
308+ let cm = H(ci, a)
309+ let cn = bL(bN, cm)
310+ let co = bL(bM, cm)
311+[cl, cn, co]
279312 }
280313
281314
282-func bV (bR,bS,bW) = {
283- let bX = aL()
284- let bY = parseIntValue(bX[w])
285- let bZ = parseIntValue(bX[x])
286- let ca = bO(bY, bZ, bR, bS)
287- let bC = F(bR, bY)
288- let bB = F(bS, bZ)
289- let cb = F(bW, a)
290- let cc = bA(bC, cb)
291- let cd = bA(bB, cb)
292-[ca, cc, cd]
315+func cp (cd,ce,ci) = {
316+ let cq = ch(cd, ce, ci)
317+[K(cq[0], a), K(cq[1], a), K(cq[2], a)]
293318 }
294319
295320
296-func ce (bR,bS,bW) = {
297- let cf = bV(bR, bS, bW)
298-[I(cf[0], a), I(cf[1], a), I(cf[2], a)]
321+func cr (cs,al) = {
322+ let ct = if ((al == 0))
323+ then 0
324+ else fraction(cs, al, a)
325+ $Tuple2((cs - ct), ct)
299326 }
300327
301328
302-func cg (ch,ci) = {
303- let cj = if ((ci == 0))
304- then 0
305- else fraction(ch, ci, a)
306- $Tuple2((ch - cj), cj)
307- }
308-
309-
310-func ck (cl,cm,cn,co) = {
311- let bX = aL()
312- let cp = bX[t]
313- let cq = bX[u]
314- let cr = bX[v]
315- let cs = parseIntValue(bX[w])
316- let ct = parseIntValue(bX[x])
317- let cu = bX[s]
318- let cv = valueOrErrorMessage(assetInfo(fromBase58String(cp)), "Wrong LP id").quantity
319- if ((cp != cm))
329+func cu (cv,cw,cx,cy) = {
330+ let cz = bh
331+ let cA = toBase58String(value(bi))
332+ let cB = toBase58String(value(bj))
333+ let cC = bk
334+ let cD = bl
335+ let cE = toString(bg)
336+ let cF = valueOrErrorMessage(assetInfo(cz), "Wrong LP id").quantity
337+ if ((toBase58String(cz) != cw))
320338 then throw("Wrong pmt asset")
321339 else {
322- let cw = by(cq)
323- let cx = F(cw, cs)
324- let cy = by(cr)
325- let cz = F(cy, ct)
326- let cA = bA(cz, cx)
327- let cB = I(cA, a)
328- let cC = F(cn, a)
329- let cD = F(cv, a)
330- let cE = fraction(cx, cC, cD)
331- let cF = fraction(cz, cC, cD)
332- let cG = I(cE, cs)
333- let cH = I(cF, ct)
334- let cI = if ((cl == ""))
340+ let cG = bJ(cA)
341+ let cH = H(cG, cC)
342+ let cI = bJ(cB)
343+ let cJ = H(cI, cD)
344+ let cK = bL(cJ, cH)
345+ let cL = K(cK, a)
346+ let cM = H(cx, a)
347+ let cN = H(cF, a)
348+ let cO = fraction(cH, cM, cN)
349+ let cP = fraction(cJ, cM, cN)
350+ let cQ = N(cO, cC, FLOOR)
351+ let cR = N(cP, cD, FLOOR)
352+ let cS = if ((cv == ""))
335353 then nil
336- else [ScriptTransfer(co, cG, if ((cq == "WAVES"))
354+ else [ScriptTransfer(cy, cQ, if ((cA == "WAVES"))
337355 then unit
338- else fromBase58String(cq)), ScriptTransfer(co, cH, if ((cr == "WAVES"))
356+ else fromBase58String(cA)), ScriptTransfer(cy, cR, if ((cB == "WAVES"))
339357 then unit
340- else fromBase58String(cr)), StringEntry(ab(toString(co), cl), bu(cG, cH, cn, cB, height, lastBlock.timestamp)), IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB)]
341- $Tuple10(cG, cH, cq, cr, cw, cy, cv, cA, cu, cI)
358+ else fromBase58String(cB)), StringEntry(af(toString(cy), cv), bF(cQ, cR, cx, cL, height, lastBlock.timestamp)), IntegerEntry(Y(), cL), IntegerEntry(Z(height, lastBlock.timestamp), cL)]
359+ $Tuple10(cQ, cR, cA, cB, cG, cI, cF, cK, cE, cS)
342360 }
343361 }
344362
345363
346-func cJ (cl,bG,cK,cL,cM,cN,co,cO,cP,cQ,cR,cS,cT) = {
347- let bX = aL()
348- let cp = fromBase58String(bX[t])
349- let cU = bX[u]
350- let cV = bX[v]
351- let cW = bX[y]
352- let cX = bX[z]
353- let cY = parseIntValue(bX[w])
354- let cZ = parseIntValue(bX[x])
355- let cu = bX[s]
356- let da = valueOrErrorMessage(assetInfo(cp), "Wr lp as").quantity
357- let cw = if (cO)
358- then by(cU)
359- else if (if (cQ)
360- then (cT == cU)
364+func cT (cv,bS,cU,cV,cW,cX,cy,cY,cZ,da,db,dc,dd) = {
365+ let cz = bh
366+ let de = toBase58String(value(bi))
367+ let df = toBase58String(value(bj))
368+ let dg = bm
369+ let dh = bn
370+ let di = bk
371+ let dj = bl
372+ let cE = toString(bg)
373+ let dk = valueOrErrorMessage(assetInfo(cz), "Wr lp as").quantity
374+ let cG = if (cY)
375+ then bJ(de)
376+ else if (if (da)
377+ then (dd == de)
361378 else false)
362- then (by(cU) - cS)
363- else if (cQ)
364- then by(cU)
365- else (by(cU) - cK)
366- let cy = if (cO)
367- then by(cV)
368- else if (if (cQ)
369- then (cT == cV)
379+ then (bJ(de) - dc)
380+ else if (da)
381+ then bJ(de)
382+ else (bJ(de) - cU)
383+ let cI = if (cY)
384+ then bJ(df)
385+ else if (if (da)
386+ then (dd == df)
370387 else false)
371- then (by(cV) - cS)
372- else if (cQ)
373- then by(cV)
374- else (by(cV) - cM)
375- let db = F(cK, cY)
376- let dc = F(cM, cZ)
377- let dd = bA(dc, db)
378- let cx = F(cw, cY)
379- let cz = F(cy, cZ)
380- let de = if ((da == 0))
388+ then (bJ(df) - dc)
389+ else if (da)
390+ then bJ(df)
391+ else (bJ(df) - cW)
392+ let dl = H(cU, di)
393+ let dm = H(cW, dj)
394+ let dn = bL(dm, dl)
395+ let cH = H(cG, di)
396+ let cJ = H(cI, dj)
397+ let do = if ((dk == 0))
381398 then {
382- let cA = d
383- let df = d
384- let cb = pow((db * dc), 0, toBigInt(5), 1, 0, DOWN)
385- $Tuple5(I(cb, a), I(db, cY), I(dc, cZ), bA((cz + dc), (cx + db)), df)
399+ let cK = d
400+ let dp = d
401+ let cm = pow((dl * dm), 0, toBigInt(5), 1, 0, DOWN)
402+ $Tuple5(K(cm, a), K(dl, di), K(dm, dj), bL((cJ + dm), (cH + dl)), dp)
386403 }
387404 else {
388- let cA = bA(cz, cx)
389- let dg = fraction(P((cA - dd)), c, cA)
390- let df = F(bG, a)
391- if (if (if (cR)
392- then (cA != d)
405+ let cK = bL(cJ, cH)
406+ let dq = fraction(T((cK - dn)), c, cK)
407+ let dp = H(bS, a)
408+ if (if (if (db)
409+ then (cK != d)
393410 else false)
394- then (dg > df)
411+ then (dq > dp)
395412 else false)
396- then throw(((("Price slippage " + toString(dg)) + " > ") + toString(df)))
413+ then throw(((("Price slippage " + toString(dq)) + " > ") + toString(dp)))
397414 else {
398- let dh = F(da, a)
399- let di = fraction(db, cA, c)
400- let dj = fraction(dc, c, cA)
401- let dk = if ((di > dc))
402- then $Tuple2(dj, dc)
403- else $Tuple2(db, di)
404- let dl = dk._1
405- let dm = dk._2
406- let cb = fraction(dh, dm, cz)
407- $Tuple5(I(cb, a), I(dl, cY), I(dm, cZ), cA, df)
415+ let dr = H(dk, a)
416+ let ds = fraction(dl, bO(cJ, cH, FLOOR), c, FLOOR)
417+ let dt = fraction(dm, c, bO(cJ, cH, FLOOR), FLOOR)
418+ let du = if ((ds > dm))
419+ then $Tuple2(dt, dm)
420+ else $Tuple2(dl, ds)
421+ let dv = du._1
422+ let dw = du._2
423+ let cm = fraction(dr, dw, cJ, FLOOR)
424+ $Tuple5(N(cm, a, FLOOR), N(dv, di, CEILING), N(dw, dj, CEILING), cK, dp)
408425 }
409426 }
410- let dn = de._1
411- let do = de._2
412- let dp = de._3
413- let cB = I(de._4, a)
414- let dq = I(de._5, a)
415- if ((0 >= dn))
427+ let dx = do._1
428+ let dy = do._2
429+ let dz = do._3
430+ let cL = K(do._4, a)
431+ let dA = K(do._5, a)
432+ if ((0 >= dx))
416433 then throw("LP <= 0")
417434 else {
418- let dr = if (!(cP))
435+ let dB = if (!(cZ))
419436 then 0
420- else dn
421- let ds = (cK - do)
422- let dt = (cM - dp)
423- let du = if (if (cQ)
424- then (cT == cU)
437+ else dx
438+ let dC = (cU - dy)
439+ let dD = (cW - dz)
440+ let dE = if (if (da)
441+ then (dd == de)
425442 else false)
426- then $Tuple2(cS, 0)
427- else if (if (cQ)
428- then (cT == cV)
443+ then $Tuple2(dc, 0)
444+ else if (if (da)
445+ then (dd == df)
429446 else false)
430- then $Tuple2(0, cS)
431- else $Tuple2(do, dp)
432- let dv = du._1
433- let dw = du._2
434- let dx = [IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB), StringEntry(Y(co, cl), bj(dv, dw, dr, cB, bG, dq, height, lastBlock.timestamp, ds, dt))]
435- $Tuple13(dn, dr, cB, cw, cy, da, cp, cu, dx, ds, dt, cL, cN)
447+ then $Tuple2(0, dc)
448+ else $Tuple2(dy, dz)
449+ let dF = dE._1
450+ let dG = dE._2
451+ let dH = [IntegerEntry(Y(), cL), IntegerEntry(Z(height, lastBlock.timestamp), cL), StringEntry(ac(cy, cv), bu(dF, dG, dB, cL, bS, dA, height, lastBlock.timestamp, dC, dD))]
452+ $Tuple13(dx, dB, cL, cG, cI, dk, cz, cE, dH, dC, dD, cV, cX)
436453 }
437454 }
438455
439456
440-func dy (dz) = {
441- let bX = aL()
442- let dA = bX[u]
443- let dB = bX[v]
444- let cu = parseIntValue(bX[s])
445- let bY = parseIntValue(bX[w])
446- let bZ = parseIntValue(bX[x])
447- let dC = by(dA)
448- let dD = by(dB)
449- let cA = if ((dz.orderType == Buy))
450- then bO(bY, bZ, (dC + dz.amount), dD)
451- else bO(bY, bZ, (dC - dz.amount), dD)
452- let cB = I(cA, a)
453- if (if (if (aI())
454- then true
455- else (cu == p))
456- then true
457- else (cu == q))
458- then throw("Admin blocked")
457+func dI (dJ) = {
458+ let dK = dJ[0]
459+ let dL = dJ[1]
460+ let dM = (dK + dL)
461+ if ((dM == e))
462+ then e
459463 else {
460- let dE = dz.assetPair.amountAsset
461- let dF = if ((dE == unit))
462- then "WAVES"
463- else toBase58String(value(dE))
464- let dG = dz.assetPair.priceAsset
465- let dH = if ((dG == unit))
466- then "WAVES"
467- else toBase58String(value(dG))
468- if (if ((dF != dA))
469- then true
470- else (dH != dB))
471- then throw("Wr assets")
464+ let dN = parseIntValue(aQ)
465+ let dO = (dN * 2)
466+ let cq = fraction(dK, dL, f)
467+ let dP = fraction(cq, i, f)
468+ let dQ = fraction(toBigInt(dO), dM, f)
469+ let dR = toBigInt((dO - 1))
470+ func dS (dT) = {
471+ let dU = fraction(dT, dT, f)
472+ let dV = fraction(dU, dT, f)
473+ let dW = fraction(dV, f, dP)
474+ fraction((dQ + fraction(dW, g, f)), dT, (fraction(dR, dT, f) + fraction(h, dW, f)), CEILING)
475+ }
476+
477+ func dX (dY,dZ) = if (dY._2)
478+ then dY
472479 else {
473- let dI = dz.price
474- let cZ = fraction(a, bZ, bY)
475- let dJ = L(dI, a, cZ)
476- let dK = if ((dz.orderType == Buy))
477- then (cB >= dJ)
478- else (dJ >= cB)
479- true
480+ let dT = dY._1
481+ let ea = dS(dT)
482+ let eb = toInt((ea - value(dT)))
483+ let ec = if ((0 > eb))
484+ then -(eb)
485+ else eb
486+ if ((1 >= ec))
487+ then $Tuple2(ea, true)
488+ else $Tuple2(ea, false)
480489 }
490+
491+ let ed = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
492+ let ee = {
493+ let ef = ed
494+ let eg = size(ef)
495+ let eh = $Tuple2(dM, false)
496+ func ei (ej,ek) = if ((ek >= eg))
497+ then ej
498+ else dX(ej, ef[ek])
499+
500+ func el (ej,ek) = if ((ek >= eg))
501+ then ej
502+ else throw("List size exceeds 15")
503+
504+ el(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(eh, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
505+ }
506+ let dT = ee._1
507+ let em = ee._2
508+ if (em)
509+ then dT
510+ else throw(("D calculation error, D = " + toString(dT)))
481511 }
482512 }
483513
484514
485-func dL (dM) = if ((size(dM.payments) != 1))
486- then throw("1 pmnt exp")
487- else {
488- let dN = value(dM.payments[0])
489- let cm = value(dN.assetId)
490- let cS = dN.amount
491- let de = ck(toBase58String(dM.transactionId), toBase58String(cm), cS, dM.caller)
492- let cG = de._1
493- let cH = de._2
494- let cu = parseIntValue(de._9)
495- let cI = de._10
496- if (if (aI())
497- then true
498- else (cu == q))
499- then throw(("Admin blocked: " + toString(cu)))
500- else $Tuple5(cG, cH, cS, cm, cI)
501- }
502-
503-
504-func dO (dP,aa,dQ,dR,bG,cP,cQ,cR,cS,cT) = {
505- let de = cJ(aa, bG, value(dQ).amount, value(dQ).assetId, value(dR).amount, value(dR).assetId, dP, (aa == ""), cP, cQ, cR, cS, cT)
506- let cu = parseIntValue(de._8)
507- if (if (if (aI())
508- then true
509- else (cu == o))
510- then true
511- else (cu == q))
512- then throw(("Blocked:" + toString(cu)))
513- else de
514- }
515-
516-
517-func dS (dT) = {
518- let dU = g
519- let dV = dT[0]
520- let dW = dT[1]
521- let dX = parseBigIntValue(j)
522- let dY = (parseBigIntValue(aH) * dX)
523- let dZ = (dV + dW)
524- if ((dZ == e))
515+func en (dJ) = {
516+ let eo = g
517+ let dK = dJ[0]
518+ let dL = dJ[1]
519+ let ep = parseBigIntValue(l)
520+ let dN = (parseBigIntValue(aQ) * ep)
521+ let dM = (dK + dL)
522+ if ((dM == e))
525523 then e
526524 else {
527- let ea = (dY * dU)
528- let eb = (((dV * dW) * dU) * dU)
529- let ec = ((ea * dZ) / dX)
530- let ed = (ea - dX)
531- let ee = (dU + f)
532- func ef (eg,eh) = {
533- let ei = eg
534- let ej = ei._1
535- let ek = ei._2
536- if ((ek != unit))
537- then eg
525+ let dO = (dN * eo)
526+ let dP = (((dK * dL) * eo) * eo)
527+ let eq = ((dO * dM) / ep)
528+ let er = (dO - ep)
529+ let es = (eo + f)
530+ func dX (dY,et) = {
531+ let eu = dY
532+ let dT = eu._1
533+ let em = eu._2
534+ if ((em != unit))
535+ then dY
538536 else {
539- let el = (((ej * ej) * ej) / eb)
540- let em = (((ec + (el * dU)) * ej) / (((ed * ej) / dX) + (ee * el)))
541- let en = Q((em - value(ej)))
542- if ((f >= en))
543- then $Tuple2(em, eh)
544- else $Tuple2(em, unit)
537+ let dW = (((dT * dT) * dT) / dP)
538+ let ea = (((eq + (dW * eo)) * dT) / (((er * dT) / ep) + (es * dW)))
539+ let ec = U((ea - value(dT)))
540+ if ((f >= ec))
541+ then $Tuple2(ea, et)
542+ else $Tuple2(ea, unit)
545543 }
546544 }
547545
548- let eo = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
549- let ep = {
550- let eq = eo
551- let er = size(eq)
552- let es = $Tuple2(dZ, unit)
553- func et (eu,ev) = if ((ev >= er))
554- then eu
555- else ef(eu, eq[ev])
546+ let ed = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
547+ let ev = {
548+ let ef = ed
549+ let eg = size(ef)
550+ let eh = $Tuple2(dM, unit)
551+ func ei (ej,ek) = if ((ek >= eg))
552+ then ej
553+ else dX(ej, ef[ek])
556554
557- func ew (eu,ev) = if ((ev >= er))
558- then eu
555+ func el (ej,ek) = if ((ek >= eg))
556+ then ej
559557 else throw("List size exceeds 15")
560558
561- ew(et(et(et(et(et(et(et(et(et(et(et(et(et(et(et(es, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
559+ el(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(eh, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
562560 }
563- let ej = ep._1
564- let ek = ep._2
565- if ((ek != unit))
566- then ej
567- else throw(("D calculation error, D = " + toString(ej)))
561+ let dT = ev._1
562+ let em = ev._2
563+ if ((em != unit))
564+ then dT
565+ else throw(("D calculation error, D = " + toString(dT)))
568566 }
569567 }
570568
571569
572-func ex (dT,dM,ey) = {
573- let dU = g
574- let ez = dT[if ((dM == 0))
570+func ew (dJ,dZ,ex) = {
571+ let eo = g
572+ let ey = dJ[if ((dZ == 0))
575573 then 1
576574 else 0]
577- let dX = parseBigIntValue(j)
578- let dY = (parseBigIntValue(aH) * dX)
579- let dZ = ez
580- let ea = (dY * dU)
581- let eA = (((((ey * ey) / (ez * dU)) * ey) * dX) / (ea * dU))
582- let eB = ((dZ + ((ey * dX) / ea)) - ey)
583- func ef (eg,eh) = {
584- let eC = eg
585- let eD = eC._1
586- let ek = eC._2
587- if ((ek != unit))
588- then eg
575+ let ep = parseBigIntValue(l)
576+ let dN = (parseBigIntValue(aQ) * ep)
577+ let dM = ey
578+ let dO = (dN * eo)
579+ let ez = (((((ex * ex) / (ey * eo)) * ex) * ep) / (dO * eo))
580+ let eA = ((dM + ((ex * ep) / dO)) - ex)
581+ func dX (dY,et) = {
582+ let eB = dY
583+ let eC = eB._1
584+ let em = eB._2
585+ if ((em != unit))
586+ then dY
589587 else {
590- let eE = (((eD * eD) + eA) / ((g * eD) + eB))
591- let eF = Q((eE - value(eD)))
592- if ((f >= eF))
593- then $Tuple2(eE, eh)
594- else $Tuple2(eE, unit)
588+ let eD = (((eC * eC) + ez) / ((g * eC) + eA))
589+ let eE = U((eD - value(eC)))
590+ if ((f >= eE))
591+ then $Tuple2(eD, et)
592+ else $Tuple2(eD, unit)
595593 }
596594 }
597595
598- let eo = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
599- let eG = {
600- let eq = eo
601- let er = size(eq)
602- let es = $Tuple2(ey, unit)
603- func et (eu,ev) = if ((ev >= er))
604- then eu
605- else ef(eu, eq[ev])
596+ let ed = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
597+ let eF = {
598+ let ef = ed
599+ let eg = size(ef)
600+ let eh = $Tuple2(ex, unit)
601+ func ei (ej,ek) = if ((ek >= eg))
602+ then ej
603+ else dX(ej, ef[ek])
606604
607- func ew (eu,ev) = if ((ev >= er))
608- then eu
605+ func el (ej,ek) = if ((ek >= eg))
606+ then ej
609607 else throw("List size exceeds 15")
610608
611- ew(et(et(et(et(et(et(et(et(et(et(et(et(et(et(et(es, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
609+ el(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(eh, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
612610 }
613- let eD = eG._1
614- let ek = eG._2
615- if ((ek != unit))
616- then eD
617- else throw(("Y calculation error, Y = " + toString(eD)))
611+ let eC = eF._1
612+ let em = eF._2
613+ if ((em != unit))
614+ then eC
615+ else throw(("Y calculation error, Y = " + toString(eC)))
618616 }
619617
620618
621-func eH (eI,cm,co,aa,eJ) = {
622- let aT = aL()
623- let cq = aT[u]
624- let cr = aT[v]
625- let cp = aT[t]
626- let cY = parseIntValue(aT[w])
627- let cZ = parseIntValue(aT[x])
628- let eK = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cp)), "invalid lp asset").quantity)
629- let eL = if ((eK > e))
619+func eG (eH,eI,eJ) = {
620+ let eK = fraction(dI([eH, eI]), c, eJ)
621+ if ((eJ == e))
622+ then e
623+ else eK
624+ }
625+
626+
627+func eL (eM,eN,eO) = {
628+ let eP = (toBigInt(bJ(ba(bi))) - eM)
629+ let eQ = (toBigInt(bJ(ba(bj))) - eN)
630+ let eR = (toBigInt(value(assetInfo(bh)).quantity) - eO)
631+ let eS = eG(eP, eQ, eR)
632+ eS
633+ }
634+
635+
636+func eT (eU,eV,eO) = {
637+ let eP = (bJ(ba(bi)) + eU)
638+ let eQ = (bJ(ba(bj)) + eV)
639+ let eR = (value(assetInfo(bh)).quantity + eO)
640+ let eK = eG(toBigInt(eP), toBigInt(eQ), toBigInt(eR))
641+ let eW = [IntegerEntry(an, height), StringEntry(am, toString(eK))]
642+ $Tuple2(eW, eK)
643+ }
644+
645+
646+func eX (eY,eK) = if ((eK >= eY))
647+ then true
648+ else aJ("updated DLp lower than current DLp")
649+
650+
651+func eZ (fa) = {
652+ let fb = fa.amount
653+ let fc = fraction(fa.amount, fa.price, a, FLOOR)
654+ let fd = if ((fa.orderType == Buy))
655+ then $Tuple2(fb, -(fc))
656+ else $Tuple2(-(fb), fc)
657+ let eU = fd._1
658+ let eV = fd._2
659+ if (if (if (aR())
660+ then true
661+ else (bg == r))
662+ then true
663+ else (bg == s))
664+ then throw("Admin blocked")
665+ else if (if ((fa.assetPair.amountAsset != bi))
666+ then true
667+ else (fa.assetPair.priceAsset != bj))
668+ then throw("Wr assets")
669+ else {
670+ let fe = parseBigIntValue(getStringValue(this, am))
671+ let ff = eT(eU, eV, 0)
672+ let fg = ff._1
673+ let fh = ff._2
674+ let fi = (fh >= fe)
675+ fi
676+ }
677+ }
678+
679+
680+func fj (dZ) = if ((size(dZ.payments) != 1))
681+ then throw("1 pmnt exp")
682+ else {
683+ let fk = value(dZ.payments[0])
684+ let cw = value(fk.assetId)
685+ let dc = fk.amount
686+ let do = cu(toBase58String(dZ.transactionId), toBase58String(cw), dc, dZ.caller)
687+ let cQ = do._1
688+ let cR = do._2
689+ let cE = parseIntValue(do._9)
690+ let cS = do._10
691+ if (if (aR())
692+ then true
693+ else (cE == s))
694+ then throw(("Admin blocked: " + toString(cE)))
695+ else $Tuple5(cQ, cR, dc, cw, cS)
696+ }
697+
698+
699+func fl (fm,ae,fn,fo,bS,cZ,da,db,dc,dd) = {
700+ let do = cT(ae, bS, value(fn).amount, value(fn).assetId, value(fo).amount, value(fo).assetId, fm, (ae == ""), cZ, da, db, dc, dd)
701+ let cE = parseIntValue(do._8)
702+ if (if (if (aR())
703+ then true
704+ else (cE == q))
705+ then true
706+ else (cE == s))
707+ then throw(("Blocked:" + toString(cE)))
708+ else do
709+ }
710+
711+
712+func fp (fq,cw,cy,ae,fr) = {
713+ let cA = toBase58String(value(bi))
714+ let cB = toBase58String(value(bj))
715+ let cz = bh
716+ let di = bk
717+ let dj = bl
718+ let eR = toBigInt(valueOrErrorMessage(assetInfo(cz), "invalid lp asset").quantity)
719+ let fs = if ((eR > e))
630720 then true
631721 else throw("initial deposit requires all coins")
632- if ((eL == eL))
722+ if ((fs == fs))
633723 then {
634- let cw = by(cq)
635- let cy = by(cr)
636- let eM = if ((aa == ""))
637- then $Tuple2(cw, cy)
638- else if ((cm == cq))
639- then if ((eI > cw))
724+ let cG = bJ(cA)
725+ let cI = bJ(cB)
726+ let ft = if ((ae == ""))
727+ then $Tuple2(cG, cI)
728+ else if ((cw == cA))
729+ then if ((fq > cG))
640730 then throw("invalid payment amount")
641- else $Tuple2((cw - eI), cy)
642- else if ((cm == cr))
643- then if ((eI > cy))
731+ else $Tuple2((cG - fq), cI)
732+ else if ((cw == cB))
733+ then if ((fq > cI))
644734 then throw("invalid payment amount")
645- else $Tuple2(cw, (cy - eI))
735+ else $Tuple2(cG, (cI - fq))
646736 else throw("wrong pmtAssetId")
647- let eN = eM._1
648- let eO = eM._2
649- let eP = if ((cm == cq))
650- then $Tuple2(eI, 0)
651- else if ((cm == cr))
652- then $Tuple2(0, eI)
737+ let fu = ft._1
738+ let fv = ft._2
739+ let fw = if ((cw == cA))
740+ then $Tuple2(fq, 0)
741+ else if ((cw == cB))
742+ then $Tuple2(0, fq)
653743 else throw("invalid payment")
654- let eQ = eP._1
655- let eR = eP._2
656- let eS = if (eJ)
657- then $Tuple3(cg(eQ, aE)._1, cg(eR, aE)._1, cg(eI, aE)._2)
658- else $Tuple3(eQ, eR, 0)
659- let eT = eS._1
660- let eU = eS._2
661- let cj = eS._3
662- let eV = (eN + eT)
663- let eW = (eO + eU)
664- let bL = dS([toBigInt(eN), toBigInt(eO)])
665- let bK = dS([toBigInt(eV), toBigInt(eW)])
666- let eX = if ((bK > bL))
744+ let fx = fw._1
745+ let fy = fw._2
746+ let fz = if (fr)
747+ then $Tuple3(cr(fx, aN)._1, cr(fy, aN)._1, cr(fq, aN)._2)
748+ else $Tuple3(fx, fy, 0)
749+ let fA = fz._1
750+ let fB = fz._2
751+ let ct = fz._3
752+ let fC = (fu + fA)
753+ let fD = (fv + fB)
754+ let bX = dI([toBigInt(fu), toBigInt(fv)])
755+ let bW = dI([toBigInt(fC), toBigInt(fD)])
756+ let fE = if ((bW > bX))
667757 then true
668758 else throw()
669- if ((eX == eX))
759+ if ((fE == fE))
670760 then {
671- let eY = fraction(eK, (bK - bL), bL)
672- let cB = I(bA(F(eW, cZ), F(eV, cY)), a)
673- let dx = [IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB), StringEntry(Y(co, aa), bj(eQ, eR, toInt(eY), cB, 0, 0, height, lastBlock.timestamp, 0, 0))]
674- let eZ = fraction(eO, a, eN)
675- let fa = fraction(eI, a, (eZ + a))
676- let fb = (eI - fa)
677- let fc = fraction(eK, toBigInt(fb), toBigInt(eO))
678- let fd = toInt(fraction((eY - fc), b, fc))
679- $Tuple4(toInt(eY), dx, cj, fd)
761+ let fF = fraction(eR, (bW - bX), bX, FLOOR)
762+ let cL = K(bL(H(fD, dj), H(fC, di)), a)
763+ let dH = [IntegerEntry(Y(), cL), IntegerEntry(Z(height, lastBlock.timestamp), cL), StringEntry(ac(cy, ae), bu(fx, fy, toInt(fF), cL, 0, 0, height, lastBlock.timestamp, 0, 0))]
764+ let fG = fraction(fv, a, fu)
765+ let fH = fraction(fq, a, (fG + a))
766+ let fI = (fq - fH)
767+ let fJ = fraction(eR, toBigInt(fI), toBigInt(fv))
768+ let fK = toInt(fraction((fF - fJ), b, fJ))
769+ $Tuple4(toInt(fF), dH, ct, fK)
680770 }
681771 else throw("Strict value is not equal to itself.")
682772 }
683773 else throw("Strict value is not equal to itself.")
684774 }
685775
686776
687-func fe (ff,fg,fh,dP,fi,fj) = {
688- let aT = aL()
689- let cp = aT[t]
690- let cq = aT[u]
691- let cr = aT[v]
692- let fk = parseIntValue(aT[w])
693- let fl = parseIntValue(aT[x])
694- let fm = aT[s]
695- let co = if ((dP == bi))
696- then fi
697- else dP
698- let dN = value(fh[0])
699- let cm = value(dN.assetId)
700- let cS = dN.amount
701- let cl = toBase58String(fj)
702- if ((cp != toBase58String(cm)))
703- then throw("Wrong LP")
704- else {
705- let cw = by(cq)
706- let cy = by(cr)
707- let fn = {
708- let aF = invoke(this, "getOneTknV2READONLY", [ff, cS], nil)
709- if ($isInstanceOf(aF, "(Int, Int)"))
710- then aF
711- else throw(($getType(aF) + " couldn't be cast to (Int, Int)"))
712- }
713- if ((fn == fn))
714- then {
715- let cj = fn._2
716- let fo = fn._1
717- let fp = if (if ((fg > 0))
718- then (fg > fo)
719- else false)
720- then aB(makeString(["amount to receive is less than ", toString(fg)], ""))
721- else fo
722- let fq = if ((ff == cq))
723- then $Tuple4(fp, 0, ((cw - fp) - cj), cy)
724- else if ((ff == cr))
725- then $Tuple4(0, fp, cw, ((cy - fp) - cj))
726- else throw("invalid out asset id")
727- let fr = fq._1
728- let fs = fq._2
729- let eV = fq._3
730- let eW = fq._4
731- let ft = bA(F(eW, fl), F(eV, fk))
732- let fu = I(ft, a)
733- let fv = if ((ff == "WAVES"))
734- then unit
735- else fromBase58String(ff)
736- let fw = if ((cj > 0))
737- then [ScriptTransfer(aK, cj, fv)]
738- else nil
739- let cI = ([ScriptTransfer(co, fp, fv), StringEntry(ab(toString(co), cl), bu(fr, fs, cS, fu, height, lastBlock.timestamp)), IntegerEntry(U(), fu), IntegerEntry(V(height, lastBlock.timestamp), fu)] ++ fw)
740- if ((cI == cI))
777+func fL (fM,fN,fO,fm,fP,fQ) = {
778+ let cz = toBase58String(value(bh))
779+ let cA = toBase58String(value(bi))
780+ let cB = toBase58String(value(bj))
781+ let fR = bk
782+ let fS = bl
783+ let fT = bg
784+ let cy = if ((fm == bt))
785+ then fP
786+ else fm
787+ let fk = value(fO[0])
788+ let cw = value(fk.assetId)
789+ let dc = fk.amount
790+ let eS = eL(e, e, e)
791+ if ((eS == eS))
792+ then {
793+ let cv = toBase58String(fQ)
794+ if ((cz != toBase58String(cw)))
795+ then throw("Wrong LP")
796+ else {
797+ let cG = bJ(cA)
798+ let cI = bJ(cB)
799+ let fU = {
800+ let aO = invoke(this, "getOneTknV2READONLY", [fM, dc], nil)
801+ if ($isInstanceOf(aO, "(Int, Int)"))
802+ then aO
803+ else throw(($getType(aO) + " couldn't be cast to (Int, Int)"))
804+ }
805+ if ((fU == fU))
741806 then {
742- let fx = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
743- if ((fx == fx))
744- then $Tuple2(cI, fp)
807+ let ct = fU._2
808+ let fV = fU._1
809+ let fW = if (if ((fN > 0))
810+ then (fN > fV)
811+ else false)
812+ then aJ(makeString(["amount to receive is less than ", toString(fN)], ""))
813+ else fV
814+ let fX = if ((fM == cA))
815+ then $Tuple4(fW, 0, ((cG - fW) - ct), cI)
816+ else if ((fM == cB))
817+ then $Tuple4(0, fW, cG, ((cI - fW) - ct))
818+ else throw("invalid out asset id")
819+ let fY = fX._1
820+ let fZ = fX._2
821+ let fC = fX._3
822+ let fD = fX._4
823+ let ga = bL(H(fD, fS), H(fC, fR))
824+ let gb = K(ga, a)
825+ let gc = if ((fM == "WAVES"))
826+ then unit
827+ else fromBase58String(fM)
828+ let gd = if ((ct > 0))
829+ then [ScriptTransfer(aT, ct, gc)]
830+ else nil
831+ let cS = ([ScriptTransfer(cy, fW, gc), StringEntry(af(toString(cy), cv), bF(fY, fZ, dc, gb, height, lastBlock.timestamp)), IntegerEntry(Y(), gb), IntegerEntry(Z(height, lastBlock.timestamp), gb)] ++ gd)
832+ if ((cS == cS))
833+ then {
834+ let ge = invoke(aM, "burn", [dc], [AttachedPayment(cw, dc)])
835+ if ((ge == ge))
836+ then {
837+ let gf = {
838+ let gg = if ((this == aT))
839+ then 0
840+ else ct
841+ let gh = if ((aY(fM) == bi))
842+ then true
843+ else false
844+ if (gh)
845+ then $Tuple2(-((fV + gg)), 0)
846+ else $Tuple2(0, -((fV + gg)))
847+ }
848+ let eU = gf._1
849+ let eV = gf._2
850+ let gi = eT(eU, eV, 0)
851+ let gj = gi._1
852+ let eK = gi._2
853+ let gk = eX(eS, eK)
854+ if ((gk == gk))
855+ then $Tuple2((cS ++ gj), fW)
856+ else throw("Strict value is not equal to itself.")
857+ }
858+ else throw("Strict value is not equal to itself.")
859+ }
745860 else throw("Strict value is not equal to itself.")
746861 }
747862 else throw("Strict value is not equal to itself.")
748863 }
749- else throw("Strict value is not equal to itself.")
750864 }
865+ else throw("Strict value is not equal to itself.")
751866 }
752867
753868
754-func fy () = {
755- let av = getString(S())
756- if ($isInstanceOf(av, "String"))
869+func gl () = {
870+ let gm = getString(W())
871+ if ($isInstanceOf(gm, "String"))
757872 then {
758- let dZ = av
759- fromBase58String(dZ)
873+ let dM = gm
874+ fromBase58String(dM)
760875 }
761- else if ($isInstanceOf(av, "Unit"))
876+ else if ($isInstanceOf(gm, "Unit"))
762877 then unit
763878 else throw("Match error")
764879 }
765880
766881
767-func fz () = {
768- let av = getString(T())
769- if ($isInstanceOf(av, "String"))
882+func gn () = {
883+ let gm = getString(X())
884+ if ($isInstanceOf(gm, "String"))
770885 then {
771- let dZ = av
772- fromBase58String(dZ)
886+ let dM = gm
887+ fromBase58String(dM)
773888 }
774- else if ($isInstanceOf(av, "Unit"))
889+ else if ($isInstanceOf(gm, "Unit"))
775890 then unit
776891 else throw("Match error")
777892 }
778893
779894
780-let fA = throw("Permission denied")
895+let go = throw("Permission denied")
781896
782-func fB (dM) = {
783- let av = fy()
784- if ($isInstanceOf(av, "ByteVector"))
897+func gp (dZ) = {
898+ let gm = gl()
899+ if ($isInstanceOf(gm, "ByteVector"))
785900 then {
786- let fC = av
787- (dM.callerPublicKey == fC)
901+ let gq = gm
902+ (dZ.callerPublicKey == gq)
788903 }
789- else if ($isInstanceOf(av, "Unit"))
790- then (dM.caller == this)
904+ else if ($isInstanceOf(gm, "Unit"))
905+ then (dZ.caller == this)
791906 else throw("Match error")
792907 }
793908
794909
795-func fD (dM) = {
796- let av = fy()
797- if ($isInstanceOf(av, "ByteVector"))
910+func gr (dZ) = {
911+ let gm = gl()
912+ if ($isInstanceOf(gm, "ByteVector"))
798913 then {
799- let fC = av
800- if ((dM.callerPublicKey == fC))
914+ let gq = gm
915+ if ((dZ.callerPublicKey == gq))
801916 then true
802- else fA
917+ else go
803918 }
804- else if ($isInstanceOf(av, "Unit"))
805- then if ((dM.caller == this))
919+ else if ($isInstanceOf(gm, "Unit"))
920+ then if ((dZ.caller == this))
806921 then true
807- else fA
922+ else go
808923 else throw("Match error")
809924 }
810925
811926
812-@Callable(dM)
813-func constructor (R) = {
814- let eA = fD(dM)
815- if ((eA == eA))
816- then [StringEntry(R(), R)]
927+@Callable(dZ)
928+func constructor (V) = {
929+ let ez = gr(dZ)
930+ if ((ez == ez))
931+ then [StringEntry(V(), V)]
817932 else throw("Strict value is not equal to itself.")
818933 }
819934
820935
821936
822-@Callable(dM)
823-func setManager (fE) = {
824- let eA = fD(dM)
825- if ((eA == eA))
937+@Callable(dZ)
938+func setManager (gs) = {
939+ let ez = gr(dZ)
940+ if ((ez == ez))
826941 then {
827- let fF = fromBase58String(fE)
828- if ((fF == fF))
829- then [StringEntry(T(), fE)]
942+ let gt = fromBase58String(gs)
943+ if ((gt == gt))
944+ then [StringEntry(X(), gs)]
830945 else throw("Strict value is not equal to itself.")
831946 }
832947 else throw("Strict value is not equal to itself.")
833948 }
834949
835950
836951
837-@Callable(dM)
952+@Callable(dZ)
838953 func confirmManager () = {
839- let cf = fz()
840- let fG = if (isDefined(cf))
954+ let cq = gn()
955+ let gu = if (isDefined(cq))
841956 then true
842957 else throw("No pending manager")
843- if ((fG == fG))
958+ if ((gu == gu))
844959 then {
845- let fH = if ((dM.callerPublicKey == value(cf)))
960+ let gv = if ((dZ.callerPublicKey == value(cq)))
846961 then true
847962 else throw("You are not pending manager")
848- if ((fH == fH))
849- then [StringEntry(S(), toBase58String(value(cf))), DeleteEntry(T())]
963+ if ((gv == gv))
964+ then [StringEntry(W(), toBase58String(value(cq))), DeleteEntry(X())]
850965 else throw("Strict value is not equal to itself.")
851966 }
852967 else throw("Strict value is not equal to itself.")
853968 }
854969
855970
856971
857-@Callable(dM)
858-func put (fI,fJ) = {
859- let fK = bd()
860- let fL = valueOrErrorMessage(addressFromString(fK[A]), "Wr st addr")
861- let fM = valueOrErrorMessage(addressFromString(fK[C]), "Wr sl addr")
862- if ((0 > fI))
972+@Callable(dZ)
973+func put (gw,gx) = {
974+ let gy = bo()
975+ let gz = valueOrErrorMessage(addressFromString(gy[C]), "Wr st addr")
976+ let gA = valueOrErrorMessage(addressFromString(gy[E]), "Wr sl addr")
977+ if ((0 > gw))
863978 then throw("Wrong slippage")
864- else if ((size(dM.payments) != 2))
979+ else if ((size(dZ.payments) != 2))
865980 then throw("2 pmnts expd")
866981 else {
867- let fN = dO(toString(dM.caller), toBase58String(dM.transactionId), AttachedPayment(value(dM.payments[0]).assetId, value(dM.payments[0]).amount), dM.payments[1], fI, true, false, true, 0, "")
868- let dr = fN._2
869- let fO = fN._7
870- let cI = fN._9
871- let ds = fN._10
872- let dt = fN._11
873- let cq = fN._12
874- let cr = fN._13
875- let de = invoke(aD, "emit", [dr], nil)
876- if ((de == de))
982+ let gB = toBigInt(value(dZ.payments[0]).amount)
983+ let gC = toBigInt(value(dZ.payments[1]).amount)
984+ let eP = (toBigInt(bJ(ba(bi))) - gB)
985+ if ((eP == eP))
877986 then {
878- let fP = {
879- let av = de
880- if ($isInstanceOf(av, "Address"))
881- then {
882- let fQ = av
883- invoke(fQ, "emit", [dr], nil)
884- }
885- else unit
886- }
887- if ((fP == fP))
987+ let eQ = (toBigInt(bJ(ba(bj))) - gC)
988+ if ((eQ == eQ))
888989 then {
889- let fR = if ((ds > 0))
890- then invoke(fM, "put", nil, [AttachedPayment(cq, ds)])
891- else nil
892- if ((fR == fR))
990+ let eR = toBigInt(value(assetInfo(bh)).quantity)
991+ if ((eR == eR))
893992 then {
894- let fS = if ((dt > 0))
895- then invoke(fM, "put", nil, [AttachedPayment(cr, dt)])
896- else nil
897- if ((fS == fS))
993+ let eS = eL(gB, gC, toBigInt(0))
994+ if ((eS == eS))
898995 then {
899- let fT = if (fJ)
996+ let gD = fl(toString(dZ.caller), toBase58String(dZ.transactionId), AttachedPayment(value(dZ.payments[0]).assetId, value(dZ.payments[0]).amount), dZ.payments[1], gw, true, false, true, 0, "")
997+ let dB = gD._2
998+ let gE = gD._7
999+ let cS = gD._9
1000+ let dC = gD._10
1001+ let dD = gD._11
1002+ let cA = gD._12
1003+ let cB = gD._13
1004+ let do = invoke(aM, "emit", [dB], nil)
1005+ if ((do == do))
9001006 then {
901- let fU = invoke(fL, "stake", nil, [AttachedPayment(fO, dr)])
902- if ((fU == fU))
903- then nil
1007+ let gF = {
1008+ let gm = do
1009+ if ($isInstanceOf(gm, "Address"))
1010+ then {
1011+ let gG = gm
1012+ invoke(gG, "emit", [dB], nil)
1013+ }
1014+ else unit
1015+ }
1016+ if ((gF == gF))
1017+ then {
1018+ let gH = if ((dC > 0))
1019+ then invoke(gA, "put", nil, [AttachedPayment(cA, dC)])
1020+ else nil
1021+ if ((gH == gH))
1022+ then {
1023+ let gI = if ((dD > 0))
1024+ then invoke(gA, "put", nil, [AttachedPayment(cB, dD)])
1025+ else nil
1026+ if ((gI == gI))
1027+ then {
1028+ let gJ = if (gx)
1029+ then {
1030+ let gK = invoke(gz, "stake", nil, [AttachedPayment(gE, dB)])
1031+ if ((gK == gK))
1032+ then nil
1033+ else throw("Strict value is not equal to itself.")
1034+ }
1035+ else [ScriptTransfer(dZ.caller, dB, gE)]
1036+ let gL = eT(0, 0, 0)
1037+ let gj = gL._1
1038+ let eK = gL._2
1039+ let gM = if ((eK >= eS))
1040+ then true
1041+ else aJ(makeString(["updated DLp lower than current DLp", toString(eP), toString(eQ), toString(eR), toString(eS), toString(eK), toString(dC), toString(dD)], " "))
1042+ if ((gM == gM))
1043+ then {
1044+ let gN = value(assetInfo(bh)).quantity
1045+ if ((gN == gN))
1046+ then ((cS ++ gJ) ++ gj)
1047+ else throw("Strict value is not equal to itself.")
1048+ }
1049+ else throw("Strict value is not equal to itself.")
1050+ }
1051+ else throw("Strict value is not equal to itself.")
1052+ }
1053+ else throw("Strict value is not equal to itself.")
1054+ }
9041055 else throw("Strict value is not equal to itself.")
9051056 }
906- else [ScriptTransfer(dM.caller, dr, fO)]
907- (cI ++ fT)
1057+ else throw("Strict value is not equal to itself.")
9081058 }
9091059 else throw("Strict value is not equal to itself.")
9101060 }
9111061 else throw("Strict value is not equal to itself.")
9121062 }
9131063 else throw("Strict value is not equal to itself.")
9141064 }
9151065 else throw("Strict value is not equal to itself.")
9161066 }
9171067 }
9181068
9191069
9201070
921-@Callable(dM)
922-func putOneTknV2 (fg,fJ) = {
923- let fV = {
924- let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
925- if ($isInstanceOf(aF, "Boolean"))
926- then aF
927- else throw(($getType(aF) + " couldn't be cast to Boolean"))
1071+@Callable(dZ)
1072+func putOneTknV2 (fN,gx) = {
1073+ let gO = {
1074+ let aO = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1075+ if ($isInstanceOf(aO, "Boolean"))
1076+ then aO
1077+ else throw(($getType(aO) + " couldn't be cast to Boolean"))
9281078 }
929- let fW = if (if (if (aI())
1079+ let gP = if (if (if (aR())
9301080 then true
931- else (aX == o))
1081+ else (bg == q))
9321082 then true
933- else (aX == q))
1083+ else (bg == s))
9341084 then true
935- else fV
936- let fX = [if (if (!(fW))
1085+ else gO
1086+ let gQ = [if (if (!(gP))
9371087 then true
938- else fB(dM))
1088+ else gp(dZ))
9391089 then true
940- else aB("put operation is blocked by admin"), if ((size(dM.payments) == 1))
1090+ else aJ("put operation is blocked by admin"), if ((size(dZ.payments) == 1))
9411091 then true
942- else aB("exactly 1 payment are expected")]
943- if ((fX == fX))
1092+ else aJ("exactly 1 payment are expected")]
1093+ if ((gQ == gQ))
9441094 then {
945- let aT = aL()
946- let cq = aT[u]
947- let cr = aT[v]
948- let cp = fromBase58String(aT[t])
949- let fk = parseIntValue(aT[w])
950- let fl = parseIntValue(aT[x])
951- let co = if ((dM.caller == this))
952- then dM.originCaller
953- else dM.caller
954- let dN = value(dM.payments[0])
955- let cm = toBase58String(value(dN.assetId))
956- let cS = dN.amount
957- let fY = eH(cS, cm, toString(co), toBase58String(dM.transactionId), true)
958- if ((fY == fY))
1095+ let cA = toBase58String(value(bi))
1096+ let cB = toBase58String(value(bj))
1097+ let cz = bh
1098+ let fR = bk
1099+ let fS = bl
1100+ let cy = if ((dZ.caller == this))
1101+ then dZ.originCaller
1102+ else dZ.caller
1103+ let fk = value(dZ.payments[0])
1104+ let cw = toBase58String(value(fk.assetId))
1105+ let dc = fk.amount
1106+ let eS = if ((fk.assetId == bi))
1107+ then eL(toBigInt(dc), toBigInt(0), toBigInt(0))
1108+ else eL(toBigInt(0), toBigInt(dc), toBigInt(0))
1109+ if ((eS == eS))
9591110 then {
960- let cj = fY._3
961- let cI = fY._2
962- let fZ = fY._1
963- let dr = if (if ((fg > 0))
964- then (fg > fZ)
965- else false)
966- then aB(makeString(["amount to receive is less than ", toString(fg)], ""))
967- else fZ
968- let fN = invoke(aD, "emit", [dr], nil)
969- if ((fN == fN))
1111+ let gR = fp(dc, cw, toString(cy), toBase58String(dZ.transactionId), true)
1112+ if ((gR == gR))
9701113 then {
971- let fP = {
972- let av = fN
973- if ($isInstanceOf(av, "Address"))
974- then {
975- let fQ = av
976- invoke(fQ, "emit", [dr], nil)
1114+ let ct = gR._3
1115+ let cS = gR._2
1116+ let gS = gR._1
1117+ let dB = if (if ((fN > 0))
1118+ then (fN > gS)
1119+ else false)
1120+ then aJ(makeString(["amount to receive is less than ", toString(fN)], ""))
1121+ else gS
1122+ let gD = invoke(aM, "emit", [dB], nil)
1123+ if ((gD == gD))
1124+ then {
1125+ let gF = {
1126+ let gm = gD
1127+ if ($isInstanceOf(gm, "Address"))
1128+ then {
1129+ let gG = gm
1130+ invoke(gG, "emit", [dB], nil)
1131+ }
1132+ else unit
9771133 }
978- else unit
979- }
980- if ((fP == fP))
981- then {
982- let fT = if (fJ)
1134+ if ((gF == gF))
9831135 then {
984- let fU = invoke(bf, "stake", nil, [AttachedPayment(cp, dr)])
985- if ((fU == fU))
986- then nil
1136+ let gJ = if (gx)
1137+ then {
1138+ let gK = invoke(bq, "stake", nil, [AttachedPayment(cz, dB)])
1139+ if ((gK == gK))
1140+ then nil
1141+ else throw("Strict value is not equal to itself.")
1142+ }
1143+ else [ScriptTransfer(dZ.caller, dB, cz)]
1144+ let gd = if ((ct > 0))
1145+ then [ScriptTransfer(aT, ct, fromBase58String(cw))]
1146+ else nil
1147+ let gT = if ((this == aT))
1148+ then $Tuple2(0, 0)
1149+ else {
1150+ let gU = if ((fk.assetId == bi))
1151+ then true
1152+ else false
1153+ if (gU)
1154+ then $Tuple2(-(ct), 0)
1155+ else $Tuple2(0, -(ct))
1156+ }
1157+ let eU = gT._1
1158+ let eV = gT._2
1159+ let gV = eT(eU, eV, 0)
1160+ let gj = gV._1
1161+ let eK = gV._2
1162+ let gk = eX(eS, eK)
1163+ if ((gk == gk))
1164+ then $Tuple2((((cS ++ gJ) ++ gd) ++ gj), dB)
9871165 else throw("Strict value is not equal to itself.")
9881166 }
989- else [ScriptTransfer(dM.caller, dr, cp)]
990- let fw = if ((cj > 0))
991- then [ScriptTransfer(aK, cj, fromBase58String(cm))]
992- else nil
993- $Tuple2(((cI ++ fT) ++ fw), dr)
1167+ else throw("Strict value is not equal to itself.")
9941168 }
9951169 else throw("Strict value is not equal to itself.")
9961170 }
9971171 else throw("Strict value is not equal to itself.")
9981172 }
9991173 else throw("Strict value is not equal to itself.")
10001174 }
10011175 else throw("Strict value is not equal to itself.")
10021176 }
10031177
10041178
10051179
1006-@Callable(dM)
1007-func putForFree (ga) = if ((0 > ga))
1180+@Callable(dZ)
1181+func putForFree (gW) = if ((0 > gW))
10081182 then throw("Wrong slpg")
1009- else if ((size(dM.payments) != 2))
1183+ else if ((size(dZ.payments) != 2))
10101184 then throw("2 pmnts expd")
10111185 else {
1012- let gb = dO(toString(dM.caller), toBase58String(dM.transactionId), AttachedPayment(value(dM.payments[0]).assetId, value(dM.payments[0]).amount), dM.payments[1], ga, false, false, true, 0, "")
1013- gb._9
1186+ let gX = fl(toString(dZ.caller), toBase58String(dZ.transactionId), AttachedPayment(value(dZ.payments[0]).assetId, value(dZ.payments[0]).amount), dZ.payments[1], gW, false, false, true, 0, "")
1187+ let cS = gX._9
1188+ let gB = toBigInt(value(dZ.payments[0]).amount)
1189+ let gC = toBigInt(value(dZ.payments[1]).amount)
1190+ let eS = eL(gB, gC, toBigInt(0))
1191+ if ((eS == eS))
1192+ then {
1193+ let gY = eT(0, 0, 0)
1194+ let gj = gY._1
1195+ let eK = gY._2
1196+ let gk = eX(eS, eK)
1197+ if ((gk == gk))
1198+ then (cS ++ gj)
1199+ else throw("Strict value is not equal to itself.")
1200+ }
1201+ else throw("Strict value is not equal to itself.")
10141202 }
10151203
10161204
10171205
1018-@Callable(dM)
1206+@Callable(dZ)
10191207 func get () = {
1020- let de = dL(dM)
1021- let gc = de._1
1022- let cH = de._2
1023- let cS = de._3
1024- let cm = de._4
1025- let cI = de._5
1026- let eB = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
1027- if ((eB == eB))
1028- then cI
1029- else throw("Strict value is not equal to itself.")
1030- }
1031-
1032-
1033-
1034-@Callable(dM)
1035-func getOneTknV2 (ff,fg) = {
1036- let fV = {
1037- let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1038- if ($isInstanceOf(aF, "Boolean"))
1039- then aF
1040- else throw(($getType(aF) + " couldn't be cast to Boolean"))
1041- }
1042- let gd = if (if (aI())
1043- then true
1044- else (aX == q))
1045- then true
1046- else fV
1047- let fX = [if (if (!(gd))
1048- then true
1049- else fB(dM))
1050- then true
1051- else aB("get operation is blocked by admin"), if ((size(dM.payments) == 1))
1052- then true
1053- else aB("exactly 1 payment are expected")]
1054- if ((fX == fX))
1208+ let eS = eL(toBigInt(0), toBigInt(0), toBigInt(0))
1209+ if ((eS == eS))
10551210 then {
1056- let ge = fe(ff, fg, dM.payments, dM.caller, dM.originCaller, dM.transactionId)
1057- let cI = ge._1
1058- let fp = ge._2
1059- $Tuple2(cI, fp)
1211+ let do = fj(dZ)
1212+ let gZ = do._1
1213+ let cR = do._2
1214+ let dc = do._3
1215+ let cw = do._4
1216+ let cS = do._5
1217+ let eA = invoke(aM, "burn", [dc], [AttachedPayment(cw, dc)])
1218+ if ((eA == eA))
1219+ then {
1220+ let ha = eT(-(gZ), -(cR), 0)
1221+ let gj = ha._1
1222+ let eK = ha._2
1223+ let gk = eX(eS, eK)
1224+ if ((gk == gk))
1225+ then (cS ++ gj)
1226+ else throw("Strict value is not equal to itself.")
1227+ }
1228+ else throw("Strict value is not equal to itself.")
10601229 }
10611230 else throw("Strict value is not equal to itself.")
10621231 }
10631232
10641233
10651234
1066-@Callable(dM)
1067-func getOneTknV2READONLY (ff,gf) = {
1068- let aT = aL()
1069- let cq = aT[u]
1070- let cr = aT[v]
1071- let cp = aT[t]
1072- let dT = [toBigInt(by(cq)), toBigInt(by(cr))]
1073- let gg = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cp)), "invalid lp asset").quantity)
1074- let bL = dS(dT)
1075- let bK = (bL - fraction(toBigInt(gf), bL, gg))
1076- let gh = if ((ff == cq))
1077- then 0
1078- else if ((ff == cr))
1079- then 1
1080- else throw("invalid out asset id")
1081- let gi = ex(dT, gh, bK)
1082- let gj = (dT[gh] - gi)
1083- let gk = max([0, toInt((gj - f))])
1084- let gl = cg(gk, aG)
1085- let fo = gl._1
1086- let cj = gl._2
1087- $Tuple2(nil, $Tuple2(fo, cj))
1235+@Callable(dZ)
1236+func getOneTknV2 (fM,fN) = {
1237+ let gO = {
1238+ let aO = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1239+ if ($isInstanceOf(aO, "Boolean"))
1240+ then aO
1241+ else throw(($getType(aO) + " couldn't be cast to Boolean"))
1242+ }
1243+ let hb = if (if (aR())
1244+ then true
1245+ else (bg == s))
1246+ then true
1247+ else gO
1248+ let gQ = [if (if (!(hb))
1249+ then true
1250+ else gp(dZ))
1251+ then true
1252+ else aJ("get operation is blocked by admin"), if ((size(dZ.payments) == 1))
1253+ then true
1254+ else aJ("exactly 1 payment are expected")]
1255+ if ((gQ == gQ))
1256+ then {
1257+ let hc = fL(fM, fN, dZ.payments, dZ.caller, dZ.originCaller, dZ.transactionId)
1258+ let cS = hc._1
1259+ let fW = hc._2
1260+ $Tuple2(cS, fW)
1261+ }
1262+ else throw("Strict value is not equal to itself.")
10881263 }
10891264
10901265
10911266
1092-@Callable(dM)
1093-func getOneTknV2WithBonusREADONLY (ff,gf) = {
1094- let aT = aL()
1095- let cq = aT[u]
1096- let cr = aT[v]
1097- let cp = aT[t]
1098- let cw = by(cq)
1099- let cy = by(cr)
1100- let gm = {
1101- let aF = invoke(this, "getOneTknV2READONLY", [ff, gf], nil)
1102- if ($isInstanceOf(aF, "(Int, Int)"))
1103- then aF
1104- else throw(($getType(aF) + " couldn't be cast to (Int, Int)"))
1105- }
1106- let fo = gm._1
1107- let cj = gm._2
1108- let de = ck("", cp, gf, this)
1109- let cG = de._1
1110- let cH = de._2
1111- let gn = (cG + cH)
1112- let fd = if ((gn == 0))
1113- then if ((fo == 0))
1114- then 0
1115- else throw("bonus calculation error")
1116- else fraction((fo - gn), a, gn)
1117- $Tuple2(nil, $Tuple3(fo, cj, fd))
1267+@Callable(dZ)
1268+func refreshDLp () = {
1269+ let hd = valueOrElse(getInteger(an), 0)
1270+ let he = if (((height - hd) >= aq))
1271+ then unit
1272+ else aJ(makeString([toString(aq), " blocks have not passed since the previous call"], ""))
1273+ if ((he == he))
1274+ then {
1275+ let fe = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, am), "0")), aL("invalid dLp"))
1276+ let hf = eT(0, 0, 0)
1277+ let hg = hf._1
1278+ let eK = hf._2
1279+ let eW = if ((fe != eK))
1280+ then hg
1281+ else aJ("nothing to refresh")
1282+ $Tuple2(eW, toString(eK))
1283+ }
1284+ else throw("Strict value is not equal to itself.")
11181285 }
11191286
11201287
11211288
1122-@Callable(dM)
1123-func getNoLess (go,gp) = {
1124- let de = dL(dM)
1125- let cG = de._1
1126- let cH = de._2
1127- let cS = de._3
1128- let cm = de._4
1129- let cI = de._5
1130- if ((go > cG))
1131- then throw(((("Failed: " + toString(cG)) + " < ") + toString(go)))
1132- else if ((gp > cH))
1133- then throw(((("Failed: " + toString(cH)) + " < ") + toString(gp)))
1289+@Callable(dZ)
1290+func getOneTknV2READONLY (fM,hh) = {
1291+ let cA = toBase58String(value(bi))
1292+ let cB = toBase58String(value(bj))
1293+ let cz = toBase58String(value(bh))
1294+ let dJ = [toBigInt(bJ(cA)), toBigInt(bJ(cB))]
1295+ let eJ = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cz)), "invalid lp asset").quantity)
1296+ let bX = dI(dJ)
1297+ let bW = (bX - fraction(toBigInt(hh), bX, eJ))
1298+ let hi = if ((fM == cA))
1299+ then 0
1300+ else if ((fM == cB))
1301+ then 1
1302+ else throw("invalid out asset id")
1303+ let hj = ew(dJ, hi, bW)
1304+ let hk = (dJ[hi] - hj)
1305+ let hl = max([0, toInt((hk - f))])
1306+ let hm = cr(hl, aP)
1307+ let fV = hm._1
1308+ let ct = hm._2
1309+ $Tuple2(nil, $Tuple2(fV, ct))
1310+ }
1311+
1312+
1313+
1314+@Callable(dZ)
1315+func getOneTknV2WithBonusREADONLY (fM,hh) = {
1316+ let cA = toBase58String(value(bi))
1317+ let cB = toBase58String(value(bj))
1318+ let cz = toBase58String(value(bh))
1319+ let cG = bJ(cA)
1320+ let cI = bJ(cB)
1321+ let hn = {
1322+ let aO = invoke(this, "getOneTknV2READONLY", [fM, hh], nil)
1323+ if ($isInstanceOf(aO, "(Int, Int)"))
1324+ then aO
1325+ else throw(($getType(aO) + " couldn't be cast to (Int, Int)"))
1326+ }
1327+ let fV = hn._1
1328+ let ct = hn._2
1329+ let do = cu("", cz, hh, this)
1330+ let cQ = do._1
1331+ let cR = do._2
1332+ let ho = (cQ + cR)
1333+ let fK = if ((ho == 0))
1334+ then if ((fV == 0))
1335+ then 0
1336+ else throw("bonus calculation error")
1337+ else fraction((fV - ho), a, ho)
1338+ $Tuple2(nil, $Tuple3(fV, ct, fK))
1339+ }
1340+
1341+
1342+
1343+@Callable(dZ)
1344+func getNoLess (hp,hq) = {
1345+ let do = fj(dZ)
1346+ let cQ = do._1
1347+ let cR = do._2
1348+ let dc = do._3
1349+ let cw = do._4
1350+ let cS = do._5
1351+ if ((hp > cQ))
1352+ then throw(((("Failed: " + toString(cQ)) + " < ") + toString(hp)))
1353+ else if ((hq > cR))
1354+ then throw(((("Failed: " + toString(cR)) + " < ") + toString(hq)))
11341355 else {
1135- let gq = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
1136- if ((gq == gq))
1137- then cI
1356+ let eS = eL(toBigInt(0), toBigInt(0), toBigInt(0))
1357+ if ((eS == eS))
1358+ then {
1359+ let hr = invoke(aM, "burn", [dc], [AttachedPayment(cw, dc)])
1360+ if ((hr == hr))
1361+ then {
1362+ let hs = eT(-(cQ), -(cR), 0)
1363+ let gj = hs._1
1364+ let eK = hs._2
1365+ let gk = eX(eS, eK)
1366+ if ((gk == gk))
1367+ then (cS ++ gj)
1368+ else throw("Strict value is not equal to itself.")
1369+ }
1370+ else throw("Strict value is not equal to itself.")
1371+ }
11381372 else throw("Strict value is not equal to itself.")
11391373 }
11401374 }
11411375
11421376
11431377
1144-@Callable(dM)
1145-func unstakeAndGet (ch) = {
1146- let gr = if ((size(dM.payments) != 0))
1378+@Callable(dZ)
1379+func unstakeAndGet (cs) = {
1380+ let ht = if ((size(dZ.payments) != 0))
11471381 then throw("No pmnts expd")
11481382 else true
1149- if ((gr == gr))
1383+ if ((ht == ht))
11501384 then {
1151- let bX = aL()
1152- let gs = bd()
1153- let fO = fromBase58String(bX[t])
1154- let gt = valueOrErrorMessage(addressFromString(gs[A]), "Wr st addr")
1155- let gu = invoke(gt, "unstake", [toBase58String(fO), ch], nil)
1156- if ((gu == gu))
1385+ let hu = bo()
1386+ let gE = bh
1387+ let hv = valueOrErrorMessage(addressFromString(hu[C]), "Wr st addr")
1388+ let eS = eL(toBigInt(0), toBigInt(0), toBigInt(0))
1389+ let hw = invoke(hv, "unstake", [toBase58String(gE), cs], nil)
1390+ if ((hw == hw))
11571391 then {
1158- let de = ck(toBase58String(dM.transactionId), toBase58String(fO), ch, dM.caller)
1159- let cu = parseIntValue(de._9)
1160- let cI = de._10
1161- let gv = if (if (aI())
1392+ let do = cu(toBase58String(dZ.transactionId), toBase58String(gE), cs, dZ.caller)
1393+ let cQ = do._1
1394+ let cR = do._2
1395+ let cE = parseIntValue(do._9)
1396+ let cS = do._10
1397+ let hx = if (if (aR())
11621398 then true
1163- else (cu == q))
1164- then throw(("Blocked: " + toString(cu)))
1399+ else (cE == s))
1400+ then throw(("Blocked: " + toString(cE)))
11651401 else true
1166- if ((gv == gv))
1402+ if ((hx == hx))
11671403 then {
1168- let gw = invoke(aD, "burn", [ch], [AttachedPayment(fO, ch)])
1169- if ((gw == gw))
1170- then cI
1404+ let hy = invoke(aM, "burn", [cs], [AttachedPayment(gE, cs)])
1405+ if ((hy == hy))
1406+ then {
1407+ let hz = eT(-(cQ), -(cR), 0)
1408+ let gj = hz._1
1409+ let eK = hz._2
1410+ let gk = eX(eS, eK)
1411+ if ((gk == gk))
1412+ then (cS ++ gj)
1413+ else throw("Strict value is not equal to itself.")
1414+ }
11711415 else throw("Strict value is not equal to itself.")
11721416 }
11731417 else throw("Strict value is not equal to itself.")
11741418 }
11751419 else throw("Strict value is not equal to itself.")
11761420 }
11771421 else throw("Strict value is not equal to itself.")
11781422 }
11791423
11801424
11811425
1182-@Callable(dM)
1183-func unstakeAndGetNoLess (gx,gy,gp) = {
1184- let gd = if (aI())
1426+@Callable(dZ)
1427+func unstakeAndGetNoLess (hA,hB,hq) = {
1428+ let hb = if (aR())
11851429 then true
1186- else (aX == q)
1187- let fX = [if (!(gd))
1430+ else (bg == s)
1431+ let gQ = [if (!(hb))
11881432 then true
1189- else throw("get operation is blocked by admin"), if ((size(dM.payments) == 0))
1433+ else throw("get operation is blocked by admin"), if ((size(dZ.payments) == 0))
11901434 then true
11911435 else throw("no payments are expected")]
1192- if ((fX == fX))
1436+ if ((gQ == gQ))
11931437 then {
1194- let gu = invoke(bf, "unstake", [toBase58String(aY), gx], nil)
1195- if ((gu == gu))
1438+ let eS = eL(toBigInt(0), toBigInt(0), toBigInt(0))
1439+ let hw = invoke(bq, "unstake", [toBase58String(bh), hA], nil)
1440+ if ((hw == hw))
11961441 then {
1197- let gz = ck(toBase58String(dM.transactionId), toBase58String(aY), gx, dM.caller)
1198- let cG = gz._1
1199- let cH = gz._2
1200- let cI = gz._10
1201- let gA = [if ((cG >= gy))
1442+ let hC = cu(toBase58String(dZ.transactionId), toBase58String(bh), hA, dZ.caller)
1443+ let cQ = hC._1
1444+ let cR = hC._2
1445+ let cS = hC._10
1446+ let hD = [if ((cQ >= hB))
12021447 then true
1203- else throw(makeString(["amount asset amount to receive is less than ", toString(gy)], "")), if ((cH >= gp))
1448+ else throw(makeString(["amount asset amount to receive is less than ", toString(hB)], "")), if ((cR >= hq))
12041449 then true
1205- else throw(makeString(["price asset amount to receive is less than ", toString(gp)], ""))]
1206- if ((gA == gA))
1450+ else throw(makeString(["price asset amount to receive is less than ", toString(hq)], ""))]
1451+ if ((hD == hD))
12071452 then {
1208- let gq = invoke(aD, "burn", [gx], [AttachedPayment(aY, gx)])
1209- if ((gq == gq))
1210- then cI
1453+ let hr = invoke(aM, "burn", [hA], [AttachedPayment(bh, hA)])
1454+ if ((hr == hr))
1455+ then {
1456+ let hE = eT(-(cQ), -(cR), 0)
1457+ let gj = hE._1
1458+ let eK = hE._2
1459+ let gk = eX(eS, eK)
1460+ if ((gk == gk))
1461+ then (cS ++ gj)
1462+ else throw("Strict value is not equal to itself.")
1463+ }
12111464 else throw("Strict value is not equal to itself.")
12121465 }
12131466 else throw("Strict value is not equal to itself.")
12141467 }
12151468 else throw("Strict value is not equal to itself.")
12161469 }
12171470 else throw("Strict value is not equal to itself.")
12181471 }
12191472
12201473
12211474
1222-@Callable(dM)
1223-func unstakeAndGetOneTknV2 (gx,ff,fg) = {
1224- let fV = {
1225- let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1226- if ($isInstanceOf(aF, "Boolean"))
1227- then aF
1228- else throw(($getType(aF) + " couldn't be cast to Boolean"))
1475+@Callable(dZ)
1476+func unstakeAndGetOneTknV2 (hA,fM,fN) = {
1477+ let gO = {
1478+ let aO = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1479+ if ($isInstanceOf(aO, "Boolean"))
1480+ then aO
1481+ else throw(($getType(aO) + " couldn't be cast to Boolean"))
12291482 }
1230- let gd = if (if (aI())
1483+ let hb = if (if (aR())
12311484 then true
1232- else (aX == q))
1485+ else (bg == s))
12331486 then true
1234- else fV
1235- let fX = [if (if (!(gd))
1487+ else gO
1488+ let gQ = [if (if (!(hb))
12361489 then true
1237- else fB(dM))
1490+ else gp(dZ))
12381491 then true
1239- else aB("get operation is blocked by admin"), if ((size(dM.payments) == 0))
1492+ else aJ("get operation is blocked by admin"), if ((size(dZ.payments) == 0))
12401493 then true
1241- else aB("no payments are expected")]
1242- if ((fX == fX))
1494+ else aJ("no payments are expected")]
1495+ if ((gQ == gQ))
12431496 then {
1244- let bX = aL()
1245- let gs = bd()
1246- let fO = fromBase58String(bX[t])
1247- let gt = valueOrErrorMessage(addressFromString(gs[A]), "Wr st addr")
1248- let gu = invoke(gt, "unstake", [toBase58String(fO), gx], nil)
1249- if ((gu == gu))
1497+ let hu = bo()
1498+ let gE = bh
1499+ let hv = valueOrErrorMessage(addressFromString(hu[C]), "Wr st addr")
1500+ let hw = invoke(hv, "unstake", [toBase58String(gE), hA], nil)
1501+ if ((hw == hw))
12501502 then {
1251- let gB = fe(ff, fg, [AttachedPayment(fO, gx)], dM.caller, dM.originCaller, dM.transactionId)
1252- let cI = gB._1
1253- let fp = gB._2
1254- $Tuple2(cI, fp)
1503+ let hF = fL(fM, fN, [AttachedPayment(gE, hA)], dZ.caller, dZ.originCaller, dZ.transactionId)
1504+ let cS = hF._1
1505+ let fW = hF._2
1506+ $Tuple2(cS, fW)
12551507 }
12561508 else throw("Strict value is not equal to itself.")
12571509 }
12581510 else throw("Strict value is not equal to itself.")
12591511 }
12601512
12611513
12621514
1263-@Callable(dM)
1264-func putOneTknV2WithBonusREADONLY (gC,gD) = {
1265- let aT = aL()
1266- let cq = aT[u]
1267- let cr = aT[v]
1268- let cp = aT[t]
1269- let gE = eH(gC, gD, "", "", true)
1270- let eY = gE._1
1271- let cI = gE._2
1272- let cj = gE._3
1273- let fd = gE._4
1274- $Tuple2(nil, $Tuple3(eY, cj, fd))
1515+@Callable(dZ)
1516+func putOneTknV2WithBonusREADONLY (hG,hH) = {
1517+ let hI = fp(hG, hH, "", "", true)
1518+ let fF = hI._1
1519+ let cS = hI._2
1520+ let ct = hI._3
1521+ let fK = hI._4
1522+ $Tuple2(nil, $Tuple3(fF, ct, fK))
12751523 }
12761524
12771525
12781526
1279-@Callable(dM)
1280-func putOneTknV2WithoutTakeFeeREADONLY (gC,gD) = {
1281- let aT = aL()
1282- let cq = aT[u]
1283- let cr = aT[v]
1284- let cp = aT[t]
1285- let gF = eH(gC, gD, "", "", false)
1286- let eY = gF._1
1287- let cI = gF._2
1288- let cj = gF._3
1289- let fd = gF._4
1290- $Tuple2(nil, $Tuple3(eY, cj, fd))
1527+@Callable(dZ)
1528+func putOneTknV2WithoutTakeFeeREADONLY (hG,hH) = {
1529+ let hJ = fp(hG, hH, "", "", false)
1530+ let fF = hJ._1
1531+ let cS = hJ._2
1532+ let ct = hJ._3
1533+ let fK = hJ._4
1534+ $Tuple2(nil, $Tuple3(fF, ct, fK))
12911535 }
12921536
12931537
12941538
1295-@Callable(dM)
1296-func activate (gG,gH) = if ((toString(dM.caller) != toString(aD)))
1539+@Callable(dZ)
1540+func activate (hK,hL) = if ((toString(dZ.caller) != toString(aM)))
12971541 then throw("denied")
1298- else $Tuple2([StringEntry(ac(), gG), StringEntry(ad(), gH)], "success")
1542+ else $Tuple2([StringEntry(ag(), hK), StringEntry(ah(), hL)], "success")
12991543
13001544
13011545
1302-@Callable(dM)
1303-func setS (gI,gv) = if ((toString(dM.caller) != ax(this, af())))
1304- then fA
1305- else [StringEntry(gI, gv)]
1546+@Callable(dZ)
1547+func setS (hM,hx) = if ((toString(dZ.caller) != aF(this, aj())))
1548+ then go
1549+ else [StringEntry(hM, hx)]
13061550
13071551
13081552
1309-@Callable(dM)
1310-func setI (gI,gv) = if ((toString(dM.caller) != ax(this, af())))
1311- then fA
1312- else [IntegerEntry(gI, gv)]
1553+@Callable(dZ)
1554+func setI (hM,hx) = if ((toString(dZ.caller) != aF(this, aj())))
1555+ then go
1556+ else [IntegerEntry(hM, hx)]
13131557
13141558
13151559
1316-@Callable(dM)
1317-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aL())
1560+@Callable(dZ)
1561+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aU())
13181562
13191563
13201564
1321-@Callable(dM)
1322-func getAccBalanceWrapperREADONLY (bz) = $Tuple2(nil, by(bz))
1565+@Callable(dZ)
1566+func getAccBalanceWrapperREADONLY (bK) = $Tuple2(nil, bJ(bK))
13231567
13241568
13251569
1326-@Callable(dM)
1327-func calcPricesWrapperREADONLY (bR,bS,bW) = {
1328- let gJ = bV(bR, bS, bW)
1329- $Tuple2(nil, [toString(gJ[0]), toString(gJ[1]), toString(gJ[2])])
1570+@Callable(dZ)
1571+func calcPricesWrapperREADONLY (cd,ce,ci) = {
1572+ let hN = ch(cd, ce, ci)
1573+ $Tuple2(nil, [toString(hN[0]), toString(hN[1]), toString(hN[2])])
13301574 }
13311575
13321576
13331577
1334-@Callable(dM)
1335-func fromX18WrapperREADONLY (J,gK) = $Tuple2(nil, I(parseBigIntValue(J), gK))
1578+@Callable(dZ)
1579+func fromX18WrapperREADONLY (L,hO) = $Tuple2(nil, K(parseBigIntValue(L), hO))
13361580
13371581
13381582
1339-@Callable(dM)
1340-func toX18WrapperREADONLY (G,H) = $Tuple2(nil, toString(F(G, H)))
1583+@Callable(dZ)
1584+func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
13411585
13421586
13431587
1344-@Callable(dM)
1345-func calcPriceBigIntWrapperREADONLY (bB,bC) = $Tuple2(nil, toString(bA(parseBigIntValue(bB), parseBigIntValue(bC))))
1588+@Callable(dZ)
1589+func calcPriceBigIntWrapperREADONLY (bM,bN) = $Tuple2(nil, toString(bL(parseBigIntValue(bM), parseBigIntValue(bN))))
13461590
13471591
13481592
1349-@Callable(dM)
1350-func estimatePutOperationWrapperREADONLY (cl,bG,cK,cL,cM,cN,gL,cO,cP) = $Tuple2(nil, cJ(cl, bG, cK, cL, cM, cN, gL, cO, cP, true, false, 0, ""))
1593+@Callable(dZ)
1594+func estimatePutOperationWrapperREADONLY (cv,bS,cU,cV,cW,cX,hP,cY,cZ) = $Tuple2(nil, cT(cv, bS, cU, cV, cW, cX, hP, cY, cZ, true, false, 0, ""))
13511595
13521596
13531597
1354-@Callable(dM)
1355-func estimateGetOperationWrapperREADONLY (cl,gM,cn,gL) = {
1356- let de = ck(cl, gM, cn, addressFromStringValue(gL))
1357- $Tuple2(nil, $Tuple10(de._1, de._2, de._3, de._4, de._5, de._6, de._7, toString(de._8), de._9, de._10))
1598+@Callable(dZ)
1599+func estimateGetOperationWrapperREADONLY (cv,hQ,cx,hP) = {
1600+ let do = cu(cv, hQ, cx, addressFromStringValue(hP))
1601+ $Tuple2(nil, $Tuple10(do._1, do._2, do._3, do._4, do._5, do._6, do._7, toString(do._8), do._9, do._10))
13581602 }
13591603
13601604
1361-@Verifier(gN)
1362-func gO () = {
1363- let gP = {
1364- let av = fy()
1365- if ($isInstanceOf(av, "ByteVector"))
1605+@Verifier(hR)
1606+func hS () = {
1607+ let hT = {
1608+ let gm = gl()
1609+ if ($isInstanceOf(gm, "ByteVector"))
13661610 then {
1367- let fC = av
1368- fC
1611+ let gq = gm
1612+ gq
13691613 }
1370- else if ($isInstanceOf(av, "Unit"))
1371- then gN.senderPublicKey
1614+ else if ($isInstanceOf(gm, "Unit"))
1615+ then hR.senderPublicKey
13721616 else throw("Match error")
13731617 }
1374- let av = gN
1375- if ($isInstanceOf(av, "Order"))
1618+ let gm = hR
1619+ if ($isInstanceOf(gm, "Order"))
13761620 then {
1377- let dz = av
1378- let gQ = aJ()
1379- let gR = dy(dz)
1380- let gS = sigVerify(dz.bodyBytes, dz.proofs[0], dz.senderPublicKey)
1381- let gT = sigVerify(dz.bodyBytes, dz.proofs[1], gQ)
1382- if (if (if (gR)
1383- then gS
1621+ let fa = gm
1622+ let hU = aS()
1623+ let hV = eZ(fa)
1624+ let hW = sigVerify(fa.bodyBytes, fa.proofs[0], fa.senderPublicKey)
1625+ let hX = sigVerify(fa.bodyBytes, fa.proofs[1], hU)
1626+ if (if (if (hV)
1627+ then hW
13841628 else false)
1385- then gT
1629+ then hX
13861630 else false)
13871631 then true
1388- else aq(gR, gS, gT)
1632+ else aB(hV, hW, hX)
13891633 }
1390- else if ($isInstanceOf(av, "SetScriptTransaction"))
1634+ else if ($isInstanceOf(gm, "SetScriptTransaction"))
13911635 then {
1392- let dZ = av
1393- let gU = blake2b256(value(dZ.script))
1394- let gV = fromBase64String(value(getString(aD, ao())))
1395- let gW = scriptHash(this)
1396- if (if ((gV == gU))
1397- then (gW != gU)
1636+ let dM = gm
1637+ let hY = blake2b256(value(dM.script))
1638+ let hZ = fromBase64String(value(getString(aM, az())))
1639+ let ia = scriptHash(this)
1640+ if (if ((hZ == hY))
1641+ then (ia != hY)
13981642 else false)
13991643 then true
1400- else sigVerify(gN.bodyBytes, gN.proofs[0], gP)
1644+ else sigVerify(hR.bodyBytes, hR.proofs[0], hT)
14011645 }
1402- else sigVerify(gN.bodyBytes, gN.proofs[0], gP)
1646+ else sigVerify(hR.bodyBytes, hR.proofs[0], hT)
14031647 }
14041648

github/deemru/w8io/169f3d6 
400.24 ms