tx · YuiKstiJVDahhwhgWiNNSMcmiAjjYtBtVUNCcuhvxYF

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.03600000 Waves

2022.12.07 15:43 [2349940] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "YuiKstiJVDahhwhgWiNNSMcmiAjjYtBtVUNCcuhvxYF", "fee": 3600000, "feeAssetId": null, "timestamp": 1670417022994, "version": 1, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "GuHV3XdWCSCYhNBHoz9JWhyRtgUWosHuVRE8ADh9ieXdP1QG84MeoXBd3WwE96WDWVJSfNp6K8jxfjAeboe8R7k" ], "script": "base64:BgLUKAgCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIAEgQKAggBEgQKAggBEgQKAgEBEgMKAQESBQoDAQEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgRiaWczIgRiaWc0IgpzbGlwcGFnZTREIgt3YXZlc1N0cmluZyIFQW11bHQiBURjb252IgNTRVAiBUVNUFRZIgpQb29sQWN0aXZlIgpQb29sUHV0RGlzIg5Qb29sTWF0Y2hlckRpcyIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyIJaWR4UG9vbFN0IglpZHhMUEFzSWQiCWlkeEFtQXNJZCIJaWR4UHJBc0lkIgtpZHhBbXRBc0RjbSINaWR4UHJpY2VBc0RjbSILaWR4SUFtdEFzSWQiDWlkeElQcmljZUFzSWQiD2lkeEZhY3RTdGFrQ250ciISaWR4RmFjdG9yeVJlc3RDbnRyIhBpZHhGYWN0U2xpcHBDbnRyIhFpZHhGYWN0R3d4UmV3Q250ciIKZmVlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiAmYxIgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgF0IgNwYXUiAnVhIgR0eElkIgNnYXUiAmFhIgJwYSIDYW1wIgNhZGEiBmtleUZlZSIDZmVlIgZrZXlETHAiFWtleURMcFJlZnJlc2hlZEhlaWdodCISa2V5RExwUmVmcmVzaERlbGF5IhZkTHBSZWZyZXNoRGVsYXlEZWZhdWx0Ig9kTHBSZWZyZXNoRGVsYXkiBGZjZmciBG10cGsiAnBjIgZpQW10QXMiBWlQckFzIgNtYmEiBWJBU3RyIgNhcHMiHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiA3RvZSIDb3JWIgZzZW5kclYiBm1hdGNoViIDc3RyIgckbWF0Y2gwIgZ2YWxTdHIiBHN0cmYiBGFkZHIiA2tleSIEaW50ZiIIdGhyb3dFcnIiA21zZyIGZm10RXJyIgNmY2EiAUEiA2lncyICbXAiE2ZlZUNvbGxlY3RvckFkZHJlc3MiA2dwYyIFYW10QXMiB3ByaWNlQXMiCGlQcmljZUFzIgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwNzI1NTc0NDEiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIgNnZmMiDWZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIPc2xpcGFnZUNvbnRyYWN0Igtnd3hDb250cmFjdCIMcmVzdENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIJZmVlQW1vdW50IgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMTc4NzIxODIxNyIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiBGdldEQiAnhwIgN4cDAiA3hwMSIBcyIBYSIDYW5uIgt4cDBfeHAxX25fbiIFYW5uX3MiBWFubl8xIgljYWxjRE5leHQiAWQiAmRkIgNkZGQiAmRwIgRjYWxjIgNhY2MiAWkiBWROZXh0IghkRGlmZlJhdyIFZERpZmYiA2FyciINJHQwMjAxMjgyMDE3NiICJGwiAiRzIgUkYWNjMCIFJGYwXzEiAiRhIgIkaSIFJGYwXzIiBWZvdW5kIgdnZXRET2xkIgFuIgphUHJlY2lzaW9uIhBhbm5fc19hUHJlY2lzaW9uIg5hbm5fYVByZWNpc2lvbiICbjEiA2N1ciINJHQwMjA4MDUyMDgyNSINJHQwMjEyNDYyMTI5MyIFZ2V0WUQiAUQiAXgiAWMiAWIiDSR0MDIxNzkzMjE4MTMiAXkiBXlOZXh0IgV5RGlmZiINJHQwMjIxMjAyMjE2NyIHY2FsY0RMcCINYW1vdW50QmFsYW5jZSIMcHJpY2VCYWxhbmNlIgpscEVtaXNzaW9uIgVzY2FsZSIKdXBkYXRlZERMcCIOY2FsY0N1cnJlbnRETHAiEGFtb3VudEFzc2V0RGVsdGEiD3ByaWNlQXNzZXREZWx0YSIUbHBBc3NldEVtaXNzaW9uRGVsdGEiEmFtb3VudEFzc2V0QmFsYW5jZSIRcHJpY2VBc3NldEJhbGFuY2UiD2xwQXNzZXRFbWlzc2lvbiIKY3VycmVudERMcCIScmVmcmVzaERMcEludGVybmFsIhdhbW91bnRBc3NldEJhbGFuY2VEZWx0YSIWcHJpY2VBc3NldEJhbGFuY2VEZWx0YSIHYWN0aW9ucyISdmFsaWRhdGVVcGRhdGVkRExwIgZvbGRETHAiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiEWFtb3VudEFzc2V0QW1vdW50IhBwcmljZUFzc2V0QW1vdW50Ig0kdDAyNDE0NzI0MzU5IgNkTHAiDSR0MDI0Njg5MjQ3ODkiDXVudXNlZEFjdGlvbnMiBmRMcE5ldyIMaXNPcmRlclZhbGlkIgJjZyIDcG10IgJjcCIGY2FsbGVyIgdhbUFzUG10IgdwckFzUG10Ig1jYWxjUHV0T25lVGtuIglwbXRBbXRSYXciC3dpdGhUYWtlRmVlIg1jaGVjaEVtaXNzaW9uIg0kdDAyNzEwNjI3NTY4IgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCINJHQwMjc1NzQyNzc1MCILYW1BbW91bnRSYXciC3ByQW1vdW50UmF3Ig0kdDAyNzc1NDI3OTkzIghhbUFtb3VudCIIcHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IgZjaGVja0QiCGxwQW1vdW50Ig5wb29sUHJvcG9ydGlvbiIPYW1vdW50QXNzZXRQYXJ0Ig5wcmljZUFzc2V0UGFydCIJbHBBbXRCb3RoIgVib251cyITZ2V0T25lVGtuVjJJbnRlcm5hbCIKb3V0QXNzZXRJZCIMbWluT3V0QW1vdW50IghwYXltZW50cyIMb3JpZ2luQ2FsbGVyIg10cmFuc2FjdGlvbklkIgphbURlY2ltYWxzIgpwckRlY2ltYWxzIgpwb29sU3RhdHVzIg0kdDAzMDA1MTMwMTYyIgFAIgh0b3RhbEdldCILdG90YWxBbW91bnQiDSR0MDMwMzUyMzA2NTkiBW91dEFtIgVvdXRQciIIY3VyUHJYMTgiBWN1clByIhFvdXRBc3NldElkT3JXYXZlcyIQc2VuZEZlZVRvTWF0Y2hlciIEYnVybiINJHQwMzE0NDQzMTc5NCIQZmVlQW1vdW50Rm9yQ2FsYyIQb3V0SW5BbW91bnRBc3NldCINJHQwMzE3OTczMTkwNSIRcmVmcmVzaERMcEFjdGlvbnMiEWlzVXBkYXRlZERMcFZhbGlkIgFtIgJwbSICcGQiCWlzTWFuYWdlciICcGsiAm1tIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSICY20iA2hwbSIDY3BtIgRzbGlwIglhdXRvU3Rha2UiB2ZhY3RDZmciC3N0YWtpbmdDbnRyIghzbGlwQ250ciIKYW1Bc3NldFBtdCIKcHJBc3NldFBtdCIBZSIJbHBBc3NldElkIgJlbCIGbGVnYWN5IgJzYSICc3AiCGxwVHJuc2ZyIgJzcyINJHQwMzU3NjEzNTgyNiIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiBmNoZWNrcyINJHQwMzY5NjMzNzEyMSIHZXN0aW1MUCINJHQwMzc5MzYzODI4NSIUcGF5bWVudEluQW1vdW50QXNzZXQiDSR0MDM4Mjg4MzgzOTYiB21heFNscGciBmVzdFB1dCINJHQwMzkzNTUzOTQyMCIJb3V0QW10QW10Ig0kdDA0MDIwOTQwMjkxIg1pc0dldERpc2FibGVkIg0kdDA0MDkwOTQxMDY0IhhsYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiHWNoZWNrTGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ig0kdDA0MTU4ODQxNjUyIhBkTHBVcGRhdGVBY3Rpb25zIg1scEFzc2V0QW1vdW50IgVpbmRleCIEbmV3WSICZHkiC3RvdGFsR2V0UmF3Ig0kdDA0MjU1MjQyNjAxIg0kdDA0Mjk0NjQzMDYxIg5zdW1PZkdldEFzc2V0cyISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDSR0MDQ0MjI5NDQzMTAiDWNoZWNrUGF5bWVudHMiCmZhY3RvcnlDZmciB3N0YWtpbmciCnVuc3Rha2VJbnYiAXYiBWJ1cm5BIg0kdDA0NTM3MzQ1NDU0Ig11bnN0YWtlQW1vdW50IhVub0xlc3NUaGVuQW1vdW50QXNzZXQiA3JlcyIMY2hlY2tBbW91bnRzIg0kdDA0NjcwMjQ2NzgzIg0kdDA0NzcxNzQ3OTA1IhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCINJHQwNDgxNjQ0ODI2NyINJHQwNDg1NDY0ODY1MCIIYW10QXNTdHIiB3ByQXNTdHIiAWsiAnByIgxyZXNTY2FsZU11bHQiB3VzckFkZHIiB3BtdEFzSWQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIKb3JkZXJWYWxpZCILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNoegABYQCAwtcvAAFiCQC2AgEAgMLXLwABYwkAtgIBAICAkLu61q3wDQABZAkAtgIBAAAAAWUJALYCAQAAAAFmCQC2AgEAAQABZwkAtgIBAAIAAWgJALYCAQADAAFpCQC2AgEABAABagkAtgIBCQBlAgUBYQkAaQIJAGgCBQFhAAEFAWEAAWsCBVdBVkVTAAFsAgMxMDAAAW0CATEAAW4CAl9fAAFvAgAAAXAAAQABcQACAAFyAAMAAXMABAABdAABAAF1AAIAAXYAAwABdwAEAAF4AAUAAXkABgABegAHAAFBAAgAAUIACQABQwABAAFEAAYAAUUABwABRgAKAAFHCQBrAwAKBQFhAJBOAQFIAgFJAUoJALwCAwkAtgIBBQFJBQFjCQC2AgEFAUoBAUsCAUwBTQkAoAMBCQC8AgMFAUwJALYCAQUBTQUBYwEBTgMBTwFQAVEJAGsDBQFPBQFQBQFRAQFSAQFMAwkAvwICBQFkBQFMCQC+AgEFAUwFAUwBAVMBAUwDCQC/AgIFAWQFAUwJAL4CAQUBTAUBTAEBVAACEyVzX19mYWN0b3J5Q29udHJhY3QBAVUAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBVgACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBVwACESVzJXNfX3ByaWNlX19sYXN0AQFYAgFZAVoJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFZCQDMCAIJAKQDAQUBWgUDbmlsBQFuAQJhYQICYWICYWMJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQJhYgICX18FAmFjAQJhZAICYWICYWMJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQJhYgICX18FAmFjAQJhZQACDyVzX19hbW91bnRBc3NldAECYWYAAg4lc19fcHJpY2VBc3NldAECYWcAAgclc19fYW1wAQJhaAACDSVzX19hZGRvbkFkZHIAAmFpAgclc19fZmVlAAJhagkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhaQUBRwACYWsJALkJAgkAzAgCAgIlcwkAzAgCAgNkTHAFA25pbAUBbgACYWwJALkJAgkAzAgCAgIlcwkAzAgCAhJkTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBbgACYW0JALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoRExwRGVsYXkFA25pbAUBbgACYW4AAQACYW8JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYW0FAmFuAQJhcAACESVzX19mYWN0b3J5Q29uZmlnAQJhcQACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYXICAmFzAmF0CQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhcwICX18FAmF0AghfX2NvbmZpZwECYXUBAmF2CQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmF2AQJhdwACDCVzX19zaHV0ZG93bgECYXgAAh0lc19fYWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAECYXkAAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYXoDAmFBAmFCAmFDCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEUZhaWxlZDogb3JkVmFsaWQ9CQClAwEFAmFBAgsgc25kclZhbGlkPQkApQMBBQJhQgIMIG10Y2hyVmFsaWQ9CQClAwEFAmFDAQJhRAEBTAQCYUUFAUwDCQABAgUCYUUCBlN0cmluZwQCYUYFAmFFBQJhRgkAAgECE2ZhaWwgY2FzdCB0byBTdHJpbmcBAmFHAgJhSAJhSQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFIBQJhSQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhSAkAzAgCAgEuCQDMCAIFAmFJCQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFKAgJhSAJhSQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFIBQJhSQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhSAkAzAgCAgEuCQDMCAIFAmFJCQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFLAQJhTAkAAgEJALkJAgkAzAgCAg9scF9zdGFibGUucmlkZToJAMwIAgUCYUwFA25pbAIBIAECYU0BAmFMCQC5CQIJAMwIAgIPbHBfc3RhYmxlLnJpZGU6CQDMCAIFAmFMBQNuaWwCASAAAmFOCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUcCBQR0aGlzCQEBVAAAAmFPCQECYUcCBQR0aGlzCQECYWcAAQJhUAAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYU4JAQJhdwAHAQJhUQAJANkEAQkBAmFHAgUCYU4JAQJhcQAAAmFSCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUcCBQJhTgkBAmF5AAECYVMABAJhVAkBAmFHAgUEdGhpcwkBAmFlAAQCYVUJAQJhRwIFBHRoaXMJAQJhZgAEAmFWCQECYUoCBQJhTgkBAmF1AQUCYVUEAmFzCQECYUoCBQJhTgkBAmF1AQUCYVQJALUJAgkBAmFHAgUCYU4JAQJhcgIJAKQDAQUCYXMJAKQDAQUCYVYFAW4BAmFXAQJhWAMJAAACBQJhWAUBawUEdW5pdAkA2QQBBQJhWAECYVkBAmFYAwkAAAIFAmFYBQR1bml0BQFrCQDYBAEJAQV2YWx1ZQEFAmFYAQJhWgECYmEJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJiYQUBdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJhBQF1CQDZBAEJAJEDAgUCYmEFAXYJAQJhVwEJAJEDAgUCYmEFAXcJAQJhVwEJAJEDAgUCYmEFAXgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYQUBeQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJhBQF6AAJiYgkBAmFaAQkBAmFTAAACYmMFAmJiAAJiZAgFAmJjAl8xAAJiZQgFAmJjAl8yAAJiZggFAmJjAl8zAAJiZwgFAmJjAl80AAJiaAgFAmJjAl81AAJiaQgFAmJjAl82AAJiaggFAmJjAl83AQJiawAJALUJAgkBAmFHAgUCYU4JAQJhcAAFAW4AAmJsCQECYmsAAAJibQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYmwFAUMCIEludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzAAJibgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYmwFAUUCIEludmFsaWQgc2xpcGFnZSBjb250cmFjdCBhZGRyZXNzAAJibwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYmwFAUYCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MAAmJwCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJibAUBRAIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwECYnEKAmJyAmJzAmJ0AmJ1AmJ2AmJ3AmJ4AmJ5AmJ6AmJBCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJicgkAzAgCCQCkAwEFAmJzCQDMCAIJAKQDAQUCYnQJAMwIAgkApAMBBQJidQkAzAgCCQCkAwEFAmJ2CQDMCAIJAKQDAQUCYncJAMwIAgkApAMBBQJieAkAzAgCCQCkAwEFAmJ5CQDMCAIJAKQDAQUCYnoJAMwIAgkApAMBBQJiQQUDbmlsBQFuAQJiQgYCYkMCYkQCYkUCYnUCYngCYnkJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiQwkAzAgCCQCkAwEFAmJECQDMCAIJAKQDAQUCYkUJAMwIAgkApAMBBQJidQkAzAgCCQCkAwEFAmJ4CQDMCAIJAKQDAQUCYnkFA25pbAUBbgECYkYBAmJHAwkAAAIFAmJHAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJiRwECYkgCAmJJAmJKCQC8AgMFAmJJBQFjBQJiSgECYksDAmJMAmJNAmJOBAJiTwkAvAIDCQC4AgIFAmJMBQJiTQUBYgUCYk0EAmJQCQC/AgIJALgCAgUCYk4JAQFSAQUCYk8FAWQDCQEBIQEFAmJQCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFAmJPCQCUCgIFAmJQCQCZAwEJAMwIAgUCYkwJAMwIAgUCYk0FA25pbAECYlEDAmJSAmJTAmJUBAJiTwkAvAIDBQJiUwUBYgUCYlIEAmJVCQC/AgIFAmJUBQJiTwMDBQJiVQYJAL8CAgUCYlMFAmJSCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJiUwIBIAkApgMBBQJiUgIBIAkApgMBBQJiTwIBIAkApgMBBQJiVAUCYlUBAmJWBAJiVwJiWAJiWQJiWgQCY2EJAQFIAgUCYlkFAmJXBAJjYgkBAUgCBQJiWgUCYlgJAQJiSAIFAmNiBQJjYQECY2MDAmJZAmJaAmNkBAJjZQkBAmFTAAQCY2YJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjZQUBeQQCY2cJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjZQUBegQCY2gJAQJiVgQFAmNmBQJjZwUCYlkFAmJaBAJiSgkBAUgCBQJiWQUCY2YEAmJJCQEBSAIFAmJaBQJjZwQCY2kJAQFIAgUCY2QFAWEEAmNqCQECYkgCBQJiSgUCY2kEAmNrCQECYkgCBQJiSQUCY2kJAMwIAgUCY2gJAMwIAgUCY2oJAMwIAgUCY2sFA25pbAECY2wDAmJZAmJaAmNkBAJjbQkBAmNjAwUCYlkFAmJaBQJjZAkAzAgCCQEBSwIJAJEDAgUCY20AAAUBYQkAzAgCCQEBSwIJAJEDAgUCY20AAQUBYQkAzAgCCQEBSwIJAJEDAgUCY20AAgUBYQUDbmlsAQJjbgECY28EAmNwCQBrAwUCY28FAmFqBQFhCQCUCgIJAGUCBQJjbwUCY3AFAmNwAQJjcQQCY3ICY3MCY3QCY3UEAmNlCQECYVMABAJjdgkAkQMCBQJjZQUBdgQCY3cJAJEDAgUCY2UFAXcEAmN4CQCRAwIFAmNlBQF4BAJjeQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNlBQF5BAJjegkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNlBQF6BAJjQQkAkQMCBQJjZQUBdQQCY0IICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJjdgILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CBQJjdgUCY3MJAAIBAg9Xcm9uZyBwbXQgYXNzZXQEAmNDCQECYkYBBQJjdwQCY0QJAQFIAgUCY0MFAmN5BAJjRQkBAmJGAQUCY3gEAmNGCQEBSAIFAmNFBQJjegQCY0cJAQJiSAIFAmNGBQJjRAQCY0gJAQFLAgUCY0cFAWEEAmNJCQEBSAIFAmN0BQFhBAJjSgkBAUgCBQJjQgUBYQQCY0sJALwCAwUCY0QFAmNJBQJjSgQCY0wJALwCAwUCY0YFAmNJBQJjSgQCY00JAQFLAgUCY0sFAmN5BAJjTgkBAUsCBQJjTAUCY3oEAmNPAwkAAAIFAmNyAgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjdQUCY00DCQAAAgUCY3cCBVdBVkVTBQR1bml0CQDZBAEFAmN3CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmN1BQJjTgMJAAACBQJjeAIFV0FWRVMFBHVuaXQJANkEAQUCY3gJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAgkApQgBBQJjdQUCY3IJAQJiQgYFAmNNBQJjTgUCY3QFAmNIBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmNICQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNIBQNuaWwJAJwKCgUCY00FAmNOBQJjdwUCY3gFAmNDBQJjRQUCY0IFAmNHBQJjQQUCY08BAmNQDQJjcgJiTgJjUQJjUgJjUwJjVAJjdQJjVQJjVgJjVwJjWAJjWQJjWgQCY2UJAQJhUwAEAmN2CQDZBAEJAJEDAgUCY2UFAXYEAmRhCQCRAwIFAmNlBQF3BAJkYgkAkQMCBQJjZQUBeAQCZGMJAJEDAgUCY2UFAUEEAmRkCQCRAwIFAmNlBQFCBAJkZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNlBQF5BAJkZgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNlBQF6BAJjQQkAkQMCBQJjZQUBdQQCZGcICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY3YCCFdyIGxwIGFzCHF1YW50aXR5BAJjQwMFAmNVCQECYkYBBQJkYQMDBQJjVwkAAAIFAmNaBQJkYQcJAGUCCQECYkYBBQJkYQUCY1kDBQJjVwkBAmJGAQUCZGEJAGUCCQECYkYBBQJkYQUCY1EEAmNFAwUCY1UJAQJiRgEFAmRiAwMFAmNXCQAAAgUCY1oFAmRiBwkAZQIJAQJiRgEFAmRiBQJjWQMFAmNXCQECYkYBBQJkYgkAZQIJAQJiRgEFAmRiBQJjUwQCZGgJAQFIAgUCY1EFAmRlBAJkaQkBAUgCBQJjUwUCZGYEAmRqCQECYkgCBQJkaQUCZGgEAmNECQEBSAIFAmNDBQJkZQQCY0YJAQFIAgUCY0UFAmRmBAJkawMJAAACBQJkZwAABAJjRwUBZAQCZGwFAWQEAmNpCQB2BgkAuQICBQJkaAUCZGkAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFLAgUCY2kFAWEJAQFLAgUCZGgFAmRlCQEBSwIFAmRpBQJkZgkBAmJIAgkAtwICBQJjRgUCZGkJALcCAgUCY0QFAmRoBQJkbAQCY0cJAQJiSAIFAmNGBQJjRAQCZG0JALwCAwkBAVIBCQC4AgIFAmNHBQJkagUBYwUCY0cEAmRsCQEBSAIFAmJOBQFhAwMDBQJjWAkBAiE9AgUCY0cFAWQHCQC/AgIFAmRtBQJkbAcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCZG0CAyA+IAkApgMBBQJkbAQCZG4JAQFIAgUCZGcFAWEEAmRvCQC8AgMFAmRoBQJjRwUBYwQCZHAJALwCAwUCZGkFAWMFAmNHBAJkcQMJAL8CAgUCZG8FAmRpCQCUCgIFAmRwBQJkaQkAlAoCBQJkaAUCZG8EAmRyCAUCZHECXzEEAmRzCAUCZHECXzIEAmNpCQC8AgMFAmRuBQJkcwUCY0YJAJcKBQkBAUsCBQJjaQUBYQkBAUsCBQJkcgUCZGUJAQFLAgUCZHMFAmRmBQJjRwUCZGwEAmR0CAUCZGsCXzEEAmR1CAUCZGsCXzIEAmR2CAUCZGsCXzMEAmNICQEBSwIIBQJkawJfNAUBYQQCZHcJAQFLAggFAmRrAl81BQFhAwkAZwIAAAUCZHQJAAIBAgdMUCA8PSAwBAJkeAMJAQEhAQUCY1YAAAUCZHQEAmR5CQBlAgUCY1EFAmR1BAJkegkAZQIFAmNTBQJkdgQCZEEDAwUCY1cJAAACBQJjWgUCZGEHCQCUCgIFAmNZAAADAwUCY1cJAAACBQJjWgUCZGIHCQCUCgIAAAUCY1kJAJQKAgUCZHUFAmR2BAJkQggFAmRBAl8xBAJkQwgFAmRBAl8yBAJkRAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJjSAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjSAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECBQJjdQUCY3IJAQJicQoFAmRCBQJkQwUCZHgFAmNIBQJiTgUCZHcFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmR5BQJkegUDbmlsCQCfCg0FAmR0BQJkeAUCY0gFAmNDBQJjRQUCZGcFAmN2BQJjQQUCZEQFAmR5BQJkegUCY1IFAmNUAQJkRQECZEYEAmRHCQCRAwIFAmRGAAAEAmRICQCRAwIFAmRGAAEEAmRJCQC3AgIFAmRHBQJkSAMJAAACBQJkSQUBZQUBZQQCZEoJAQ1wYXJzZUludFZhbHVlAQUCYU8EAmRLCQBoAgUCZEoAAgQCY20JALwCAwUCZEcFAmRIBQFmBAJkTAkAvAIDBQJjbQUBaQUBZgQCZE0JALwCAwkAtgIBBQJkSwUCZEkFAWYEAmROCQC2AgEJAGUCBQJkSwABCgECZE8BAmRQBAJkUQkAvAIDBQJkUAUCZFAFAWYEAmRSCQC8AgMFAmRRBQJkUAUBZgQCZFMJALwCAwUCZFIFAWYFAmRMCQC8AgMJALcCAgUCZE0JALwCAwUCZFMFAWcFAWYFAmRQCQC3AgIJALwCAwUCZE4FAmRQBQFmCQC8AgMFAWgFAmRTBQFmCgECZFQCAmRVAmRWAwgFAmRVAl8yBQJkVQQCZFAIBQJkVQJfMQQCZFcJAQJkTwEFAmRQBAJkWAkAoAMBCQC4AgIFAmRXCQEFdmFsdWUBBQJkUAQCZFkDCQBmAgAABQJkWAkBAS0BBQJkWAUCZFgDCQBnAgABBQJkWQkAlAoCBQJkVwYJAJQKAgUCZFcHBAJkWgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlYQoAAmViBQJkWgoAAmVjCQCQAwEFAmViCgACZWQJAJQKAgUCZEkHCgECZWUCAmVmAmVnAwkAZwIFAmVnBQJlYwUCZWYJAQJkVAIFAmVmCQCRAwIFAmViBQJlZwoBAmVoAgJlZgJlZwMJAGcCBQJlZwUCZWMFAmVmCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJlaAIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIFAmVkAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmRQCAUCZWECXzEEAmVpCAUCZWECXzIDBQJlaQUCZFAJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCZFABAmVqAQJkRgQCZWsFAWcEAmRHCQCRAwIFAmRGAAAEAmRICQCRAwIFAmRGAAEEAmVsCQCnAwEFAWwEAmRKCQC5AgIJAKcDAQUCYU8FAmVsBAJkSQkAtwICBQJkRwUCZEgDCQAAAgUCZEkFAWUFAWUEAmRLCQC5AgIFAmRKBQJlawQCZEwJALkCAgkAuQICCQC5AgIFAmRHBQJkSAUCZWsFAmVrBAJlbQkAugICCQC5AgIFAmRLBQJkSQUCZWwEAmVuCQC4AgIFAmRLBQJlbAQCZW8JALcCAgUCZWsFAWYKAQJkVAICZFUCZXAEAmVxBQJkVQQCZFAIBQJlcQJfMQQCZWkIBQJlcQJfMgMJAQIhPQIFAmVpBQR1bml0BQJkVQQCZFMJALoCAgkAuQICCQC5AgIFAmRQBQJkUAUCZFAFAmRMBAJkVwkAugICCQC5AgIJALcCAgUCZW0JALkCAgUCZFMFAmVrBQJkUAkAtwICCQC6AgIJALkCAgUCZW4FAmRQBQJlbAkAuQICBQJlbwUCZFMEAmRZCQEBUwEJALgCAgUCZFcJAQV2YWx1ZQEFAmRQAwkAwAICBQFmBQJkWQkAlAoCBQJkVwUCZXAJAJQKAgUCZFcFBHVuaXQEAmRaCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmVyCgACZWIFAmRaCgACZWMJAJADAQUCZWIKAAJlZAkAlAoCBQJkSQUEdW5pdAoBAmVlAgJlZgJlZwMJAGcCBQJlZwUCZWMFAmVmCQECZFQCBQJlZgkAkQMCBQJlYgUCZWcKAQJlaAICZWYCZWcDCQBnAgUCZWcFAmVjBQJlZgkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZWgCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCCQECZWUCBQJlZAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJkUAgFAmVyAl8xBAJlaQgFAmVyAl8yAwkBAiE9AgUCZWkFBHVuaXQFAmRQCQACAQkArAICAhlEIGNhbGN1bGF0aW9uIGVycm9yLCBEID0gCQCmAwEFAmRQAQJlcwMCZEYCZFYCZXQEAmVrBQFnBAJldQkAkQMCBQJkRgMJAAACBQJkVgAAAAEAAAQCZWwJAKcDAQUBbAQCZEoJALkCAgkApwMBBQJhTwUCZWwEAmRJBQJldQQCZEsJALkCAgUCZEoFAmVrBAJldgkAugICCQC5AgIJALkCAgkAugICCQC5AgIFAmV0BQJldAkAuQICBQJldQUCZWsFAmV0BQJlbAkAuQICBQJkSwUCZWsEAmV3CQC4AgIJALcCAgUCZEkJALoCAgkAuQICBQJldAUCZWwFAmRLBQJldAoBAmRUAgJkVQJlcAQCZXgFAmRVBAJleQgFAmV4Al8xBAJlaQgFAmV4Al8yAwkBAiE9AgUCZWkFBHVuaXQFAmRVBAJlegkAugICCQC3AgIJALkCAgUCZXkFAmV5BQJldgkAtwICCQC5AgIFAWcFAmV5BQJldwQCZUEJAQFTAQkAuAICBQJlegkBBXZhbHVlAQUCZXkDCQDAAgIFAWYFAmVBCQCUCgIFAmV6BQJlcAkAlAoCBQJlegUEdW5pdAQCZFoJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZUIKAAJlYgUCZFoKAAJlYwkAkAMBBQJlYgoAAmVkCQCUCgIFAmV0BQR1bml0CgECZWUCAmVmAmVnAwkAZwIFAmVnBQJlYwUCZWYJAQJkVAIFAmVmCQCRAwIFAmViBQJlZwoBAmVoAgJlZgJlZwMJAGcCBQJlZwUCZWMFAmVmCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJlaAIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIFAmVkAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmV5CAUCZUICXzEEAmVpCAUCZUICXzIDCQECIT0CBQJlaQUEdW5pdAUCZXkJAAIBCQCsAgICGVkgY2FsY3VsYXRpb24gZXJyb3IsIFkgPSAJAKYDAQUCZXkBAmVDAwJlRAJlRQJlRgQCZUcJALYCAQCAoJSljR0EAmVICQC8AgMJAQJkRQEJAMwIAgUCZUQJAMwIAgUCZUUFA25pbAUCZUcFAmVGAwkAAAIFAmVGBQFlBQFlBQJlSAECZUkDAmVKAmVLAmVMBAJlTQkAuAICCQC2AgEJAQJiRgEJAQJhWQEFAmJnBQJlSgQCZU4JALgCAgkAtgIBCQECYkYBCQECYVkBBQJiaAUCZUsEAmVPCQC4AgIJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYmYIcXVhbnRpdHkFAmVMBAJlUAkBAmVDAwUCZU0FAmVOBQJlTwUCZVABAmVRAwJlUgJlUwJlTAQCZU0JAGQCCQECYkYBCQECYVkBBQJiZwUCZVIEAmVOCQBkAgkBAmJGAQkBAmFZAQUCYmgFAmVTBAJlTwkAZAIICQEFdmFsdWUBCQDsBwEFAmJmCHF1YW50aXR5BQJlTAQCZUgJAQJlQwMJALYCAQUCZU0JALYCAQUCZU4JALYCAQUCZU8EAmVUCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJhbAUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFAmFrCQCmAwEFAmVIBQNuaWwJAJQKAgUCZVQFAmVIAQJlVQICZVYCZUgDCQDAAgIFAmVIBQJlVgYJAQJhSwECInVwZGF0ZWQgRExwIGxvd2VyIHRoYW4gY3VycmVudCBETHABAmVXAQJlWAQCZVkIBQJlWAZhbW91bnQEAmVaCQBuBAgFAmVYBmFtb3VudAgFAmVYBXByaWNlBQFhBQVGTE9PUgQCZmEDCQAAAggFAmVYCW9yZGVyVHlwZQUDQnV5CQCUCgIFAmVZCQEBLQEFAmVaCQCUCgIJAQEtAQUCZVkFAmVaBAJlUggFAmZhAl8xBAJlUwgFAmZhAl8yAwMDCQECYVAABgkAAAIFAmJlBQFyBgkAAAIFAmJlBQFzCQACAQINQWRtaW4gYmxvY2tlZAMDCQECIT0CCAgFAmVYCWFzc2V0UGFpcgthbW91bnRBc3NldAUCYmcGCQECIT0CCAgFAmVYCWFzc2V0UGFpcgpwcmljZUFzc2V0BQJiaAkAAgECCVdyIGFzc2V0cwQCZmIJAKcDAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUCYWsEAmZjCQECZVEDBQJlUgUCZVMAAAQCZmQIBQJmYwJfMQQCZmUIBQJmYwJfMgQCZmYJAMACAgUCZmUFAmZiBQJmZgECZmcBAmRWAwkBAiE9AgkAkAMBCAUCZFYIcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmZoCQEFdmFsdWUBCQCRAwIIBQJkVghwYXltZW50cwAABAJjcwkBBXZhbHVlAQgFAmZoB2Fzc2V0SWQEAmNZCAUCZmgGYW1vdW50BAJkawkBAmNxBAkA2AQBCAUCZFYNdHJhbnNhY3Rpb25JZAkA2AQBBQJjcwUCY1kIBQJkVgZjYWxsZXIEAmNNCAUCZGsCXzEEAmNOCAUCZGsCXzIEAmNBCQENcGFyc2VJbnRWYWx1ZQEIBQJkawJfOQQCY08IBQJkawNfMTADAwkBAmFQAAYJAAACBQJjQQUBcwkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmNBCQCXCgUFAmNNBQJjTgUCY1kFAmNzBQJjTwECZmkKAmZqAmFjAmZrAmZsAmJOAmNWAmNXAmNYAmNZAmNaBAJkawkBAmNQDQUCYWMFAmJOCAkBBXZhbHVlAQUCZmsGYW1vdW50CAkBBXZhbHVlAQUCZmsHYXNzZXRJZAgJAQV2YWx1ZQEFAmZsBmFtb3VudAgJAQV2YWx1ZQEFAmZsB2Fzc2V0SWQFAmZqCQAAAgUCYWMCAAUCY1YFAmNXBQJjWAUCY1kFAmNaBAJjQQkBDXBhcnNlSW50VmFsdWUBCAUCZGsCXzgDAwMJAQJhUAAGCQAAAgUCY0EFAXEGCQAAAgUCY0EFAXMJAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFAmNBBQJkawECZm0FAmZuAmNzAmN1AmFjAmZvBAJiYQkBAmFTAAQCY3cJAJEDAgUCYmEFAXcEAmN4CQCRAwIFAmJhBQF4BAJjdgkAkQMCBQJiYQUBdgQCZGUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYQUBeQQCZGYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYQUBegQCZU8JALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmN2AhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJmcAMJAL8CAgUCZU8FAWUGCQACAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJmcAUCZnAEAmNDCQECYkYBBQJjdwQCY0UJAQJiRgEFAmN4BAJmcQMJAAACBQJhYwIACQCUCgIFAmNDBQJjRQMJAAACBQJjcwUCY3cDCQBmAgUCZm4FAmNDCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCCQBlAgUCY0MFAmZuBQJjRQMJAAACBQJjcwUCY3gDCQBmAgUCZm4FAmNFCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCBQJjQwkAZQIFAmNFBQJmbgkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmZyCAUCZnECXzEEAmZzCAUCZnECXzIEAmZ0AwkAAAIFAmNzBQJjdwkAlAoCBQJmbgAAAwkAAAIFAmNzBQJjeAkAlAoCAAAFAmZuCQACAQIPaW52YWxpZCBwYXltZW50BAJmdQgFAmZ0Al8xBAJmdggFAmZ0Al8yBAJmdwMFAmZvCQCVCgMICQECY24BBQJmdQJfMQgJAQJjbgEFAmZ2Al8xCAkBAmNuAQUCZm4CXzIJAJUKAwUCZnUFAmZ2AAAEAmZ4CAUCZncCXzEEAmZ5CAUCZncCXzIEAmNwCAUCZncCXzMEAmZ6CQBkAgUCZnIFAmZ4BAJmQQkAZAIFAmZzBQJmeQQCYlMJAQJkRQEJAMwIAgkAtgIBBQJmcgkAzAgCCQC2AgEFAmZzBQNuaWwEAmJSCQECZEUBCQDMCAIJALYCAQUCZnoJAMwIAgkAtgIBBQJmQQUDbmlsBAJmQgMJAL8CAgUCYlIFAmJTBgkBBXRocm93AAMJAAACBQJmQgUCZkIEAmZDCQC8AgMFAmVPCQC4AgIFAmJSBQJiUwUCYlMEAmNICQEBSwIJAQJiSAIJAQFIAgUCZkEFAmRmCQEBSAIFAmZ6BQJkZQUBYQQCZEQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCY0gJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0gJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgUCY3UFAmFjCQECYnEKBQJmdQUCZnYJAKADAQUCZkMFAmNIAAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZkQJAGsDBQJmcwUBYQUCZnIEAmZFCQBrAwUCZm4FAWEJAGQCBQJmRAUBYQQCZkYJAGUCBQJmbgUCZkUEAmZHCQC8AgMFAmVPCQC2AgEFAmZGCQC2AgEFAmZzBAJmSAkAoAMBCQC8AgMJALgCAgUCZkMFAmZHBQFiBQJmRwkAlgoECQCgAwEFAmZDBQJkRAUCY3AFAmZICQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmSQYCZkoCZksCZkwCZmoCZk0CZk4EAmJhCQECYVMABAJjdgkAkQMCBQJiYQUBdgQCY3cJAJEDAgUCYmEFAXcEAmN4CQCRAwIFAmJhBQF4BAJmTwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJhBQF5BAJmUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJhBQF6BAJmUQkAkQMCBQJiYQUBdQQCY3UDCQAAAgUCZmoFAmJwBQJmTQUCZmoEAmZoCQEFdmFsdWUBCQCRAwIFAmZMAAAEAmNzCQEFdmFsdWUBCAUCZmgHYXNzZXRJZAQCY1kIBQJmaAZhbW91bnQEAmVQCQECZUkDBQFlBQFlBQFlAwkAAAIFAmVQBQJlUAQCY3IJANgEAQUCZk4DCQECIT0CBQJjdgkA2AQBBQJjcwkAAgECCFdyb25nIExQBAJjQwkBAmJGAQUCY3cEAmNFCQECYkYBBQJjeAQCZlIKAAJmUwkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmZKCQDMCAIFAmNZBQNuaWwFA25pbAMJAAECBQJmUwIKKEludCwgSW50KQUCZlMJAAIBCQCsAgIJAAMBBQJmUwIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQMJAAACBQJmUgUCZlIEAmNwCAUCZlICXzIEAmZUCAUCZlICXzEEAmZVAwMJAGYCBQJmSwAACQBmAgUCZksFAmZUBwkBAmFLAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmSwUDbmlsAgAFAmZUBAJmVgMJAAACBQJmSgUCY3cJAJYKBAUCZlUAAAkAZQIJAGUCBQJjQwUCZlUFAmNwBQJjRQMJAAACBQJmSgUCY3gJAJYKBAAABQJmVQUCY0MJAGUCCQBlAgUCY0UFAmZVBQJjcAkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJmVwgFAmZWAl8xBAJmWAgFAmZWAl8yBAJmeggFAmZWAl8zBAJmQQgFAmZWAl80BAJmWQkBAmJIAgkBAUgCBQJmQQUCZlAJAQFIAgUCZnoFAmZPBAJmWgkBAUsCBQJmWQUBYQQCZ2EDCQAAAgUCZkoCBVdBVkVTBQR1bml0CQDZBAEFAmZKBAJnYgMJAGYCBQJjcAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFSBQJjcAUCZ2EFA25pbAUDbmlsBAJjTwkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmN1BQJmVQUCZ2EJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAgkApQgBBQJjdQUCY3IJAQJiQgYFAmZXBQJmWAUCY1kFAmZaBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmZaCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmZaBQNuaWwFAmdiAwkAAAIFAmNPBQJjTwQCZ2MJAPwHBAUCYU4CBGJ1cm4JAMwIAgUCY1kFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3MFAmNZBQNuaWwDCQAAAgUCZ2MFAmdjBAJnZAQCZ2UDCQAAAgUEdGhpcwUCYVIAAAUCY3AEAmdmAwkAAAIJAQJhVwEFAmZKBQJiZwYHAwUCZ2YJAJQKAgkBAS0BCQBkAgUCZlQFAmdlAAAJAJQKAgAACQEBLQEJAGQCBQJmVAUCZ2UEAmVSCAUCZ2QCXzEEAmVTCAUCZ2QCXzIEAmdnCQECZVEDBQJlUgUCZVMAAAQCZ2gIBQJnZwJfMQQCZUgIBQJnZwJfMgQCZ2kJAQJlVQIFAmVQBQJlSAMJAAACBQJnaQUCZ2kJAJQKAgkAzggCBQJjTwUCZ2gFAmZVCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJnagAEAmFFCQCiCAEJAQFVAAMJAAECBQJhRQIGU3RyaW5nBAJkSQUCYUUJANkEAQUCZEkDCQABAgUCYUUCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZ2sABAJhRQkAoggBCQEBVgADCQABAgUCYUUCBlN0cmluZwQCZEkFAmFFCQDZBAEFAmRJAwkAAQIFAmFFAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAAmdsCQACAQIRUGVybWlzc2lvbiBkZW5pZWQBAmdtAQJkVgQCYUUJAQJnagADCQABAgUCYUUCCkJ5dGVWZWN0b3IEAmduBQJhRQkAAAIIBQJkVg9jYWxsZXJQdWJsaWNLZXkFAmduAwkAAQIFAmFFAgRVbml0CQAAAggFAmRWBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJnbwECZFYEAmFFCQECZ2oAAwkAAQIFAmFFAgpCeXRlVmVjdG9yBAJnbgUCYUUDCQAAAggFAmRWD2NhbGxlclB1YmxpY0tleQUCZ24GBQJnbAMJAAECBQJhRQIEVW5pdAMJAAACCAUCZFYGY2FsbGVyBQR0aGlzBgUCZ2wJAAIBAgtNYXRjaCBlcnJvch0CZFYBC2NvbnN0cnVjdG9yAQFUBAJldgkBAmdvAQUCZFYDCQAAAgUCZXYFAmV2CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFUAAUBVAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWAQpzZXRNYW5hZ2VyAQJncAQCZXYJAQJnbwEFAmRWAwkAAAIFAmV2BQJldgQCZ3EJANkEAQUCZ3ADCQAAAgUCZ3EFAmdxCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFWAAUCZ3AFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgEOY29uZmlybU1hbmFnZXIABAJjbQkBAmdrAAQCZ3IDCQEJaXNEZWZpbmVkAQUCY20GCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmdyBQJncgQCZ3MDCQAAAggFAmRWD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCY20GCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmdzBQJncwkAzAgCCQELU3RyaW5nRW50cnkCCQEBVQAJANgEAQkBBXZhbHVlAQUCY20JAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVYABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBA3B1dAICZ3QCZ3UEAmd2CQECYmsABAJndwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZ3YFAUMCCldyIHN0IGFkZHIEAmd4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJndgUBRQIKV3Igc2wgYWRkcgMJAGYCAAAFAmd0CQACAQIOV3Jvbmcgc2xpcHBhZ2UDCQECIT0CCQCQAwEIBQJkVghwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJneQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZFYIcGF5bWVudHMAAAZhbW91bnQEAmd6CQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkVghwYXltZW50cwABBmFtb3VudAQCZVAJAQJlSQMFAmd5BQJnegkAtgIBAAADCQAAAgUCZVAFAmVQBAJnQQkBAmZpCgkApQgBCAUCZFYGY2FsbGVyCQDYBAEIBQJkVg10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJkVghwYXltZW50cwABBQJndAYHBgAAAgAEAmR4CAUCZ0ECXzIEAmdCCAUCZ0ECXzcEAmNPCAUCZ0ECXzkEAmR5CAUCZ0EDXzEwBAJkeggFAmdBA18xMQQCY3cIBQJnQQNfMTIEAmN4CAUCZ0EDXzEzBAJkawkA/AcEBQJhTgIEZW1pdAkAzAgCBQJkeAUDbmlsBQNuaWwDCQAAAgUCZGsFAmRrBAJnQwQCYUUFAmRrAwkAAQIFAmFFAgdBZGRyZXNzBAJnRAUCYUUJAPwHBAUCZ0QCBGVtaXQJAMwIAgUCZHgFA25pbAUDbmlsBQR1bml0AwkAAAIFAmdDBQJnQwQCZ0UDCQBmAgUCZHkAAAkA/AcEBQJneAIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmN3BQJkeQUDbmlsBQNuaWwDCQAAAgUCZ0UFAmdFBAJnRgMJAGYCBQJkegAACQD8BwQFAmd4AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3gFAmR6BQNuaWwFA25pbAMJAAACBQJnRgUCZ0YEAmdHAwUCZ3UEAmdICQD8BwQFAmd3AgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnQgUCZHgFA25pbAMJAAACBQJnSAUCZ0gFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZFYGY2FsbGVyBQJkeAUCZ0IFA25pbAQCZ0kJAQJlUQMAAAAAAAAEAmdoCAUCZ0kCXzEEAmVICAUCZ0kCXzIEAmdpCQECZVUCBQJlUAUCZUgDCQAAAgUCZ2kFAmdpCQDOCAIJAM4IAgUCY08FAmdHBQJnaAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgELcHV0T25lVGtuVjICAmZLAmd1BAJnSgoAAmZTCQD8BwQFAmFOAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZlMCB0Jvb2xlYW4FAmZTCQACAQkArAICCQADAQUCZlMCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdLAwMDCQECYVAABgkAAAIFAmJlBQFxBgkAAAIFAmJlBQFzBgUCZ0oEAmdMCQDMCAIDAwkBASEBBQJnSwYJAQJnbQEFAmRWBgkBAmFLAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZFYIcGF5bWVudHMAAQYJAQJhSwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdMBQJnTAQCYmEJAQJhUwAEAmN3CQCRAwIFAmJhBQF3BAJjeAkAkQMCBQJiYQUBeAQCY3YJANkEAQkAkQMCBQJiYQUBdgQCZk8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYQUBeQQCZlAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYQUBegQCY3UDCQAAAggFAmRWBmNhbGxlcgUEdGhpcwgFAmRWDG9yaWdpbkNhbGxlcggFAmRWBmNhbGxlcgQCZmgJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAAEAmNzCQDYBAEJAQV2YWx1ZQEIBQJmaAdhc3NldElkBAJjWQgFAmZoBmFtb3VudAQCZ00JAQJmbQUFAmNZBQJjcwkApQgBBQJjdQkA2AQBCAUCZFYNdHJhbnNhY3Rpb25JZAYDCQAAAgUCZ00FAmdNBAJjcAgFAmdNAl8zBAJjTwgFAmdNAl8yBAJnTggFAmdNAl8xBAJkeAMDCQBmAgUCZksAAAkAZgIFAmZLBQJnTgcJAQJhSwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZksFA25pbAIABQJnTgQCZ0EJAPwHBAUCYU4CBGVtaXQJAMwIAgUCZHgFA25pbAUDbmlsAwkAAAIFAmdBBQJnQQQCZ0MEAmFFBQJnQQMJAAECBQJhRQIHQWRkcmVzcwQCZ0QFAmFFCQD8BwQFAmdEAgRlbWl0CQDMCAIFAmR4BQNuaWwFA25pbAUEdW5pdAMJAAACBQJnQwUCZ0MEAmdHAwUCZ3UEAmdICQD8BwQFAmJtAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjdgUCZHgFA25pbAMJAAACBQJnSAUCZ0gFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZFYGY2FsbGVyBQJkeAUCY3YFA25pbAQCZ2IDCQBmAgUCY3AAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhUgUCY3AJANkEAQUCY3MFA25pbAUDbmlsBAJnTwMJAAACBQR0aGlzBQJhUgkAlAoCAAAAAAQCZ1ADCQAAAggFAmZoB2Fzc2V0SWQFAmJnBgcDBQJnUAkAlAoCCQEBLQEFAmNwAAAJAJQKAgAACQEBLQEFAmNwBAJlUggFAmdPAl8xBAJlUwgFAmdPAl8yBAJnUQkBAmVRAwUCZVIFAmVTAAAEAmdoCAUCZ1ECXzEEAmVICAUCZ1ECXzIJAJQKAgkAzggCCQDOCAIJAM4IAgUCY08FAmdHBQJnYgUCZ2gFAmR4CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWAQpwdXRGb3JGcmVlAQJnUgMJAGYCAAAFAmdSCQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAmRWCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmdTCQECZmkKCQClCAEIBQJkVgZjYWxsZXIJANgEAQgFAmRWDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZFYIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZFYIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRWCHBheW1lbnRzAAEFAmdSBwcGAAACAAQCY08IBQJnUwJfOQQCZ3kJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAAGYW1vdW50BAJnegkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZFYIcGF5bWVudHMAAQZhbW91bnQEAmVQCQECZUkDBQJneQUCZ3oJALYCAQAAAwkAAAIFAmVQBQJlUAQCZ1QJAQJlUQMAAAAAAAAEAmdoCAUCZ1QCXzEEAmVICAUCZ1QCXzIEAmdpCQECZVUCBQJlUAUCZUgDCQAAAgUCZ2kFAmdpCQDOCAIFAmNPBQJnaAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgEDZ2V0AAQCZGsJAQJmZwEFAmRWBAJnVQgFAmRrAl8xBAJjTggFAmRrAl8yBAJjWQgFAmRrAl8zBAJjcwgFAmRrAl80BAJjTwgFAmRrAl81BAJldwkA/AcEBQJhTgIEYnVybgkAzAgCBQJjWQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjcwUCY1kFA25pbAMJAAACBQJldwUCZXcEAmVQCQECZUkDCQC2AgEAAAkAtgIBAAAJALYCAQUCY1kEAmdWCQECZVEDCQEBLQEFAmdVCQEBLQEFAmNOAAAEAmdoCAUCZ1YCXzEEAmVICAUCZ1YCXzIEAmdpCQECZVUCBQJlUAUCZUgDCQAAAgUCZ2kFAmdpCQDOCAIFAmNPBQJnaAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgELZ2V0T25lVGtuVjICAmZKAmZLBAJnSgoAAmZTCQD8BwQFAmFOAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZlMCB0Jvb2xlYW4FAmZTCQACAQkArAICCQADAQUCZlMCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdXAwMJAQJhUAAGCQAAAgUCYmUFAXMGBQJnSgQCZ0wJAMwIAgMDCQEBIQEFAmdXBgkBAmdtAQUCZFYGCQECYUsBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkVghwYXltZW50cwABBgkBAmFLAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ0wFAmdMBAJnWAkBAmZJBgUCZkoFAmZLCAUCZFYIcGF5bWVudHMIBQJkVgZjYWxsZXIIBQJkVgxvcmlnaW5DYWxsZXIIBQJkVg10cmFuc2FjdGlvbklkBAJjTwgFAmdYAl8xBAJmVQgFAmdYAl8yCQCUCgIFAmNPBQJmVQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgEKcmVmcmVzaERMcAAEAmdZCQELdmFsdWVPckVsc2UCCQCfCAEFAmFsAAAEAmdaAwkAZwIJAGUCBQZoZWlnaHQFAmdZBQJhbwUEdW5pdAkBAmFLAQkAuQkCCQDMCAIJAKQDAQUCYW8JAMwIAgIvIGJsb2NrcyBoYXZlIG5vdCBwYXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGNhbGwFA25pbAIAAwkAAAIFAmdaBQJnWgQCZmIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFrAgEwCQECYU0BAgtpbnZhbGlkIGRMcAQCaGEJAQJlUQMAAAAAAAAEAmhiCAUCaGECXzEEAmVICAUCaGECXzIEAmVUAwkBAiE9AgUCZmIFAmVIBQJoYgkBAmFLAQISbm90aGluZyB0byByZWZyZXNoCQCUCgIFAmVUCQCmAwEFAmVICQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWARNnZXRPbmVUa25WMlJFQURPTkxZAgJmSgJoYwQCYmEJAQJhUwAEAmN3CQCRAwIFAmJhBQF3BAJjeAkAkQMCBQJiYQUBeAQCY3YJAJEDAgUCYmEFAXYEAmRGCQDMCAIJALYCAQkBAmJGAQUCY3cJAMwIAgkAtgIBCQECYkYBBQJjeAUDbmlsBAJlRgkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY3YCEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmJTCQECZEUBBQJkRgQCYlIJALgCAgUCYlMJALwCAwkAtgIBBQJoYwUCYlMFAmVGBAJoZAMJAAACBQJmSgUCY3cAAAMJAAACBQJmSgUCY3gAAQkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJoZQkBAmVzAwUCZEYFAmhkBQJiUgQCaGYJALgCAgkAkQMCBQJkRgUCaGQFAmhlBAJoZwkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALgCAgUCaGYFAWYFA25pbAQCaGgJAQJjbgEFAmhnBAJmVAgFAmhoAl8xBAJjcAgFAmhoAl8yCQCUCgIFA25pbAkAlAoCBQJmVAUCY3ACZFYBHGdldE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmZKAmhjBAJiYQkBAmFTAAQCY3cJAJEDAgUCYmEFAXcEAmN4CQCRAwIFAmJhBQF4BAJjdgkAkQMCBQJiYQUBdgQCY0MJAQJiRgEFAmN3BAJjRQkBAmJGAQUCY3gEAmhpCgACZlMJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJmSgkAzAgCBQJoYwUDbmlsBQNuaWwDCQABAgUCZlMCCihJbnQsIEludCkFAmZTCQACAQkArAICCQADAQUCZlMCHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkEAmZUCAUCaGkCXzEEAmNwCAUCaGkCXzIEAmRrCQECY3EEAgAFAmN2BQJoYwUEdGhpcwQCY00IBQJkawJfMQQCY04IBQJkawJfMgQCaGoJAGQCBQJjTQUCY04EAmZIAwkAAAIFAmhqAAADCQAAAgUCZlQAAAAACQACAQIXYm9udXMgY2FsY3VsYXRpb24gZXJyb3IJAGsDCQBlAgUCZlQFAmhqBQFhBQJoagkAlAoCBQNuaWwJAJUKAwUCZlQFAmNwBQJmSAJkVgEJZ2V0Tm9MZXNzAgJoawJobAQCZGsJAQJmZwEFAmRWBAJjTQgFAmRrAl8xBAJjTggFAmRrAl8yBAJjWQgFAmRrAl8zBAJjcwgFAmRrAl80BAJjTwgFAmRrAl81AwkAZgIFAmhrBQJjTQkAAgEJAKwCAgkArAICCQCsAgICCUZhaWxlZDogIAkApAMBBQJjTQIDIDwgCQCkAwEFAmhrAwkAZgIFAmhsBQJjTgkAAgEJAKwCAgkArAICCQCsAgICCEZhaWxlZDogCQCkAwEFAmNOAgMgPCAJAKQDAQUCaGwEAmVQCQECZUkDCQC2AgEAAAkAtgIBAAAJALYCAQUCY1kEAmhtCQD8BwQFAmFOAgRidXJuCQDMCAIFAmNZBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNzBQJjWQUDbmlsAwkAAAIFAmhtBQJobQQCaG4JAQJlUQMJAQEtAQUCY00JAQEtAQUCY04AAAQCZ2gIBQJobgJfMQQCZUgIBQJobgJfMgQCZ2kJAQJlVQIFAmVQBQJlSAMJAAACBQJnaQUCZ2kJAM4IAgUCY08FAmdoCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWAQ11bnN0YWtlQW5kR2V0AQJjbwQCaG8DCQECIT0CCQCQAwEIBQJkVghwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCaG8FAmhvBAJjZQkBAmFTAAQCaHAJAQJiawAEAmdCCQDZBAEJAJEDAgUCY2UFAXYEAmhxCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJocAUBQwIKV3Igc3QgYWRkcgQCZVAJAQJlSQMJALYCAQAACQC2AgEAAAkAtgIBAAAEAmhyCQD8BwQFAmhxAgd1bnN0YWtlCQDMCAIJANgEAQUCZ0IJAMwIAgUCY28FA25pbAUDbmlsAwkAAAIFAmhyBQJocgQCZGsJAQJjcQQJANgEAQgFAmRWDXRyYW5zYWN0aW9uSWQJANgEAQUCZ0IFAmNvCAUCZFYGY2FsbGVyBAJjTQgFAmRrAl8xBAJjTggFAmRrAl8yBAJjQQkBDXBhcnNlSW50VmFsdWUBCAUCZGsCXzkEAmNPCAUCZGsDXzEwBAJocwMDCQECYVAABgkAAAIFAmNBBQFzCQACAQkArAICAglCbG9ja2VkOiAJAKQDAQUCY0EGAwkAAAIFAmhzBQJocwQCaHQJAPwHBAUCYU4CBGJ1cm4JAMwIAgUCY28FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ0IFAmNvBQNuaWwDCQAAAgUCaHQFAmh0BAJodQkBAmVRAwkBAS0BBQJjTQkBAS0BBQJjTgAABAJnaAgFAmh1Al8xBAJlSAgFAmh1Al8yBAJnaQkBAmVVAgUCZVAFAmVIAwkAAAIFAmdpBQJnaQkAzggCBQJjTwUCZ2gJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmh2Amh3AmhsBAJnVwMJAQJhUAAGCQAAAgUCYmUFAXMEAmdMCQDMCAIDCQEBIQEFAmdXBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRWCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ0wFAmdMBAJlUAkBAmVJAwkAtgIBAAAJALYCAQAACQC2AgEAAAQCaHIJAPwHBAUCYm0CB3Vuc3Rha2UJAMwIAgkA2AQBBQJiZgkAzAgCBQJodgUDbmlsBQNuaWwDCQAAAgUCaHIFAmhyBAJoeAkBAmNxBAkA2AQBCAUCZFYNdHJhbnNhY3Rpb25JZAkA2AQBBQJiZgUCaHYIBQJkVgZjYWxsZXIEAmNNCAUCaHgCXzEEAmNOCAUCaHgCXzIEAmNPCAUCaHgDXzEwBAJoeQkAzAgCAwkAZwIFAmNNBQJodwYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJodwUDbmlsAgAJAMwIAgMJAGcCBQJjTgUCaGwGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJobAUDbmlsAgAFA25pbAMJAAACBQJoeQUCaHkEAmhtCQD8BwQFAmFOAgRidXJuCQDMCAIFAmh2BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJmBQJodgUDbmlsAwkAAAIFAmhtBQJobQQCaHoJAQJlUQMJAQEtAQUCY00JAQEtAQUCY04AAAQCZ2gIBQJoegJfMQQCZUgIBQJoegJfMgQCZ2kJAQJlVQIFAmVQBQJlSAMJAAACBQJnaQUCZ2kJAM4IAgUCY08FAmdoCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWARV1bnN0YWtlQW5kR2V0T25lVGtuVjIDAmh2AmZKAmZLBAJnSgoAAmZTCQD8BwQFAmFOAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZlMCB0Jvb2xlYW4FAmZTCQACAQkArAICCQADAQUCZlMCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdXAwMJAQJhUAAGCQAAAgUCYmUFAXMGBQJnSgQCZ0wJAMwIAgMDCQEBIQEFAmdXBgkBAmdtAQUCZFYGCQECYUsBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkVghwYXltZW50cwAABgkBAmFLAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ0wFAmdMBAJjZQkBAmFTAAQCaHAJAQJiawAEAmdCCQDZBAEJAJEDAgUCY2UFAXYEAmhxCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJocAUBQwIKV3Igc3QgYWRkcgQCaHIJAPwHBAUCaHECB3Vuc3Rha2UJAMwIAgkA2AQBBQJnQgkAzAgCBQJodgUDbmlsBQNuaWwDCQAAAgUCaHIFAmhyBAJoQQkBAmZJBgUCZkoFAmZLCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnQgUCaHYFA25pbAgFAmRWBmNhbGxlcggFAmRWDG9yaWdpbkNhbGxlcggFAmRWDXRyYW5zYWN0aW9uSWQEAmNPCAUCaEECXzEEAmZVCAUCaEECXzIJAJQKAgUCY08FAmZVCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWARxwdXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJoQgJoQwQCYmEJAQJhUwAEAmN3CQCRAwIFAmJhBQF3BAJjeAkAkQMCBQJiYQUBeAQCY3YJAJEDAgUCYmEFAXYEAmhECQECZm0FBQJoQgUCaEMCAAIABgQCZkMIBQJoRAJfMQQCY08IBQJoRAJfMgQCY3AIBQJoRAJfMwQCZkgIBQJoRAJfNAkAlAoCBQNuaWwJAJUKAwUCZkMFAmNwBQJmSAJkVgEhcHV0T25lVGtuVjJXaXRob3V0VGFrZUZlZVJFQURPTkxZAgJoQgJoQwQCYmEJAQJhUwAEAmN3CQCRAwIFAmJhBQF3BAJjeAkAkQMCBQJiYQUBeAQCY3YJAJEDAgUCYmEFAXYEAmhFCQECZm0FBQJoQgUCaEMCAAIABwQCZkMIBQJoRQJfMQQCY08IBQJoRQJfMgQCY3AIBQJoRQJfMwQCZkgIBQJoRQJfNAkAlAoCBQNuaWwJAJUKAwUCZkMFAmNwBQJmSAJkVgEIYWN0aXZhdGUCAmhGAmhHAwkBAiE9AgkApQgBCAUCZFYGY2FsbGVyCQClCAEFAmFOCQACAQIGZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFlAAUCaEYJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFmAAUCaEcFA25pbAIHc3VjY2VzcwJkVgEEc2V0UwICaEgCaHMDCQECIT0CCQClCAEIBQJkVgZjYWxsZXIJAQJhRwIFBHRoaXMJAQJhaAAFAmdsCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmhIBQJocwUDbmlsAmRWAQRzZXRJAgJoSAJocwMJAQIhPQIJAKUIAQgFAmRWBmNhbGxlcgkBAmFHAgUEdGhpcwkBAmFoAAUCZ2wJAMwIAgkBDEludGVnZXJFbnRyeQIFAmhIBQJocwUDbmlsAmRWARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhUwACZFYBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJHCQCUCgIFA25pbAkBAmJGAQUCYkcCZFYBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJZAmJaAmNkBAJoSQkBAmNjAwUCYlkFAmJaBQJjZAkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmhJAAAJAMwIAgkApgMBCQCRAwIFAmhJAAEJAMwIAgkApgMBCQCRAwIFAmhJAAIFA25pbAJkVgEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBTAJoSgkAlAoCBQNuaWwJAQFLAgkApwMBBQFMBQJoSgJkVgEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUkBSgkAlAoCBQNuaWwJAKYDAQkBAUgCBQFJBQFKAmRWAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmJJAmJKCQCUCgIFA25pbAkApgMBCQECYkgCCQCnAwEFAmJJCQCnAwEFAmJKAmRWASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCY3ICYk4CY1ECY1ICY1MCY1QCaEsCY1UCY1YJAJQKAgUDbmlsCQECY1ANBQJjcgUCYk4FAmNRBQJjUgUCY1MFAmNUBQJoSwUCY1UFAmNWBgcAAAIAAmRWASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCY3ICaEwCY3QCaEsEAmRrCQECY3EEBQJjcgUCaEwFAmN0CQERQGV4dHJOYXRpdmUoMTA2MikBBQJoSwkAlAoCBQNuaWwJAJwKCggFAmRrAl8xCAUCZGsCXzIIBQJkawJfMwgFAmRrAl80CAUCZGsCXzUIBQJkawJfNggFAmRrAl83CQCmAwEIBQJkawJfOAgFAmRrAl85CAUCZGsDXzEwAmRWAQ5nZXRGZWVSRUFET05MWQAJAJQKAgUDbmlsBQJhagECaE0BAmhOAAQCaE8EAmFFCQECZ2oAAwkAAQIFAmFFAgpCeXRlVmVjdG9yBAJnbgUCYUUFAmduAwkAAQIFAmFFAgRVbml0CAUCaE0Pc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmFFBQJoTQMJAAECBQJhRQIFT3JkZXIEAmVYBQJhRQQCaFAJAQJhUQAEAmhRCQECZVcBBQJlWAQCaFIJAPQDAwgFAmVYCWJvZHlCeXRlcwkAkQMCCAUCZVgGcHJvb2ZzAAAIBQJlWA9zZW5kZXJQdWJsaWNLZXkEAmhTCQD0AwMIBQJlWAlib2R5Qnl0ZXMJAJEDAggFAmVYBnByb29mcwABBQJoUAMDAwUCaFEFAmhSBwUCaFMHBgkBAmF6AwUCaFEFAmhSBQJoUwMJAAECBQJhRQIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmRJBQJhRQQCaFQJAPYDAQkBBXZhbHVlAQgFAmRJBnNjcmlwdAQCaFUJANsEAQkBBXZhbHVlAQkAnQgCBQJhTgkBAmF4AAQCaFYJAPEHAQUEdGhpcwMDCQAAAgUCaFUFAmhUCQECIT0CBQJoVgUCaFQHBgkA9AMDCAUCaE0JYm9keUJ5dGVzCQCRAwIIBQJoTQZwcm9vZnMAAAUCaE8JAPQDAwgFAmhNCWJvZHlCeXRlcwkAkQMCCAUCaE0GcHJvb2ZzAAAFAmhPS+HNdQ==", "chainId": 84, "height": 2349940, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Bd9yRkPUk6pP3gdSeihCwnwwndeqEvwQWJQTEXzMBqKP Next: HabA9bX1AzF3SyQKHEvMwFU9RpoNmj2bxuyyodhS5joU Diff:
OldNewDifferences
605605
606606
607607 func eC (eD,eE,eF) = {
608- let eG = fraction(dE([eD, eE]), c, eF)
608+ let eG = toBigInt(1000000000000)
609+ let eH = fraction(dE([eD, eE]), eG, eF)
609610 if ((eF == e))
610611 then e
611- else eG
612+ else eH
612613 }
613614
614615
615-func eH (eI,eJ,eK) = {
616- let eL = (toBigInt(bF(aY(bg))) - eI)
617- let eM = (toBigInt(bF(aY(bh))) - eJ)
618- let eN = (toBigInt(value(assetInfo(bf)).quantity) - eK)
619- let eO = eC(eL, eM, eN)
620- eO
616+func eI (eJ,eK,eL) = {
617+ let eM = (toBigInt(bF(aY(bg))) - eJ)
618+ let eN = (toBigInt(bF(aY(bh))) - eK)
619+ let eO = (toBigInt(value(assetInfo(bf)).quantity) - eL)
620+ let eP = eC(eM, eN, eO)
621+ eP
621622 }
622623
623624
624-func eP (eQ,eR,eK) = {
625- let eL = (bF(aY(bg)) + eQ)
626- let eM = (bF(aY(bh)) + eR)
627- let eN = (value(assetInfo(bf)).quantity + eK)
628- let eG = eC(toBigInt(eL), toBigInt(eM), toBigInt(eN))
629- let eS = [IntegerEntry(al, height), StringEntry(ak, toString(eG))]
630- $Tuple2(eS, eG)
625+func eQ (eR,eS,eL) = {
626+ let eM = (bF(aY(bg)) + eR)
627+ let eN = (bF(aY(bh)) + eS)
628+ let eO = (value(assetInfo(bf)).quantity + eL)
629+ let eH = eC(toBigInt(eM), toBigInt(eN), toBigInt(eO))
630+ let eT = [IntegerEntry(al, height), StringEntry(ak, toString(eH))]
631+ $Tuple2(eT, eH)
631632 }
632633
633634
634-func eT (eU,eG) = if ((eG >= eU))
635+func eU (eV,eH) = if ((eH >= eV))
635636 then true
636637 else aK("updated DLp lower than current DLp")
637638
638639
639-func eV (eW) = {
640- let eX = eW.amount
641- let eY = fraction(eW.amount, eW.price, a, FLOOR)
642- let eZ = if ((eW.orderType == Buy))
643- then $Tuple2(eX, -(eY))
644- else $Tuple2(-(eX), eY)
645- let eQ = eZ._1
646- let eR = eZ._2
640+func eW (eX) = {
641+ let eY = eX.amount
642+ let eZ = fraction(eX.amount, eX.price, a, FLOOR)
643+ let fa = if ((eX.orderType == Buy))
644+ then $Tuple2(eY, -(eZ))
645+ else $Tuple2(-(eY), eZ)
646+ let eR = fa._1
647+ let eS = fa._2
647648 if (if (if (aP())
648649 then true
649650 else (be == r))
650651 then true
651652 else (be == s))
652653 then throw("Admin blocked")
653- else if (if ((eW.assetPair.amountAsset != bg))
654+ else if (if ((eX.assetPair.amountAsset != bg))
654655 then true
655- else (eW.assetPair.priceAsset != bh))
656+ else (eX.assetPair.priceAsset != bh))
656657 then throw("Wr assets")
657658 else {
658- let fa = parseBigIntValue(getStringValue(this, ak))
659- let fb = eP(eQ, eR, 0)
660- let fc = fb._1
661- let fd = fb._2
662- let fe = (fd >= fa)
663- fe
659+ let fb = parseBigIntValue(getStringValue(this, ak))
660+ let fc = eQ(eR, eS, 0)
661+ let fd = fc._1
662+ let fe = fc._2
663+ let ff = (fe >= fb)
664+ ff
664665 }
665666 }
666667
667668
668-func ff (dV) = if ((size(dV.payments) != 1))
669+func fg (dV) = if ((size(dV.payments) != 1))
669670 then throw("1 pmnt exp")
670671 else {
671- let fg = value(dV.payments[0])
672- let cs = value(fg.assetId)
673- let cY = fg.amount
672+ let fh = value(dV.payments[0])
673+ let cs = value(fh.assetId)
674+ let cY = fh.amount
674675 let dk = cq(toBase58String(dV.transactionId), toBase58String(cs), cY, dV.caller)
675676 let cM = dk._1
676677 let cN = dk._2
684685 }
685686
686687
687-func fh (fi,ac,fj,fk,bN,cV,cW,cX,cY,cZ) = {
688- let dk = cP(ac, bN, value(fj).amount, value(fj).assetId, value(fk).amount, value(fk).assetId, fi, (ac == ""), cV, cW, cX, cY, cZ)
688+func fi (fj,ac,fk,fl,bN,cV,cW,cX,cY,cZ) = {
689+ let dk = cP(ac, bN, value(fk).amount, value(fk).assetId, value(fl).amount, value(fl).assetId, fj, (ac == ""), cV, cW, cX, cY, cZ)
689690 let cA = parseIntValue(dk._8)
690691 if (if (if (aP())
691692 then true
697698 }
698699
699700
700-func fl (fm,cs,cu,ac,fn) = {
701+func fm (fn,cs,cu,ac,fo) = {
701702 let ba = aS()
702703 let cw = ba[w]
703704 let cx = ba[x]
704705 let cv = ba[v]
705706 let de = parseIntValue(ba[y])
706707 let df = parseIntValue(ba[z])
707- let eN = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
708- let fo = if ((eN > e))
708+ let eO = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
709+ let fp = if ((eO > e))
709710 then true
710711 else throw("initial deposit requires all coins")
711- if ((fo == fo))
712+ if ((fp == fp))
712713 then {
713714 let cC = bF(cw)
714715 let cE = bF(cx)
715- let fp = if ((ac == ""))
716+ let fq = if ((ac == ""))
716717 then $Tuple2(cC, cE)
717718 else if ((cs == cw))
718- then if ((fm > cC))
719+ then if ((fn > cC))
719720 then throw("invalid payment amount")
720- else $Tuple2((cC - fm), cE)
721+ else $Tuple2((cC - fn), cE)
721722 else if ((cs == cx))
722- then if ((fm > cE))
723+ then if ((fn > cE))
723724 then throw("invalid payment amount")
724- else $Tuple2(cC, (cE - fm))
725+ else $Tuple2(cC, (cE - fn))
725726 else throw("wrong pmtAssetId")
726- let fq = fp._1
727- let fr = fp._2
728- let fs = if ((cs == cw))
729- then $Tuple2(fm, 0)
727+ let fr = fq._1
728+ let fs = fq._2
729+ let ft = if ((cs == cw))
730+ then $Tuple2(fn, 0)
730731 else if ((cs == cx))
731- then $Tuple2(0, fm)
732+ then $Tuple2(0, fn)
732733 else throw("invalid payment")
733- let ft = fs._1
734- let fu = fs._2
735- let fv = if (fn)
736- then $Tuple3(cn(ft)._1, cn(fu)._1, cn(fm)._2)
737- else $Tuple3(ft, fu, 0)
738- let fw = fv._1
739- let fx = fv._2
740- let cp = fv._3
741- let fy = (fq + fw)
734+ let fu = ft._1
735+ let fv = ft._2
736+ let fw = if (fo)
737+ then $Tuple3(cn(fu)._1, cn(fv)._1, cn(fn)._2)
738+ else $Tuple3(fu, fv, 0)
739+ let fx = fw._1
740+ let fy = fw._2
741+ let cp = fw._3
742742 let fz = (fr + fx)
743- let bS = dE([toBigInt(fq), toBigInt(fr)])
744- let bR = dE([toBigInt(fy), toBigInt(fz)])
745- let fA = if ((bR > bS))
743+ let fA = (fs + fy)
744+ let bS = dE([toBigInt(fr), toBigInt(fs)])
745+ let bR = dE([toBigInt(fz), toBigInt(fA)])
746+ let fB = if ((bR > bS))
746747 then true
747748 else throw()
748- if ((fA == fA))
749+ if ((fB == fB))
749750 then {
750- let fB = fraction(eN, (bR - bS), bS)
751- let cH = K(bH(H(fz, df), H(fy, de)), a)
752- let dD = [IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH), StringEntry(aa(cu, ac), bq(ft, fu, toInt(fB), cH, 0, 0, height, lastBlock.timestamp, 0, 0))]
753- let fC = fraction(fr, a, fq)
754- let fD = fraction(fm, a, (fC + a))
755- let fE = (fm - fD)
756- let fF = fraction(eN, toBigInt(fE), toBigInt(fr))
757- let fG = toInt(fraction((fB - fF), b, fF))
758- $Tuple4(toInt(fB), dD, cp, fG)
751+ let fC = fraction(eO, (bR - bS), bS)
752+ let cH = K(bH(H(fA, df), H(fz, de)), a)
753+ let dD = [IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH), StringEntry(aa(cu, ac), bq(fu, fv, toInt(fC), cH, 0, 0, height, lastBlock.timestamp, 0, 0))]
754+ let fD = fraction(fs, a, fr)
755+ let fE = fraction(fn, a, (fD + a))
756+ let fF = (fn - fE)
757+ let fG = fraction(eO, toBigInt(fF), toBigInt(fs))
758+ let fH = toInt(fraction((fC - fG), b, fG))
759+ $Tuple4(toInt(fC), dD, cp, fH)
759760 }
760761 else throw("Strict value is not equal to itself.")
761762 }
763764 }
764765
765766
766-func fH (fI,fJ,fK,fi,fL,fM) = {
767+func fI (fJ,fK,fL,fj,fM,fN) = {
767768 let ba = aS()
768769 let cv = ba[v]
769770 let cw = ba[w]
770771 let cx = ba[x]
771- let fN = parseIntValue(ba[y])
772- let fO = parseIntValue(ba[z])
773- let fP = ba[u]
774- let cu = if ((fi == bp))
775- then fL
776- else fi
777- let fg = value(fK[0])
778- let cs = value(fg.assetId)
779- let cY = fg.amount
780- let eO = eH(e, e, e)
781- if ((eO == eO))
772+ let fO = parseIntValue(ba[y])
773+ let fP = parseIntValue(ba[z])
774+ let fQ = ba[u]
775+ let cu = if ((fj == bp))
776+ then fM
777+ else fj
778+ let fh = value(fL[0])
779+ let cs = value(fh.assetId)
780+ let cY = fh.amount
781+ let eP = eI(e, e, e)
782+ if ((eP == eP))
782783 then {
783- let cr = toBase58String(fM)
784+ let cr = toBase58String(fN)
784785 if ((cv != toBase58String(cs)))
785786 then throw("Wrong LP")
786787 else {
787788 let cC = bF(cw)
788789 let cE = bF(cx)
789- let fQ = {
790- let fR = invoke(this, "getOneTknV2READONLY", [fI, cY], nil)
791- if ($isInstanceOf(fR, "(Int, Int)"))
792- then fR
793- else throw(($getType(fR) + " couldn't be cast to (Int, Int)"))
790+ let fR = {
791+ let fS = invoke(this, "getOneTknV2READONLY", [fJ, cY], nil)
792+ if ($isInstanceOf(fS, "(Int, Int)"))
793+ then fS
794+ else throw(($getType(fS) + " couldn't be cast to (Int, Int)"))
794795 }
795- if ((fQ == fQ))
796+ if ((fR == fR))
796797 then {
797- let cp = fQ._2
798- let fS = fQ._1
799- let fT = if (if ((fJ > 0))
800- then (fJ > fS)
798+ let cp = fR._2
799+ let fT = fR._1
800+ let fU = if (if ((fK > 0))
801+ then (fK > fT)
801802 else false)
802- then aK(makeString(["amount to receive is less than ", toString(fJ)], ""))
803- else fS
804- let fU = if ((fI == cw))
805- then $Tuple4(fT, 0, ((cC - fT) - cp), cE)
806- else if ((fI == cx))
807- then $Tuple4(0, fT, cC, ((cE - fT) - cp))
803+ then aK(makeString(["amount to receive is less than ", toString(fK)], ""))
804+ else fT
805+ let fV = if ((fJ == cw))
806+ then $Tuple4(fU, 0, ((cC - fU) - cp), cE)
807+ else if ((fJ == cx))
808+ then $Tuple4(0, fU, cC, ((cE - fU) - cp))
808809 else throw("invalid out asset id")
809- let fV = fU._1
810- let fW = fU._2
811- let fy = fU._3
812- let fz = fU._4
813- let fX = bH(H(fz, fO), H(fy, fN))
814- let fY = K(fX, a)
815- let fZ = if ((fI == "WAVES"))
810+ let fW = fV._1
811+ let fX = fV._2
812+ let fz = fV._3
813+ let fA = fV._4
814+ let fY = bH(H(fA, fP), H(fz, fO))
815+ let fZ = K(fY, a)
816+ let ga = if ((fJ == "WAVES"))
816817 then unit
817- else fromBase58String(fI)
818- let ga = if ((cp > 0))
819- then [ScriptTransfer(aR, cp, fZ)]
818+ else fromBase58String(fJ)
819+ let gb = if ((cp > 0))
820+ then [ScriptTransfer(aR, cp, ga)]
820821 else nil
821- let cO = ([ScriptTransfer(cu, fT, fZ), StringEntry(ad(toString(cu), cr), bB(fV, fW, cY, fY, height, lastBlock.timestamp)), IntegerEntry(W(), fY), IntegerEntry(X(height, lastBlock.timestamp), fY)] ++ ga)
822+ let cO = ([ScriptTransfer(cu, fU, ga), StringEntry(ad(toString(cu), cr), bB(fW, fX, cY, fZ, height, lastBlock.timestamp)), IntegerEntry(W(), fZ), IntegerEntry(X(height, lastBlock.timestamp), fZ)] ++ gb)
822823 if ((cO == cO))
823824 then {
824- let gb = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
825- if ((gb == gb))
825+ let gc = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
826+ if ((gc == gc))
826827 then {
827- let gc = {
828- let gd = if ((this == aR))
828+ let gd = {
829+ let ge = if ((this == aR))
829830 then 0
830831 else cp
831- let ge = if ((aW(fI) == bg))
832+ let gf = if ((aW(fJ) == bg))
832833 then true
833834 else false
834- if (ge)
835- then $Tuple2(-((fS + gd)), 0)
836- else $Tuple2(0, -((fS + gd)))
835+ if (gf)
836+ then $Tuple2(-((fT + ge)), 0)
837+ else $Tuple2(0, -((fT + ge)))
837838 }
838- let eQ = gc._1
839- let eR = gc._2
840- let gf = eP(eQ, eR, 0)
841- let gg = gf._1
842- let eG = gf._2
843- let gh = eT(eO, eG)
844- if ((gh == gh))
845- then $Tuple2((cO ++ gg), fT)
839+ let eR = gd._1
840+ let eS = gd._2
841+ let gg = eQ(eR, eS, 0)
842+ let gh = gg._1
843+ let eH = gg._2
844+ let gi = eU(eP, eH)
845+ if ((gi == gi))
846+ then $Tuple2((cO ++ gh), fU)
846847 else throw("Strict value is not equal to itself.")
847848 }
848849 else throw("Strict value is not equal to itself.")
856857 }
857858
858859
859-func gi () = {
860+func gj () = {
860861 let aE = getString(U())
861862 if ($isInstanceOf(aE, "String"))
862863 then {
869870 }
870871
871872
872-func gj () = {
873+func gk () = {
873874 let aE = getString(V())
874875 if ($isInstanceOf(aE, "String"))
875876 then {
882883 }
883884
884885
885-let gk = throw("Permission denied")
886+let gl = throw("Permission denied")
886887
887-func gl (dV) = {
888- let aE = gi()
888+func gm (dV) = {
889+ let aE = gj()
889890 if ($isInstanceOf(aE, "ByteVector"))
890891 then {
891- let gm = aE
892- (dV.callerPublicKey == gm)
892+ let gn = aE
893+ (dV.callerPublicKey == gn)
893894 }
894895 else if ($isInstanceOf(aE, "Unit"))
895896 then (dV.caller == this)
897898 }
898899
899900
900-func gn (dV) = {
901- let aE = gi()
901+func go (dV) = {
902+ let aE = gj()
902903 if ($isInstanceOf(aE, "ByteVector"))
903904 then {
904- let gm = aE
905- if ((dV.callerPublicKey == gm))
905+ let gn = aE
906+ if ((dV.callerPublicKey == gn))
906907 then true
907- else gk
908+ else gl
908909 }
909910 else if ($isInstanceOf(aE, "Unit"))
910911 then if ((dV.caller == this))
911912 then true
912- else gk
913+ else gl
913914 else throw("Match error")
914915 }
915916
916917
917918 @Callable(dV)
918919 func constructor (T) = {
919- let ev = gn(dV)
920+ let ev = go(dV)
920921 if ((ev == ev))
921922 then [StringEntry(T(), T)]
922923 else throw("Strict value is not equal to itself.")
925926
926927
927928 @Callable(dV)
928-func setManager (go) = {
929- let ev = gn(dV)
929+func setManager (gp) = {
930+ let ev = go(dV)
930931 if ((ev == ev))
931932 then {
932- let gp = fromBase58String(go)
933- if ((gp == gp))
934- then [StringEntry(V(), go)]
933+ let gq = fromBase58String(gp)
934+ if ((gq == gq))
935+ then [StringEntry(V(), gp)]
935936 else throw("Strict value is not equal to itself.")
936937 }
937938 else throw("Strict value is not equal to itself.")
941942
942943 @Callable(dV)
943944 func confirmManager () = {
944- let cm = gj()
945- let gq = if (isDefined(cm))
945+ let cm = gk()
946+ let gr = if (isDefined(cm))
946947 then true
947948 else throw("No pending manager")
948- if ((gq == gq))
949+ if ((gr == gr))
949950 then {
950- let gr = if ((dV.callerPublicKey == value(cm)))
951+ let gs = if ((dV.callerPublicKey == value(cm)))
951952 then true
952953 else throw("You are not pending manager")
953- if ((gr == gr))
954+ if ((gs == gs))
954955 then [StringEntry(U(), toBase58String(value(cm))), DeleteEntry(V())]
955956 else throw("Strict value is not equal to itself.")
956957 }
960961
961962
962963 @Callable(dV)
963-func put (gs,gt) = {
964- let gu = bk()
965- let gv = valueOrErrorMessage(addressFromString(gu[C]), "Wr st addr")
966- let gw = valueOrErrorMessage(addressFromString(gu[E]), "Wr sl addr")
967- if ((0 > gs))
964+func put (gt,gu) = {
965+ let gv = bk()
966+ let gw = valueOrErrorMessage(addressFromString(gv[C]), "Wr st addr")
967+ let gx = valueOrErrorMessage(addressFromString(gv[E]), "Wr sl addr")
968+ if ((0 > gt))
968969 then throw("Wrong slippage")
969970 else if ((size(dV.payments) != 2))
970971 then throw("2 pmnts expd")
971972 else {
972- let gx = toBigInt(value(dV.payments[0]).amount)
973- let gy = toBigInt(value(dV.payments[1]).amount)
974- let eO = eH(gx, gy, toBigInt(0))
975- if ((eO == eO))
973+ let gy = toBigInt(value(dV.payments[0]).amount)
974+ let gz = toBigInt(value(dV.payments[1]).amount)
975+ let eP = eI(gy, gz, toBigInt(0))
976+ if ((eP == eP))
976977 then {
977- let gz = fh(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gs, true, false, true, 0, "")
978- let dx = gz._2
979- let gA = gz._7
980- let cO = gz._9
981- let dy = gz._10
982- let dz = gz._11
983- let cw = gz._12
984- let cx = gz._13
978+ let gA = fi(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gt, true, false, true, 0, "")
979+ let dx = gA._2
980+ let gB = gA._7
981+ let cO = gA._9
982+ let dy = gA._10
983+ let dz = gA._11
984+ let cw = gA._12
985+ let cx = gA._13
985986 let dk = invoke(aN, "emit", [dx], nil)
986987 if ((dk == dk))
987988 then {
988- let gB = {
989+ let gC = {
989990 let aE = dk
990991 if ($isInstanceOf(aE, "Address"))
991992 then {
992- let gC = aE
993- invoke(gC, "emit", [dx], nil)
993+ let gD = aE
994+ invoke(gD, "emit", [dx], nil)
994995 }
995996 else unit
996997 }
997- if ((gB == gB))
998+ if ((gC == gC))
998999 then {
999- let gD = if ((dy > 0))
1000- then invoke(gw, "put", nil, [AttachedPayment(cw, dy)])
1000+ let gE = if ((dy > 0))
1001+ then invoke(gx, "put", nil, [AttachedPayment(cw, dy)])
10011002 else nil
1002- if ((gD == gD))
1003+ if ((gE == gE))
10031004 then {
1004- let gE = if ((dz > 0))
1005- then invoke(gw, "put", nil, [AttachedPayment(cx, dz)])
1005+ let gF = if ((dz > 0))
1006+ then invoke(gx, "put", nil, [AttachedPayment(cx, dz)])
10061007 else nil
1007- if ((gE == gE))
1008+ if ((gF == gF))
10081009 then {
1009- let gF = if (gt)
1010+ let gG = if (gu)
10101011 then {
1011- let gG = invoke(gv, "stake", nil, [AttachedPayment(gA, dx)])
1012- if ((gG == gG))
1012+ let gH = invoke(gw, "stake", nil, [AttachedPayment(gB, dx)])
1013+ if ((gH == gH))
10131014 then nil
10141015 else throw("Strict value is not equal to itself.")
10151016 }
1016- else [ScriptTransfer(dV.caller, dx, gA)]
1017- let gH = eP(0, 0, 0)
1018- let gg = gH._1
1019- let eG = gH._2
1020- let gh = eT(eO, eG)
1021- if ((gh == gh))
1022- then ((cO ++ gF) ++ gg)
1017+ else [ScriptTransfer(dV.caller, dx, gB)]
1018+ let gI = eQ(0, 0, 0)
1019+ let gh = gI._1
1020+ let eH = gI._2
1021+ let gi = eU(eP, eH)
1022+ if ((gi == gi))
1023+ then ((cO ++ gG) ++ gh)
10231024 else throw("Strict value is not equal to itself.")
10241025 }
10251026 else throw("Strict value is not equal to itself.")
10371038
10381039
10391040 @Callable(dV)
1040-func putOneTknV2 (fJ,gt) = {
1041- let gI = {
1042- let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1043- if ($isInstanceOf(fR, "Boolean"))
1044- then fR
1045- else throw(($getType(fR) + " couldn't be cast to Boolean"))
1041+func putOneTknV2 (fK,gu) = {
1042+ let gJ = {
1043+ let fS = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1044+ if ($isInstanceOf(fS, "Boolean"))
1045+ then fS
1046+ else throw(($getType(fS) + " couldn't be cast to Boolean"))
10461047 }
1047- let gJ = if (if (if (aP())
1048+ let gK = if (if (if (aP())
10481049 then true
10491050 else (be == q))
10501051 then true
10511052 else (be == s))
10521053 then true
1053- else gI
1054- let gK = [if (if (!(gJ))
1054+ else gJ
1055+ let gL = [if (if (!(gK))
10551056 then true
1056- else gl(dV))
1057+ else gm(dV))
10571058 then true
10581059 else aK("put operation is blocked by admin"), if ((size(dV.payments) == 1))
10591060 then true
10601061 else aK("exactly 1 payment are expected")]
1061- if ((gK == gK))
1062+ if ((gL == gL))
10621063 then {
10631064 let ba = aS()
10641065 let cw = ba[w]
10651066 let cx = ba[x]
10661067 let cv = fromBase58String(ba[v])
1067- let fN = parseIntValue(ba[y])
1068- let fO = parseIntValue(ba[z])
1068+ let fO = parseIntValue(ba[y])
1069+ let fP = parseIntValue(ba[z])
10691070 let cu = if ((dV.caller == this))
10701071 then dV.originCaller
10711072 else dV.caller
1072- let fg = value(dV.payments[0])
1073- let cs = toBase58String(value(fg.assetId))
1074- let cY = fg.amount
1075- let gL = fl(cY, cs, toString(cu), toBase58String(dV.transactionId), true)
1076- if ((gL == gL))
1073+ let fh = value(dV.payments[0])
1074+ let cs = toBase58String(value(fh.assetId))
1075+ let cY = fh.amount
1076+ let gM = fm(cY, cs, toString(cu), toBase58String(dV.transactionId), true)
1077+ if ((gM == gM))
10771078 then {
1078- let cp = gL._3
1079- let cO = gL._2
1080- let gM = gL._1
1081- let dx = if (if ((fJ > 0))
1082- then (fJ > gM)
1079+ let cp = gM._3
1080+ let cO = gM._2
1081+ let gN = gM._1
1082+ let dx = if (if ((fK > 0))
1083+ then (fK > gN)
10831084 else false)
1084- then aK(makeString(["amount to receive is less than ", toString(fJ)], ""))
1085- else gM
1086- let gz = invoke(aN, "emit", [dx], nil)
1087- if ((gz == gz))
1085+ then aK(makeString(["amount to receive is less than ", toString(fK)], ""))
1086+ else gN
1087+ let gA = invoke(aN, "emit", [dx], nil)
1088+ if ((gA == gA))
10881089 then {
1089- let gB = {
1090- let aE = gz
1090+ let gC = {
1091+ let aE = gA
10911092 if ($isInstanceOf(aE, "Address"))
10921093 then {
1093- let gC = aE
1094- invoke(gC, "emit", [dx], nil)
1094+ let gD = aE
1095+ invoke(gD, "emit", [dx], nil)
10951096 }
10961097 else unit
10971098 }
1098- if ((gB == gB))
1099+ if ((gC == gC))
10991100 then {
1100- let gF = if (gt)
1101+ let gG = if (gu)
11011102 then {
1102- let gG = invoke(bm, "stake", nil, [AttachedPayment(cv, dx)])
1103- if ((gG == gG))
1103+ let gH = invoke(bm, "stake", nil, [AttachedPayment(cv, dx)])
1104+ if ((gH == gH))
11041105 then nil
11051106 else throw("Strict value is not equal to itself.")
11061107 }
11071108 else [ScriptTransfer(dV.caller, dx, cv)]
1108- let ga = if ((cp > 0))
1109+ let gb = if ((cp > 0))
11091110 then [ScriptTransfer(aR, cp, fromBase58String(cs))]
11101111 else nil
1111- let gN = if ((this == aR))
1112+ let gO = if ((this == aR))
11121113 then $Tuple2(0, 0)
11131114 else {
1114- let gO = if ((fg.assetId == bg))
1115+ let gP = if ((fh.assetId == bg))
11151116 then true
11161117 else false
1117- if (gO)
1118+ if (gP)
11181119 then $Tuple2(-(cp), 0)
11191120 else $Tuple2(0, -(cp))
11201121 }
1121- let eQ = gN._1
1122- let eR = gN._2
1123- let gP = eP(eQ, eR, 0)
1124- let gg = gP._1
1125- let eG = gP._2
1126- $Tuple2((((cO ++ gF) ++ ga) ++ gg), dx)
1122+ let eR = gO._1
1123+ let eS = gO._2
1124+ let gQ = eQ(eR, eS, 0)
1125+ let gh = gQ._1
1126+ let eH = gQ._2
1127+ $Tuple2((((cO ++ gG) ++ gb) ++ gh), dx)
11271128 }
11281129 else throw("Strict value is not equal to itself.")
11291130 }
11371138
11381139
11391140 @Callable(dV)
1140-func putForFree (gQ) = if ((0 > gQ))
1141+func putForFree (gR) = if ((0 > gR))
11411142 then throw("Wrong slpg")
11421143 else if ((size(dV.payments) != 2))
11431144 then throw("2 pmnts expd")
11441145 else {
1145- let gR = fh(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gQ, false, false, true, 0, "")
1146- let cO = gR._9
1147- let gx = toBigInt(value(dV.payments[0]).amount)
1148- let gy = toBigInt(value(dV.payments[1]).amount)
1149- let eO = eH(gx, gy, toBigInt(0))
1150- if ((eO == eO))
1146+ let gS = fi(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gR, false, false, true, 0, "")
1147+ let cO = gS._9
1148+ let gy = toBigInt(value(dV.payments[0]).amount)
1149+ let gz = toBigInt(value(dV.payments[1]).amount)
1150+ let eP = eI(gy, gz, toBigInt(0))
1151+ if ((eP == eP))
11511152 then {
1152- let gS = eP(0, 0, 0)
1153- let gg = gS._1
1154- let eG = gS._2
1155- let gh = eT(eO, eG)
1156- if ((gh == gh))
1157- then (cO ++ gg)
1153+ let gT = eQ(0, 0, 0)
1154+ let gh = gT._1
1155+ let eH = gT._2
1156+ let gi = eU(eP, eH)
1157+ if ((gi == gi))
1158+ then (cO ++ gh)
11581159 else throw("Strict value is not equal to itself.")
11591160 }
11601161 else throw("Strict value is not equal to itself.")
11641165
11651166 @Callable(dV)
11661167 func get () = {
1167- let dk = ff(dV)
1168- let gT = dk._1
1168+ let dk = fg(dV)
1169+ let gU = dk._1
11691170 let cN = dk._2
11701171 let cY = dk._3
11711172 let cs = dk._4
11731174 let ew = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
11741175 if ((ew == ew))
11751176 then {
1176- let eO = eH(toBigInt(0), toBigInt(0), toBigInt(cY))
1177- let gU = eP(-(gT), -(cN), 0)
1178- let gg = gU._1
1179- let eG = gU._2
1180- let gh = eT(eO, eG)
1181- if ((gh == gh))
1182- then (cO ++ gg)
1177+ let eP = eI(toBigInt(0), toBigInt(0), toBigInt(cY))
1178+ let gV = eQ(-(gU), -(cN), 0)
1179+ let gh = gV._1
1180+ let eH = gV._2
1181+ let gi = eU(eP, eH)
1182+ if ((gi == gi))
1183+ then (cO ++ gh)
11831184 else throw("Strict value is not equal to itself.")
11841185 }
11851186 else throw("Strict value is not equal to itself.")
11881189
11891190
11901191 @Callable(dV)
1191-func getOneTknV2 (fI,fJ) = {
1192- let gI = {
1193- let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1194- if ($isInstanceOf(fR, "Boolean"))
1195- then fR
1196- else throw(($getType(fR) + " couldn't be cast to Boolean"))
1192+func getOneTknV2 (fJ,fK) = {
1193+ let gJ = {
1194+ let fS = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1195+ if ($isInstanceOf(fS, "Boolean"))
1196+ then fS
1197+ else throw(($getType(fS) + " couldn't be cast to Boolean"))
11971198 }
1198- let gV = if (if (aP())
1199+ let gW = if (if (aP())
11991200 then true
12001201 else (be == s))
12011202 then true
1202- else gI
1203- let gK = [if (if (!(gV))
1203+ else gJ
1204+ let gL = [if (if (!(gW))
12041205 then true
1205- else gl(dV))
1206+ else gm(dV))
12061207 then true
12071208 else aK("get operation is blocked by admin"), if ((size(dV.payments) == 1))
12081209 then true
12091210 else aK("exactly 1 payment are expected")]
1210- if ((gK == gK))
1211+ if ((gL == gL))
12111212 then {
1212- let gW = fH(fI, fJ, dV.payments, dV.caller, dV.originCaller, dV.transactionId)
1213- let cO = gW._1
1214- let fT = gW._2
1215- $Tuple2(cO, fT)
1213+ let gX = fI(fJ, fK, dV.payments, dV.caller, dV.originCaller, dV.transactionId)
1214+ let cO = gX._1
1215+ let fU = gX._2
1216+ $Tuple2(cO, fU)
12161217 }
12171218 else throw("Strict value is not equal to itself.")
12181219 }
12211222
12221223 @Callable(dV)
12231224 func refreshDLp () = {
1224- let gX = valueOrElse(getInteger(al), 0)
1225- let gY = if (((height - gX) >= ao))
1225+ let gY = valueOrElse(getInteger(al), 0)
1226+ let gZ = if (((height - gY) >= ao))
12261227 then unit
12271228 else aK(makeString([toString(ao), " blocks have not passed since the previous call"], ""))
1228- if ((gY == gY))
1229+ if ((gZ == gZ))
12291230 then {
1230- let fa = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ak), "0")), aM("invalid dLp"))
1231- let gZ = eP(0, 0, 0)
1232- let ha = gZ._1
1233- let eG = gZ._2
1234- let eS = if ((fa != eG))
1235- then ha
1231+ let fb = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ak), "0")), aM("invalid dLp"))
1232+ let ha = eQ(0, 0, 0)
1233+ let hb = ha._1
1234+ let eH = ha._2
1235+ let eT = if ((fb != eH))
1236+ then hb
12361237 else aK("nothing to refresh")
1237- $Tuple2(eS, toString(eG))
1238+ $Tuple2(eT, toString(eH))
12381239 }
12391240 else throw("Strict value is not equal to itself.")
12401241 }
12421243
12431244
12441245 @Callable(dV)
1245-func getOneTknV2READONLY (fI,hb) = {
1246+func getOneTknV2READONLY (fJ,hc) = {
12461247 let ba = aS()
12471248 let cw = ba[w]
12481249 let cx = ba[x]
12501251 let dF = [toBigInt(bF(cw)), toBigInt(bF(cx))]
12511252 let eF = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
12521253 let bS = dE(dF)
1253- let bR = (bS - fraction(toBigInt(hb), bS, eF))
1254- let hc = if ((fI == cw))
1254+ let bR = (bS - fraction(toBigInt(hc), bS, eF))
1255+ let hd = if ((fJ == cw))
12551256 then 0
1256- else if ((fI == cx))
1257+ else if ((fJ == cx))
12571258 then 1
12581259 else throw("invalid out asset id")
1259- let hd = es(dF, hc, bR)
1260- let he = (dF[hc] - hd)
1261- let hf = max([0, toInt((he - f))])
1262- let hg = cn(hf)
1263- let fS = hg._1
1264- let cp = hg._2
1265- $Tuple2(nil, $Tuple2(fS, cp))
1260+ let he = es(dF, hd, bR)
1261+ let hf = (dF[hd] - he)
1262+ let hg = max([0, toInt((hf - f))])
1263+ let hh = cn(hg)
1264+ let fT = hh._1
1265+ let cp = hh._2
1266+ $Tuple2(nil, $Tuple2(fT, cp))
12661267 }
12671268
12681269
12691270
12701271 @Callable(dV)
1271-func getOneTknV2WithBonusREADONLY (fI,hb) = {
1272+func getOneTknV2WithBonusREADONLY (fJ,hc) = {
12721273 let ba = aS()
12731274 let cw = ba[w]
12741275 let cx = ba[x]
12751276 let cv = ba[v]
12761277 let cC = bF(cw)
12771278 let cE = bF(cx)
1278- let hh = {
1279- let fR = invoke(this, "getOneTknV2READONLY", [fI, hb], nil)
1280- if ($isInstanceOf(fR, "(Int, Int)"))
1281- then fR
1282- else throw(($getType(fR) + " couldn't be cast to (Int, Int)"))
1279+ let hi = {
1280+ let fS = invoke(this, "getOneTknV2READONLY", [fJ, hc], nil)
1281+ if ($isInstanceOf(fS, "(Int, Int)"))
1282+ then fS
1283+ else throw(($getType(fS) + " couldn't be cast to (Int, Int)"))
12831284 }
1284- let fS = hh._1
1285- let cp = hh._2
1286- let dk = cq("", cv, hb, this)
1285+ let fT = hi._1
1286+ let cp = hi._2
1287+ let dk = cq("", cv, hc, this)
12871288 let cM = dk._1
12881289 let cN = dk._2
1289- let hi = (cM + cN)
1290- let fG = if ((hi == 0))
1291- then if ((fS == 0))
1290+ let hj = (cM + cN)
1291+ let fH = if ((hj == 0))
1292+ then if ((fT == 0))
12921293 then 0
12931294 else throw("bonus calculation error")
1294- else fraction((fS - hi), a, hi)
1295- $Tuple2(nil, $Tuple3(fS, cp, fG))
1295+ else fraction((fT - hj), a, hj)
1296+ $Tuple2(nil, $Tuple3(fT, cp, fH))
12961297 }
12971298
12981299
12991300
13001301 @Callable(dV)
1301-func getNoLess (hj,hk) = {
1302- let dk = ff(dV)
1302+func getNoLess (hk,hl) = {
1303+ let dk = fg(dV)
13031304 let cM = dk._1
13041305 let cN = dk._2
13051306 let cY = dk._3
13061307 let cs = dk._4
13071308 let cO = dk._5
1308- if ((hj > cM))
1309- then throw(((("Failed: " + toString(cM)) + " < ") + toString(hj)))
1310- else if ((hk > cN))
1311- then throw(((("Failed: " + toString(cN)) + " < ") + toString(hk)))
1309+ if ((hk > cM))
1310+ then throw(((("Failed: " + toString(cM)) + " < ") + toString(hk)))
1311+ else if ((hl > cN))
1312+ then throw(((("Failed: " + toString(cN)) + " < ") + toString(hl)))
13121313 else {
1313- let eO = eH(toBigInt(0), toBigInt(0), toBigInt(cY))
1314- let hl = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
1315- if ((hl == hl))
1314+ let eP = eI(toBigInt(0), toBigInt(0), toBigInt(cY))
1315+ let hm = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
1316+ if ((hm == hm))
13161317 then {
1317- let hm = eP(-(cM), -(cN), 0)
1318- let gg = hm._1
1319- let eG = hm._2
1320- let gh = eT(eO, eG)
1321- if ((gh == gh))
1322- then (cO ++ gg)
1318+ let hn = eQ(-(cM), -(cN), 0)
1319+ let gh = hn._1
1320+ let eH = hn._2
1321+ let gi = eU(eP, eH)
1322+ if ((gi == gi))
1323+ then (cO ++ gh)
13231324 else throw("Strict value is not equal to itself.")
13241325 }
13251326 else throw("Strict value is not equal to itself.")
13301331
13311332 @Callable(dV)
13321333 func unstakeAndGet (co) = {
1333- let hn = if ((size(dV.payments) != 0))
1334+ let ho = if ((size(dV.payments) != 0))
13341335 then throw("No pmnts expd")
13351336 else true
1336- if ((hn == hn))
1337+ if ((ho == ho))
13371338 then {
13381339 let ce = aS()
1339- let ho = bk()
1340- let gA = fromBase58String(ce[v])
1341- let hp = valueOrErrorMessage(addressFromString(ho[C]), "Wr st addr")
1342- let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1343- let hq = invoke(hp, "unstake", [toBase58String(gA), co], nil)
1344- if ((hq == hq))
1340+ let hp = bk()
1341+ let gB = fromBase58String(ce[v])
1342+ let hq = valueOrErrorMessage(addressFromString(hp[C]), "Wr st addr")
1343+ let eP = eI(toBigInt(0), toBigInt(0), toBigInt(0))
1344+ let hr = invoke(hq, "unstake", [toBase58String(gB), co], nil)
1345+ if ((hr == hr))
13451346 then {
1346- let dk = cq(toBase58String(dV.transactionId), toBase58String(gA), co, dV.caller)
1347+ let dk = cq(toBase58String(dV.transactionId), toBase58String(gB), co, dV.caller)
13471348 let cM = dk._1
13481349 let cN = dk._2
13491350 let cA = parseIntValue(dk._9)
13501351 let cO = dk._10
1351- let hr = if (if (aP())
1352+ let hs = if (if (aP())
13521353 then true
13531354 else (cA == s))
13541355 then throw(("Blocked: " + toString(cA)))
13551356 else true
1356- if ((hr == hr))
1357+ if ((hs == hs))
13571358 then {
1358- let hs = invoke(aN, "burn", [co], [AttachedPayment(gA, co)])
1359- if ((hs == hs))
1359+ let ht = invoke(aN, "burn", [co], [AttachedPayment(gB, co)])
1360+ if ((ht == ht))
13601361 then {
1361- let ht = eP(-(cM), -(cN), 0)
1362- let gg = ht._1
1363- let eG = ht._2
1364- let gh = eT(eO, eG)
1365- if ((gh == gh))
1366- then (cO ++ gg)
1362+ let hu = eQ(-(cM), -(cN), 0)
1363+ let gh = hu._1
1364+ let eH = hu._2
1365+ let gi = eU(eP, eH)
1366+ if ((gi == gi))
1367+ then (cO ++ gh)
13671368 else throw("Strict value is not equal to itself.")
13681369 }
13691370 else throw("Strict value is not equal to itself.")
13781379
13791380
13801381 @Callable(dV)
1381-func unstakeAndGetNoLess (hu,hv,hk) = {
1382- let gV = if (aP())
1382+func unstakeAndGetNoLess (hv,hw,hl) = {
1383+ let gW = if (aP())
13831384 then true
13841385 else (be == s)
1385- let gK = [if (!(gV))
1386+ let gL = [if (!(gW))
13861387 then true
13871388 else throw("get operation is blocked by admin"), if ((size(dV.payments) == 0))
13881389 then true
13891390 else throw("no payments are expected")]
1390- if ((gK == gK))
1391+ if ((gL == gL))
13911392 then {
1392- let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1393- let hq = invoke(bm, "unstake", [toBase58String(bf), hu], nil)
1394- if ((hq == hq))
1393+ let eP = eI(toBigInt(0), toBigInt(0), toBigInt(0))
1394+ let hr = invoke(bm, "unstake", [toBase58String(bf), hv], nil)
1395+ if ((hr == hr))
13951396 then {
1396- let hw = cq(toBase58String(dV.transactionId), toBase58String(bf), hu, dV.caller)
1397- let cM = hw._1
1398- let cN = hw._2
1399- let cO = hw._10
1400- let hx = [if ((cM >= hv))
1397+ let hx = cq(toBase58String(dV.transactionId), toBase58String(bf), hv, dV.caller)
1398+ let cM = hx._1
1399+ let cN = hx._2
1400+ let cO = hx._10
1401+ let hy = [if ((cM >= hw))
14011402 then true
1402- else throw(makeString(["amount asset amount to receive is less than ", toString(hv)], "")), if ((cN >= hk))
1403+ else throw(makeString(["amount asset amount to receive is less than ", toString(hw)], "")), if ((cN >= hl))
14031404 then true
1404- else throw(makeString(["price asset amount to receive is less than ", toString(hk)], ""))]
1405- if ((hx == hx))
1405+ else throw(makeString(["price asset amount to receive is less than ", toString(hl)], ""))]
1406+ if ((hy == hy))
14061407 then {
1407- let hl = invoke(aN, "burn", [hu], [AttachedPayment(bf, hu)])
1408- if ((hl == hl))
1408+ let hm = invoke(aN, "burn", [hv], [AttachedPayment(bf, hv)])
1409+ if ((hm == hm))
14091410 then {
1410- let hy = eP(-(cM), -(cN), 0)
1411- let gg = hy._1
1412- let eG = hy._2
1413- let gh = eT(eO, eG)
1414- if ((gh == gh))
1415- then (cO ++ gg)
1411+ let hz = eQ(-(cM), -(cN), 0)
1412+ let gh = hz._1
1413+ let eH = hz._2
1414+ let gi = eU(eP, eH)
1415+ if ((gi == gi))
1416+ then (cO ++ gh)
14161417 else throw("Strict value is not equal to itself.")
14171418 }
14181419 else throw("Strict value is not equal to itself.")
14271428
14281429
14291430 @Callable(dV)
1430-func unstakeAndGetOneTknV2 (hu,fI,fJ) = {
1431- let gI = {
1432- let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1433- if ($isInstanceOf(fR, "Boolean"))
1434- then fR
1435- else throw(($getType(fR) + " couldn't be cast to Boolean"))
1431+func unstakeAndGetOneTknV2 (hv,fJ,fK) = {
1432+ let gJ = {
1433+ let fS = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1434+ if ($isInstanceOf(fS, "Boolean"))
1435+ then fS
1436+ else throw(($getType(fS) + " couldn't be cast to Boolean"))
14361437 }
1437- let gV = if (if (aP())
1438+ let gW = if (if (aP())
14381439 then true
14391440 else (be == s))
14401441 then true
1441- else gI
1442- let gK = [if (if (!(gV))
1442+ else gJ
1443+ let gL = [if (if (!(gW))
14431444 then true
1444- else gl(dV))
1445+ else gm(dV))
14451446 then true
14461447 else aK("get operation is blocked by admin"), if ((size(dV.payments) == 0))
14471448 then true
14481449 else aK("no payments are expected")]
1449- if ((gK == gK))
1450+ if ((gL == gL))
14501451 then {
14511452 let ce = aS()
1452- let ho = bk()
1453- let gA = fromBase58String(ce[v])
1454- let hp = valueOrErrorMessage(addressFromString(ho[C]), "Wr st addr")
1455- let hq = invoke(hp, "unstake", [toBase58String(gA), hu], nil)
1456- if ((hq == hq))
1453+ let hp = bk()
1454+ let gB = fromBase58String(ce[v])
1455+ let hq = valueOrErrorMessage(addressFromString(hp[C]), "Wr st addr")
1456+ let hr = invoke(hq, "unstake", [toBase58String(gB), hv], nil)
1457+ if ((hr == hr))
14571458 then {
1458- let hz = fH(fI, fJ, [AttachedPayment(gA, hu)], dV.caller, dV.originCaller, dV.transactionId)
1459- let cO = hz._1
1460- let fT = hz._2
1461- $Tuple2(cO, fT)
1459+ let hA = fI(fJ, fK, [AttachedPayment(gB, hv)], dV.caller, dV.originCaller, dV.transactionId)
1460+ let cO = hA._1
1461+ let fU = hA._2
1462+ $Tuple2(cO, fU)
14621463 }
14631464 else throw("Strict value is not equal to itself.")
14641465 }
14681469
14691470
14701471 @Callable(dV)
1471-func putOneTknV2WithBonusREADONLY (hA,hB) = {
1472+func putOneTknV2WithBonusREADONLY (hB,hC) = {
14721473 let ba = aS()
14731474 let cw = ba[w]
14741475 let cx = ba[x]
14751476 let cv = ba[v]
1476- let hC = fl(hA, hB, "", "", true)
1477- let fB = hC._1
1478- let cO = hC._2
1479- let cp = hC._3
1480- let fG = hC._4
1481- $Tuple2(nil, $Tuple3(fB, cp, fG))
1477+ let hD = fm(hB, hC, "", "", true)
1478+ let fC = hD._1
1479+ let cO = hD._2
1480+ let cp = hD._3
1481+ let fH = hD._4
1482+ $Tuple2(nil, $Tuple3(fC, cp, fH))
14821483 }
14831484
14841485
14851486
14861487 @Callable(dV)
1487-func putOneTknV2WithoutTakeFeeREADONLY (hA,hB) = {
1488+func putOneTknV2WithoutTakeFeeREADONLY (hB,hC) = {
14881489 let ba = aS()
14891490 let cw = ba[w]
14901491 let cx = ba[x]
14911492 let cv = ba[v]
1492- let hD = fl(hA, hB, "", "", false)
1493- let fB = hD._1
1494- let cO = hD._2
1495- let cp = hD._3
1496- let fG = hD._4
1497- $Tuple2(nil, $Tuple3(fB, cp, fG))
1493+ let hE = fm(hB, hC, "", "", false)
1494+ let fC = hE._1
1495+ let cO = hE._2
1496+ let cp = hE._3
1497+ let fH = hE._4
1498+ $Tuple2(nil, $Tuple3(fC, cp, fH))
14981499 }
14991500
15001501
15011502
15021503 @Callable(dV)
1503-func activate (hE,hF) = if ((toString(dV.caller) != toString(aN)))
1504+func activate (hF,hG) = if ((toString(dV.caller) != toString(aN)))
15041505 then throw("denied")
1505- else $Tuple2([StringEntry(ae(), hE), StringEntry(af(), hF)], "success")
1506+ else $Tuple2([StringEntry(ae(), hF), StringEntry(af(), hG)], "success")
15061507
15071508
15081509
15091510 @Callable(dV)
1510-func setS (hG,hr) = if ((toString(dV.caller) != aG(this, ah())))
1511- then gk
1512- else [StringEntry(hG, hr)]
1511+func setS (hH,hs) = if ((toString(dV.caller) != aG(this, ah())))
1512+ then gl
1513+ else [StringEntry(hH, hs)]
15131514
15141515
15151516
15161517 @Callable(dV)
1517-func setI (hG,hr) = if ((toString(dV.caller) != aG(this, ah())))
1518- then gk
1519- else [IntegerEntry(hG, hr)]
1518+func setI (hH,hs) = if ((toString(dV.caller) != aG(this, ah())))
1519+ then gl
1520+ else [IntegerEntry(hH, hs)]
15201521
15211522
15221523
15321533
15331534 @Callable(dV)
15341535 func calcPricesWrapperREADONLY (bY,bZ,cd) = {
1535- let hH = cc(bY, bZ, cd)
1536- $Tuple2(nil, [toString(hH[0]), toString(hH[1]), toString(hH[2])])
1536+ let hI = cc(bY, bZ, cd)
1537+ $Tuple2(nil, [toString(hI[0]), toString(hI[1]), toString(hI[2])])
15371538 }
15381539
15391540
15401541
15411542 @Callable(dV)
1542-func fromX18WrapperREADONLY (L,hI) = $Tuple2(nil, K(parseBigIntValue(L), hI))
1543+func fromX18WrapperREADONLY (L,hJ) = $Tuple2(nil, K(parseBigIntValue(L), hJ))
15431544
15441545
15451546
15541555
15551556
15561557 @Callable(dV)
1557-func estimatePutOperationWrapperREADONLY (cr,bN,cQ,cR,cS,cT,hJ,cU,cV) = $Tuple2(nil, cP(cr, bN, cQ, cR, cS, cT, hJ, cU, cV, true, false, 0, ""))
1558+func estimatePutOperationWrapperREADONLY (cr,bN,cQ,cR,cS,cT,hK,cU,cV) = $Tuple2(nil, cP(cr, bN, cQ, cR, cS, cT, hK, cU, cV, true, false, 0, ""))
15581559
15591560
15601561
15611562 @Callable(dV)
1562-func estimateGetOperationWrapperREADONLY (cr,hK,ct,hJ) = {
1563- let dk = cq(cr, hK, ct, addressFromStringValue(hJ))
1563+func estimateGetOperationWrapperREADONLY (cr,hL,ct,hK) = {
1564+ let dk = cq(cr, hL, ct, addressFromStringValue(hK))
15641565 $Tuple2(nil, $Tuple10(dk._1, dk._2, dk._3, dk._4, dk._5, dk._6, dk._7, toString(dk._8), dk._9, dk._10))
15651566 }
15661567
15701571 func getFeeREADONLY () = $Tuple2(nil, aj)
15711572
15721573
1573-@Verifier(hL)
1574-func hM () = {
1575- let hN = {
1576- let aE = gi()
1574+@Verifier(hM)
1575+func hN () = {
1576+ let hO = {
1577+ let aE = gj()
15771578 if ($isInstanceOf(aE, "ByteVector"))
15781579 then {
1579- let gm = aE
1580- gm
1580+ let gn = aE
1581+ gn
15811582 }
15821583 else if ($isInstanceOf(aE, "Unit"))
1583- then hL.senderPublicKey
1584+ then hM.senderPublicKey
15841585 else throw("Match error")
15851586 }
1586- let aE = hL
1587+ let aE = hM
15871588 if ($isInstanceOf(aE, "Order"))
15881589 then {
1589- let eW = aE
1590- let hO = aQ()
1591- let hP = eV(eW)
1592- let hQ = sigVerify(eW.bodyBytes, eW.proofs[0], eW.senderPublicKey)
1593- let hR = sigVerify(eW.bodyBytes, eW.proofs[1], hO)
1594- if (if (if (hP)
1595- then hQ
1596- else false)
1590+ let eX = aE
1591+ let hP = aQ()
1592+ let hQ = eW(eX)
1593+ let hR = sigVerify(eX.bodyBytes, eX.proofs[0], eX.senderPublicKey)
1594+ let hS = sigVerify(eX.bodyBytes, eX.proofs[1], hP)
1595+ if (if (if (hQ)
15971596 then hR
15981597 else false)
1598+ then hS
1599+ else false)
15991600 then true
1600- else az(hP, hQ, hR)
1601+ else az(hQ, hR, hS)
16011602 }
16021603 else if ($isInstanceOf(aE, "SetScriptTransaction"))
16031604 then {
16041605 let dI = aE
1605- let hS = blake2b256(value(dI.script))
1606- let hT = fromBase64String(value(getString(aN, ax())))
1607- let hU = scriptHash(this)
1608- if (if ((hT == hS))
1609- then (hU != hS)
1606+ let hT = blake2b256(value(dI.script))
1607+ let hU = fromBase64String(value(getString(aN, ax())))
1608+ let hV = scriptHash(this)
1609+ if (if ((hU == hT))
1610+ then (hV != hT)
16101611 else false)
16111612 then true
1612- else sigVerify(hL.bodyBytes, hL.proofs[0], hN)
1613+ else sigVerify(hM.bodyBytes, hM.proofs[0], hO)
16131614 }
1614- else sigVerify(hL.bodyBytes, hL.proofs[0], hN)
1615+ else sigVerify(hM.bodyBytes, hM.proofs[0], hO)
16151616 }
16161617
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
1818 let h = toBigInt(3)
1919
2020 let i = toBigInt(4)
2121
2222 let j = toBigInt((a - ((a * 1) / a)))
2323
2424 let k = "WAVES"
2525
2626 let l = "100"
2727
2828 let m = "1"
2929
3030 let n = "__"
3131
3232 let o = ""
3333
3434 let p = 1
3535
3636 let q = 2
3737
3838 let r = 3
3939
4040 let s = 4
4141
4242 let t = 1
4343
4444 let u = 2
4545
4646 let v = 3
4747
4848 let w = 4
4949
5050 let x = 5
5151
5252 let y = 6
5353
5454 let z = 7
5555
5656 let A = 8
5757
5858 let B = 9
5959
6060 let C = 1
6161
6262 let D = 6
6363
6464 let E = 7
6565
6666 let F = 10
6767
6868 let G = fraction(10, a, 10000)
6969
7070 func H (I,J) = fraction(toBigInt(I), c, toBigInt(J))
7171
7272
7373 func K (L,M) = toInt(fraction(L, toBigInt(M), c))
7474
7575
7676 func N (O,P,Q) = fraction(O, P, Q)
7777
7878
7979 func R (L) = if ((d > L))
8080 then -(L)
8181 else L
8282
8383
8484 func S (L) = if ((d > L))
8585 then -(L)
8686 else L
8787
8888
8989 func T () = "%s__factoryContract"
9090
9191
9292 func U () = "%s__managerPublicKey"
9393
9494
9595 func V () = "%s__pendingManagerPublicKey"
9696
9797
9898 func W () = "%s%s__price__last"
9999
100100
101101 func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], n)
102102
103103
104104 func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
105105
106106
107107 func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
108108
109109
110110 func ae () = "%s__amountAsset"
111111
112112
113113 func af () = "%s__priceAsset"
114114
115115
116116 func ag () = "%s__amp"
117117
118118
119119 func ah () = "%s__addonAddr"
120120
121121
122122 let ai = "%s__fee"
123123
124124 let aj = valueOrElse(getInteger(this, ai), G)
125125
126126 let ak = makeString(["%s", "dLp"], n)
127127
128128 let al = makeString(["%s", "dLpRefreshedHeight"], n)
129129
130130 let am = makeString(["%s", "refreshDLpDelay"], n)
131131
132132 let an = 1
133133
134134 let ao = valueOrElse(getInteger(this, am), an)
135135
136136 func ap () = "%s__factoryConfig"
137137
138138
139139 func aq () = "%s%s__matcher__publicKey"
140140
141141
142142 func ar (as,at) = (((("%d%d%s__" + as) + "__") + at) + "__config")
143143
144144
145145 func au (av) = ("%s%s%s__mappings__baseAsset2internalId__" + av)
146146
147147
148148 func aw () = "%s__shutdown"
149149
150150
151151 func ax () = "%s__allowedLpStableScriptHash"
152152
153153
154154 func ay () = "%s__feeCollectorAddress"
155155
156156
157157 func az (aA,aB,aC) = throw(((((("Failed: ordValid=" + toString(aA)) + " sndrValid=") + toString(aB)) + " mtchrValid=") + toString(aC)))
158158
159159
160160 func aD (L) = {
161161 let aE = L
162162 if ($isInstanceOf(aE, "String"))
163163 then {
164164 let aF = aE
165165 aF
166166 }
167167 else throw("fail cast to String")
168168 }
169169
170170
171171 func aG (aH,aI) = valueOrErrorMessage(getString(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " not defined"], ""))
172172
173173
174174 func aJ (aH,aI) = valueOrErrorMessage(getInteger(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " not defined"], ""))
175175
176176
177177 func aK (aL) = throw(makeString(["lp_stable.ride:", aL], " "))
178178
179179
180180 func aM (aL) = makeString(["lp_stable.ride:", aL], " ")
181181
182182
183183 let aN = addressFromStringValue(aG(this, T()))
184184
185185 let aO = aG(this, ag())
186186
187187 func aP () = valueOrElse(getBoolean(aN, aw()), false)
188188
189189
190190 func aQ () = fromBase58String(aG(aN, aq()))
191191
192192
193193 let aR = addressFromStringValue(aG(aN, ay()))
194194
195195 func aS () = {
196196 let aT = aG(this, ae())
197197 let aU = aG(this, af())
198198 let aV = aJ(aN, au(aU))
199199 let as = aJ(aN, au(aT))
200200 split(aG(aN, ar(toString(as), toString(aV))), n)
201201 }
202202
203203
204204 func aW (aX) = if ((aX == k))
205205 then unit
206206 else fromBase58String(aX)
207207
208208
209209 func aY (aX) = if ((aX == unit))
210210 then k
211211 else toBase58String(value(aX))
212212
213213
214214 func aZ (ba) = $Tuple7(addressFromStringValue(ba[t]), parseIntValue(ba[u]), fromBase58String(ba[v]), aW(ba[w]), aW(ba[x]), parseIntValue(ba[y]), parseIntValue(ba[z]))
215215
216216
217217 let bb = aZ(aS())
218218
219219 let bc = bb
220220
221221 let bd = bc._1
222222
223223 let be = bc._2
224224
225225 let bf = bc._3
226226
227227 let bg = bc._4
228228
229229 let bh = bc._5
230230
231231 let bi = bc._6
232232
233233 let bj = bc._7
234234
235235 func bk () = split(aG(aN, ap()), n)
236236
237237
238238 let bl = bk()
239239
240240 let bm = valueOrErrorMessage(addressFromString(bl[C]), "Invalid staking contract address")
241241
242242 let bn = valueOrErrorMessage(addressFromString(bl[E]), "Invalid slipage contract address")
243243
244244 let bo = valueOrErrorMessage(addressFromString(bl[F]), "Invalid gwx contract address")
245245
246246 let bp = valueOrErrorMessage(addressFromString(bl[D]), "Invalid gwx contract address")
247247
248248 func bq (br,bs,bt,bu,bv,bw,bx,by,bz,bA) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA)], n)
249249
250250
251251 func bB (bC,bD,bE,bu,bx,by) = makeString(["%d%d%d%d%d%d", toString(bC), toString(bD), toString(bE), toString(bu), toString(bx), toString(by)], n)
252252
253253
254254 func bF (bG) = if ((bG == "WAVES"))
255255 then wavesBalance(this).available
256256 else assetBalance(this, fromBase58String(bG))
257257
258258
259259 func bH (bI,bJ) = fraction(bI, c, bJ)
260260
261261
262262 func bK (bL,bM,bN) = {
263263 let bO = fraction((bL - bM), b, bM)
264264 let bP = ((bN - R(bO)) > d)
265265 if (!(bP))
266266 then throw(("Big slpg: " + toString(bO)))
267267 else $Tuple2(bP, min([bL, bM]))
268268 }
269269
270270
271271 func bQ (bR,bS,bT) = {
272272 let bO = fraction(bS, b, bR)
273273 let bU = (bT > bO)
274274 if (if (bU)
275275 then true
276276 else (bS > bR))
277277 then throw(((((((toString(bS) + " ") + toString(bR)) + " ") + toString(bO)) + " ") + toString(bT)))
278278 else bU
279279 }
280280
281281
282282 func bV (bW,bX,bY,bZ) = {
283283 let ca = H(bY, bW)
284284 let cb = H(bZ, bX)
285285 bH(cb, ca)
286286 }
287287
288288
289289 func cc (bY,bZ,cd) = {
290290 let ce = aS()
291291 let cf = parseIntValue(ce[y])
292292 let cg = parseIntValue(ce[z])
293293 let ch = bV(cf, cg, bY, bZ)
294294 let bJ = H(bY, cf)
295295 let bI = H(bZ, cg)
296296 let ci = H(cd, a)
297297 let cj = bH(bJ, ci)
298298 let ck = bH(bI, ci)
299299 [ch, cj, ck]
300300 }
301301
302302
303303 func cl (bY,bZ,cd) = {
304304 let cm = cc(bY, bZ, cd)
305305 [K(cm[0], a), K(cm[1], a), K(cm[2], a)]
306306 }
307307
308308
309309 func cn (co) = {
310310 let cp = fraction(co, aj, a)
311311 $Tuple2((co - cp), cp)
312312 }
313313
314314
315315 func cq (cr,cs,ct,cu) = {
316316 let ce = aS()
317317 let cv = ce[v]
318318 let cw = ce[w]
319319 let cx = ce[x]
320320 let cy = parseIntValue(ce[y])
321321 let cz = parseIntValue(ce[z])
322322 let cA = ce[u]
323323 let cB = valueOrErrorMessage(assetInfo(fromBase58String(cv)), "Wrong LP id").quantity
324324 if ((cv != cs))
325325 then throw("Wrong pmt asset")
326326 else {
327327 let cC = bF(cw)
328328 let cD = H(cC, cy)
329329 let cE = bF(cx)
330330 let cF = H(cE, cz)
331331 let cG = bH(cF, cD)
332332 let cH = K(cG, a)
333333 let cI = H(ct, a)
334334 let cJ = H(cB, a)
335335 let cK = fraction(cD, cI, cJ)
336336 let cL = fraction(cF, cI, cJ)
337337 let cM = K(cK, cy)
338338 let cN = K(cL, cz)
339339 let cO = if ((cr == ""))
340340 then nil
341341 else [ScriptTransfer(cu, cM, if ((cw == "WAVES"))
342342 then unit
343343 else fromBase58String(cw)), ScriptTransfer(cu, cN, if ((cx == "WAVES"))
344344 then unit
345345 else fromBase58String(cx)), StringEntry(ad(toString(cu), cr), bB(cM, cN, ct, cH, height, lastBlock.timestamp)), IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH)]
346346 $Tuple10(cM, cN, cw, cx, cC, cE, cB, cG, cA, cO)
347347 }
348348 }
349349
350350
351351 func cP (cr,bN,cQ,cR,cS,cT,cu,cU,cV,cW,cX,cY,cZ) = {
352352 let ce = aS()
353353 let cv = fromBase58String(ce[v])
354354 let da = ce[w]
355355 let db = ce[x]
356356 let dc = ce[A]
357357 let dd = ce[B]
358358 let de = parseIntValue(ce[y])
359359 let df = parseIntValue(ce[z])
360360 let cA = ce[u]
361361 let dg = valueOrErrorMessage(assetInfo(cv), "Wr lp as").quantity
362362 let cC = if (cU)
363363 then bF(da)
364364 else if (if (cW)
365365 then (cZ == da)
366366 else false)
367367 then (bF(da) - cY)
368368 else if (cW)
369369 then bF(da)
370370 else (bF(da) - cQ)
371371 let cE = if (cU)
372372 then bF(db)
373373 else if (if (cW)
374374 then (cZ == db)
375375 else false)
376376 then (bF(db) - cY)
377377 else if (cW)
378378 then bF(db)
379379 else (bF(db) - cS)
380380 let dh = H(cQ, de)
381381 let di = H(cS, df)
382382 let dj = bH(di, dh)
383383 let cD = H(cC, de)
384384 let cF = H(cE, df)
385385 let dk = if ((dg == 0))
386386 then {
387387 let cG = d
388388 let dl = d
389389 let ci = pow((dh * di), 0, toBigInt(5), 1, 0, DOWN)
390390 $Tuple5(K(ci, a), K(dh, de), K(di, df), bH((cF + di), (cD + dh)), dl)
391391 }
392392 else {
393393 let cG = bH(cF, cD)
394394 let dm = fraction(R((cG - dj)), c, cG)
395395 let dl = H(bN, a)
396396 if (if (if (cX)
397397 then (cG != d)
398398 else false)
399399 then (dm > dl)
400400 else false)
401401 then throw(((("Price slippage " + toString(dm)) + " > ") + toString(dl)))
402402 else {
403403 let dn = H(dg, a)
404404 let do = fraction(dh, cG, c)
405405 let dp = fraction(di, c, cG)
406406 let dq = if ((do > di))
407407 then $Tuple2(dp, di)
408408 else $Tuple2(dh, do)
409409 let dr = dq._1
410410 let ds = dq._2
411411 let ci = fraction(dn, ds, cF)
412412 $Tuple5(K(ci, a), K(dr, de), K(ds, df), cG, dl)
413413 }
414414 }
415415 let dt = dk._1
416416 let du = dk._2
417417 let dv = dk._3
418418 let cH = K(dk._4, a)
419419 let dw = K(dk._5, a)
420420 if ((0 >= dt))
421421 then throw("LP <= 0")
422422 else {
423423 let dx = if (!(cV))
424424 then 0
425425 else dt
426426 let dy = (cQ - du)
427427 let dz = (cS - dv)
428428 let dA = if (if (cW)
429429 then (cZ == da)
430430 else false)
431431 then $Tuple2(cY, 0)
432432 else if (if (cW)
433433 then (cZ == db)
434434 else false)
435435 then $Tuple2(0, cY)
436436 else $Tuple2(du, dv)
437437 let dB = dA._1
438438 let dC = dA._2
439439 let dD = [IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH), StringEntry(aa(cu, cr), bq(dB, dC, dx, cH, bN, dw, height, lastBlock.timestamp, dy, dz))]
440440 $Tuple13(dt, dx, cH, cC, cE, dg, cv, cA, dD, dy, dz, cR, cT)
441441 }
442442 }
443443
444444
445445 func dE (dF) = {
446446 let dG = dF[0]
447447 let dH = dF[1]
448448 let dI = (dG + dH)
449449 if ((dI == e))
450450 then e
451451 else {
452452 let dJ = parseIntValue(aO)
453453 let dK = (dJ * 2)
454454 let cm = fraction(dG, dH, f)
455455 let dL = fraction(cm, i, f)
456456 let dM = fraction(toBigInt(dK), dI, f)
457457 let dN = toBigInt((dK - 1))
458458 func dO (dP) = {
459459 let dQ = fraction(dP, dP, f)
460460 let dR = fraction(dQ, dP, f)
461461 let dS = fraction(dR, f, dL)
462462 fraction((dM + fraction(dS, g, f)), dP, (fraction(dN, dP, f) + fraction(h, dS, f)))
463463 }
464464
465465 func dT (dU,dV) = if (dU._2)
466466 then dU
467467 else {
468468 let dP = dU._1
469469 let dW = dO(dP)
470470 let dX = toInt((dW - value(dP)))
471471 let dY = if ((0 > dX))
472472 then -(dX)
473473 else dX
474474 if ((1 >= dY))
475475 then $Tuple2(dW, true)
476476 else $Tuple2(dW, false)
477477 }
478478
479479 let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
480480 let ea = {
481481 let eb = dZ
482482 let ec = size(eb)
483483 let ed = $Tuple2(dI, false)
484484 func ee (ef,eg) = if ((eg >= ec))
485485 then ef
486486 else dT(ef, eb[eg])
487487
488488 func eh (ef,eg) = if ((eg >= ec))
489489 then ef
490490 else throw("List size exceeds 15")
491491
492492 eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
493493 }
494494 let dP = ea._1
495495 let ei = ea._2
496496 if (ei)
497497 then dP
498498 else throw(("D calculation error, D = " + toString(dP)))
499499 }
500500 }
501501
502502
503503 func ej (dF) = {
504504 let ek = g
505505 let dG = dF[0]
506506 let dH = dF[1]
507507 let el = parseBigIntValue(l)
508508 let dJ = (parseBigIntValue(aO) * el)
509509 let dI = (dG + dH)
510510 if ((dI == e))
511511 then e
512512 else {
513513 let dK = (dJ * ek)
514514 let dL = (((dG * dH) * ek) * ek)
515515 let em = ((dK * dI) / el)
516516 let en = (dK - el)
517517 let eo = (ek + f)
518518 func dT (dU,ep) = {
519519 let eq = dU
520520 let dP = eq._1
521521 let ei = eq._2
522522 if ((ei != unit))
523523 then dU
524524 else {
525525 let dS = (((dP * dP) * dP) / dL)
526526 let dW = (((em + (dS * ek)) * dP) / (((en * dP) / el) + (eo * dS)))
527527 let dY = S((dW - value(dP)))
528528 if ((f >= dY))
529529 then $Tuple2(dW, ep)
530530 else $Tuple2(dW, unit)
531531 }
532532 }
533533
534534 let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
535535 let er = {
536536 let eb = dZ
537537 let ec = size(eb)
538538 let ed = $Tuple2(dI, unit)
539539 func ee (ef,eg) = if ((eg >= ec))
540540 then ef
541541 else dT(ef, eb[eg])
542542
543543 func eh (ef,eg) = if ((eg >= ec))
544544 then ef
545545 else throw("List size exceeds 15")
546546
547547 eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
548548 }
549549 let dP = er._1
550550 let ei = er._2
551551 if ((ei != unit))
552552 then dP
553553 else throw(("D calculation error, D = " + toString(dP)))
554554 }
555555 }
556556
557557
558558 func es (dF,dV,et) = {
559559 let ek = g
560560 let eu = dF[if ((dV == 0))
561561 then 1
562562 else 0]
563563 let el = parseBigIntValue(l)
564564 let dJ = (parseBigIntValue(aO) * el)
565565 let dI = eu
566566 let dK = (dJ * ek)
567567 let ev = (((((et * et) / (eu * ek)) * et) * el) / (dK * ek))
568568 let ew = ((dI + ((et * el) / dK)) - et)
569569 func dT (dU,ep) = {
570570 let ex = dU
571571 let ey = ex._1
572572 let ei = ex._2
573573 if ((ei != unit))
574574 then dU
575575 else {
576576 let ez = (((ey * ey) + ev) / ((g * ey) + ew))
577577 let eA = S((ez - value(ey)))
578578 if ((f >= eA))
579579 then $Tuple2(ez, ep)
580580 else $Tuple2(ez, unit)
581581 }
582582 }
583583
584584 let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
585585 let eB = {
586586 let eb = dZ
587587 let ec = size(eb)
588588 let ed = $Tuple2(et, unit)
589589 func ee (ef,eg) = if ((eg >= ec))
590590 then ef
591591 else dT(ef, eb[eg])
592592
593593 func eh (ef,eg) = if ((eg >= ec))
594594 then ef
595595 else throw("List size exceeds 15")
596596
597597 eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
598598 }
599599 let ey = eB._1
600600 let ei = eB._2
601601 if ((ei != unit))
602602 then ey
603603 else throw(("Y calculation error, Y = " + toString(ey)))
604604 }
605605
606606
607607 func eC (eD,eE,eF) = {
608- let eG = fraction(dE([eD, eE]), c, eF)
608+ let eG = toBigInt(1000000000000)
609+ let eH = fraction(dE([eD, eE]), eG, eF)
609610 if ((eF == e))
610611 then e
611- else eG
612+ else eH
612613 }
613614
614615
615-func eH (eI,eJ,eK) = {
616- let eL = (toBigInt(bF(aY(bg))) - eI)
617- let eM = (toBigInt(bF(aY(bh))) - eJ)
618- let eN = (toBigInt(value(assetInfo(bf)).quantity) - eK)
619- let eO = eC(eL, eM, eN)
620- eO
616+func eI (eJ,eK,eL) = {
617+ let eM = (toBigInt(bF(aY(bg))) - eJ)
618+ let eN = (toBigInt(bF(aY(bh))) - eK)
619+ let eO = (toBigInt(value(assetInfo(bf)).quantity) - eL)
620+ let eP = eC(eM, eN, eO)
621+ eP
621622 }
622623
623624
624-func eP (eQ,eR,eK) = {
625- let eL = (bF(aY(bg)) + eQ)
626- let eM = (bF(aY(bh)) + eR)
627- let eN = (value(assetInfo(bf)).quantity + eK)
628- let eG = eC(toBigInt(eL), toBigInt(eM), toBigInt(eN))
629- let eS = [IntegerEntry(al, height), StringEntry(ak, toString(eG))]
630- $Tuple2(eS, eG)
625+func eQ (eR,eS,eL) = {
626+ let eM = (bF(aY(bg)) + eR)
627+ let eN = (bF(aY(bh)) + eS)
628+ let eO = (value(assetInfo(bf)).quantity + eL)
629+ let eH = eC(toBigInt(eM), toBigInt(eN), toBigInt(eO))
630+ let eT = [IntegerEntry(al, height), StringEntry(ak, toString(eH))]
631+ $Tuple2(eT, eH)
631632 }
632633
633634
634-func eT (eU,eG) = if ((eG >= eU))
635+func eU (eV,eH) = if ((eH >= eV))
635636 then true
636637 else aK("updated DLp lower than current DLp")
637638
638639
639-func eV (eW) = {
640- let eX = eW.amount
641- let eY = fraction(eW.amount, eW.price, a, FLOOR)
642- let eZ = if ((eW.orderType == Buy))
643- then $Tuple2(eX, -(eY))
644- else $Tuple2(-(eX), eY)
645- let eQ = eZ._1
646- let eR = eZ._2
640+func eW (eX) = {
641+ let eY = eX.amount
642+ let eZ = fraction(eX.amount, eX.price, a, FLOOR)
643+ let fa = if ((eX.orderType == Buy))
644+ then $Tuple2(eY, -(eZ))
645+ else $Tuple2(-(eY), eZ)
646+ let eR = fa._1
647+ let eS = fa._2
647648 if (if (if (aP())
648649 then true
649650 else (be == r))
650651 then true
651652 else (be == s))
652653 then throw("Admin blocked")
653- else if (if ((eW.assetPair.amountAsset != bg))
654+ else if (if ((eX.assetPair.amountAsset != bg))
654655 then true
655- else (eW.assetPair.priceAsset != bh))
656+ else (eX.assetPair.priceAsset != bh))
656657 then throw("Wr assets")
657658 else {
658- let fa = parseBigIntValue(getStringValue(this, ak))
659- let fb = eP(eQ, eR, 0)
660- let fc = fb._1
661- let fd = fb._2
662- let fe = (fd >= fa)
663- fe
659+ let fb = parseBigIntValue(getStringValue(this, ak))
660+ let fc = eQ(eR, eS, 0)
661+ let fd = fc._1
662+ let fe = fc._2
663+ let ff = (fe >= fb)
664+ ff
664665 }
665666 }
666667
667668
668-func ff (dV) = if ((size(dV.payments) != 1))
669+func fg (dV) = if ((size(dV.payments) != 1))
669670 then throw("1 pmnt exp")
670671 else {
671- let fg = value(dV.payments[0])
672- let cs = value(fg.assetId)
673- let cY = fg.amount
672+ let fh = value(dV.payments[0])
673+ let cs = value(fh.assetId)
674+ let cY = fh.amount
674675 let dk = cq(toBase58String(dV.transactionId), toBase58String(cs), cY, dV.caller)
675676 let cM = dk._1
676677 let cN = dk._2
677678 let cA = parseIntValue(dk._9)
678679 let cO = dk._10
679680 if (if (aP())
680681 then true
681682 else (cA == s))
682683 then throw(("Admin blocked: " + toString(cA)))
683684 else $Tuple5(cM, cN, cY, cs, cO)
684685 }
685686
686687
687-func fh (fi,ac,fj,fk,bN,cV,cW,cX,cY,cZ) = {
688- let dk = cP(ac, bN, value(fj).amount, value(fj).assetId, value(fk).amount, value(fk).assetId, fi, (ac == ""), cV, cW, cX, cY, cZ)
688+func fi (fj,ac,fk,fl,bN,cV,cW,cX,cY,cZ) = {
689+ let dk = cP(ac, bN, value(fk).amount, value(fk).assetId, value(fl).amount, value(fl).assetId, fj, (ac == ""), cV, cW, cX, cY, cZ)
689690 let cA = parseIntValue(dk._8)
690691 if (if (if (aP())
691692 then true
692693 else (cA == q))
693694 then true
694695 else (cA == s))
695696 then throw(("Blocked:" + toString(cA)))
696697 else dk
697698 }
698699
699700
700-func fl (fm,cs,cu,ac,fn) = {
701+func fm (fn,cs,cu,ac,fo) = {
701702 let ba = aS()
702703 let cw = ba[w]
703704 let cx = ba[x]
704705 let cv = ba[v]
705706 let de = parseIntValue(ba[y])
706707 let df = parseIntValue(ba[z])
707- let eN = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
708- let fo = if ((eN > e))
708+ let eO = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
709+ let fp = if ((eO > e))
709710 then true
710711 else throw("initial deposit requires all coins")
711- if ((fo == fo))
712+ if ((fp == fp))
712713 then {
713714 let cC = bF(cw)
714715 let cE = bF(cx)
715- let fp = if ((ac == ""))
716+ let fq = if ((ac == ""))
716717 then $Tuple2(cC, cE)
717718 else if ((cs == cw))
718- then if ((fm > cC))
719+ then if ((fn > cC))
719720 then throw("invalid payment amount")
720- else $Tuple2((cC - fm), cE)
721+ else $Tuple2((cC - fn), cE)
721722 else if ((cs == cx))
722- then if ((fm > cE))
723+ then if ((fn > cE))
723724 then throw("invalid payment amount")
724- else $Tuple2(cC, (cE - fm))
725+ else $Tuple2(cC, (cE - fn))
725726 else throw("wrong pmtAssetId")
726- let fq = fp._1
727- let fr = fp._2
728- let fs = if ((cs == cw))
729- then $Tuple2(fm, 0)
727+ let fr = fq._1
728+ let fs = fq._2
729+ let ft = if ((cs == cw))
730+ then $Tuple2(fn, 0)
730731 else if ((cs == cx))
731- then $Tuple2(0, fm)
732+ then $Tuple2(0, fn)
732733 else throw("invalid payment")
733- let ft = fs._1
734- let fu = fs._2
735- let fv = if (fn)
736- then $Tuple3(cn(ft)._1, cn(fu)._1, cn(fm)._2)
737- else $Tuple3(ft, fu, 0)
738- let fw = fv._1
739- let fx = fv._2
740- let cp = fv._3
741- let fy = (fq + fw)
734+ let fu = ft._1
735+ let fv = ft._2
736+ let fw = if (fo)
737+ then $Tuple3(cn(fu)._1, cn(fv)._1, cn(fn)._2)
738+ else $Tuple3(fu, fv, 0)
739+ let fx = fw._1
740+ let fy = fw._2
741+ let cp = fw._3
742742 let fz = (fr + fx)
743- let bS = dE([toBigInt(fq), toBigInt(fr)])
744- let bR = dE([toBigInt(fy), toBigInt(fz)])
745- let fA = if ((bR > bS))
743+ let fA = (fs + fy)
744+ let bS = dE([toBigInt(fr), toBigInt(fs)])
745+ let bR = dE([toBigInt(fz), toBigInt(fA)])
746+ let fB = if ((bR > bS))
746747 then true
747748 else throw()
748- if ((fA == fA))
749+ if ((fB == fB))
749750 then {
750- let fB = fraction(eN, (bR - bS), bS)
751- let cH = K(bH(H(fz, df), H(fy, de)), a)
752- let dD = [IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH), StringEntry(aa(cu, ac), bq(ft, fu, toInt(fB), cH, 0, 0, height, lastBlock.timestamp, 0, 0))]
753- let fC = fraction(fr, a, fq)
754- let fD = fraction(fm, a, (fC + a))
755- let fE = (fm - fD)
756- let fF = fraction(eN, toBigInt(fE), toBigInt(fr))
757- let fG = toInt(fraction((fB - fF), b, fF))
758- $Tuple4(toInt(fB), dD, cp, fG)
751+ let fC = fraction(eO, (bR - bS), bS)
752+ let cH = K(bH(H(fA, df), H(fz, de)), a)
753+ let dD = [IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH), StringEntry(aa(cu, ac), bq(fu, fv, toInt(fC), cH, 0, 0, height, lastBlock.timestamp, 0, 0))]
754+ let fD = fraction(fs, a, fr)
755+ let fE = fraction(fn, a, (fD + a))
756+ let fF = (fn - fE)
757+ let fG = fraction(eO, toBigInt(fF), toBigInt(fs))
758+ let fH = toInt(fraction((fC - fG), b, fG))
759+ $Tuple4(toInt(fC), dD, cp, fH)
759760 }
760761 else throw("Strict value is not equal to itself.")
761762 }
762763 else throw("Strict value is not equal to itself.")
763764 }
764765
765766
766-func fH (fI,fJ,fK,fi,fL,fM) = {
767+func fI (fJ,fK,fL,fj,fM,fN) = {
767768 let ba = aS()
768769 let cv = ba[v]
769770 let cw = ba[w]
770771 let cx = ba[x]
771- let fN = parseIntValue(ba[y])
772- let fO = parseIntValue(ba[z])
773- let fP = ba[u]
774- let cu = if ((fi == bp))
775- then fL
776- else fi
777- let fg = value(fK[0])
778- let cs = value(fg.assetId)
779- let cY = fg.amount
780- let eO = eH(e, e, e)
781- if ((eO == eO))
772+ let fO = parseIntValue(ba[y])
773+ let fP = parseIntValue(ba[z])
774+ let fQ = ba[u]
775+ let cu = if ((fj == bp))
776+ then fM
777+ else fj
778+ let fh = value(fL[0])
779+ let cs = value(fh.assetId)
780+ let cY = fh.amount
781+ let eP = eI(e, e, e)
782+ if ((eP == eP))
782783 then {
783- let cr = toBase58String(fM)
784+ let cr = toBase58String(fN)
784785 if ((cv != toBase58String(cs)))
785786 then throw("Wrong LP")
786787 else {
787788 let cC = bF(cw)
788789 let cE = bF(cx)
789- let fQ = {
790- let fR = invoke(this, "getOneTknV2READONLY", [fI, cY], nil)
791- if ($isInstanceOf(fR, "(Int, Int)"))
792- then fR
793- else throw(($getType(fR) + " couldn't be cast to (Int, Int)"))
790+ let fR = {
791+ let fS = invoke(this, "getOneTknV2READONLY", [fJ, cY], nil)
792+ if ($isInstanceOf(fS, "(Int, Int)"))
793+ then fS
794+ else throw(($getType(fS) + " couldn't be cast to (Int, Int)"))
794795 }
795- if ((fQ == fQ))
796+ if ((fR == fR))
796797 then {
797- let cp = fQ._2
798- let fS = fQ._1
799- let fT = if (if ((fJ > 0))
800- then (fJ > fS)
798+ let cp = fR._2
799+ let fT = fR._1
800+ let fU = if (if ((fK > 0))
801+ then (fK > fT)
801802 else false)
802- then aK(makeString(["amount to receive is less than ", toString(fJ)], ""))
803- else fS
804- let fU = if ((fI == cw))
805- then $Tuple4(fT, 0, ((cC - fT) - cp), cE)
806- else if ((fI == cx))
807- then $Tuple4(0, fT, cC, ((cE - fT) - cp))
803+ then aK(makeString(["amount to receive is less than ", toString(fK)], ""))
804+ else fT
805+ let fV = if ((fJ == cw))
806+ then $Tuple4(fU, 0, ((cC - fU) - cp), cE)
807+ else if ((fJ == cx))
808+ then $Tuple4(0, fU, cC, ((cE - fU) - cp))
808809 else throw("invalid out asset id")
809- let fV = fU._1
810- let fW = fU._2
811- let fy = fU._3
812- let fz = fU._4
813- let fX = bH(H(fz, fO), H(fy, fN))
814- let fY = K(fX, a)
815- let fZ = if ((fI == "WAVES"))
810+ let fW = fV._1
811+ let fX = fV._2
812+ let fz = fV._3
813+ let fA = fV._4
814+ let fY = bH(H(fA, fP), H(fz, fO))
815+ let fZ = K(fY, a)
816+ let ga = if ((fJ == "WAVES"))
816817 then unit
817- else fromBase58String(fI)
818- let ga = if ((cp > 0))
819- then [ScriptTransfer(aR, cp, fZ)]
818+ else fromBase58String(fJ)
819+ let gb = if ((cp > 0))
820+ then [ScriptTransfer(aR, cp, ga)]
820821 else nil
821- let cO = ([ScriptTransfer(cu, fT, fZ), StringEntry(ad(toString(cu), cr), bB(fV, fW, cY, fY, height, lastBlock.timestamp)), IntegerEntry(W(), fY), IntegerEntry(X(height, lastBlock.timestamp), fY)] ++ ga)
822+ let cO = ([ScriptTransfer(cu, fU, ga), StringEntry(ad(toString(cu), cr), bB(fW, fX, cY, fZ, height, lastBlock.timestamp)), IntegerEntry(W(), fZ), IntegerEntry(X(height, lastBlock.timestamp), fZ)] ++ gb)
822823 if ((cO == cO))
823824 then {
824- let gb = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
825- if ((gb == gb))
825+ let gc = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
826+ if ((gc == gc))
826827 then {
827- let gc = {
828- let gd = if ((this == aR))
828+ let gd = {
829+ let ge = if ((this == aR))
829830 then 0
830831 else cp
831- let ge = if ((aW(fI) == bg))
832+ let gf = if ((aW(fJ) == bg))
832833 then true
833834 else false
834- if (ge)
835- then $Tuple2(-((fS + gd)), 0)
836- else $Tuple2(0, -((fS + gd)))
835+ if (gf)
836+ then $Tuple2(-((fT + ge)), 0)
837+ else $Tuple2(0, -((fT + ge)))
837838 }
838- let eQ = gc._1
839- let eR = gc._2
840- let gf = eP(eQ, eR, 0)
841- let gg = gf._1
842- let eG = gf._2
843- let gh = eT(eO, eG)
844- if ((gh == gh))
845- then $Tuple2((cO ++ gg), fT)
839+ let eR = gd._1
840+ let eS = gd._2
841+ let gg = eQ(eR, eS, 0)
842+ let gh = gg._1
843+ let eH = gg._2
844+ let gi = eU(eP, eH)
845+ if ((gi == gi))
846+ then $Tuple2((cO ++ gh), fU)
846847 else throw("Strict value is not equal to itself.")
847848 }
848849 else throw("Strict value is not equal to itself.")
849850 }
850851 else throw("Strict value is not equal to itself.")
851852 }
852853 else throw("Strict value is not equal to itself.")
853854 }
854855 }
855856 else throw("Strict value is not equal to itself.")
856857 }
857858
858859
859-func gi () = {
860+func gj () = {
860861 let aE = getString(U())
861862 if ($isInstanceOf(aE, "String"))
862863 then {
863864 let dI = aE
864865 fromBase58String(dI)
865866 }
866867 else if ($isInstanceOf(aE, "Unit"))
867868 then unit
868869 else throw("Match error")
869870 }
870871
871872
872-func gj () = {
873+func gk () = {
873874 let aE = getString(V())
874875 if ($isInstanceOf(aE, "String"))
875876 then {
876877 let dI = aE
877878 fromBase58String(dI)
878879 }
879880 else if ($isInstanceOf(aE, "Unit"))
880881 then unit
881882 else throw("Match error")
882883 }
883884
884885
885-let gk = throw("Permission denied")
886+let gl = throw("Permission denied")
886887
887-func gl (dV) = {
888- let aE = gi()
888+func gm (dV) = {
889+ let aE = gj()
889890 if ($isInstanceOf(aE, "ByteVector"))
890891 then {
891- let gm = aE
892- (dV.callerPublicKey == gm)
892+ let gn = aE
893+ (dV.callerPublicKey == gn)
893894 }
894895 else if ($isInstanceOf(aE, "Unit"))
895896 then (dV.caller == this)
896897 else throw("Match error")
897898 }
898899
899900
900-func gn (dV) = {
901- let aE = gi()
901+func go (dV) = {
902+ let aE = gj()
902903 if ($isInstanceOf(aE, "ByteVector"))
903904 then {
904- let gm = aE
905- if ((dV.callerPublicKey == gm))
905+ let gn = aE
906+ if ((dV.callerPublicKey == gn))
906907 then true
907- else gk
908+ else gl
908909 }
909910 else if ($isInstanceOf(aE, "Unit"))
910911 then if ((dV.caller == this))
911912 then true
912- else gk
913+ else gl
913914 else throw("Match error")
914915 }
915916
916917
917918 @Callable(dV)
918919 func constructor (T) = {
919- let ev = gn(dV)
920+ let ev = go(dV)
920921 if ((ev == ev))
921922 then [StringEntry(T(), T)]
922923 else throw("Strict value is not equal to itself.")
923924 }
924925
925926
926927
927928 @Callable(dV)
928-func setManager (go) = {
929- let ev = gn(dV)
929+func setManager (gp) = {
930+ let ev = go(dV)
930931 if ((ev == ev))
931932 then {
932- let gp = fromBase58String(go)
933- if ((gp == gp))
934- then [StringEntry(V(), go)]
933+ let gq = fromBase58String(gp)
934+ if ((gq == gq))
935+ then [StringEntry(V(), gp)]
935936 else throw("Strict value is not equal to itself.")
936937 }
937938 else throw("Strict value is not equal to itself.")
938939 }
939940
940941
941942
942943 @Callable(dV)
943944 func confirmManager () = {
944- let cm = gj()
945- let gq = if (isDefined(cm))
945+ let cm = gk()
946+ let gr = if (isDefined(cm))
946947 then true
947948 else throw("No pending manager")
948- if ((gq == gq))
949+ if ((gr == gr))
949950 then {
950- let gr = if ((dV.callerPublicKey == value(cm)))
951+ let gs = if ((dV.callerPublicKey == value(cm)))
951952 then true
952953 else throw("You are not pending manager")
953- if ((gr == gr))
954+ if ((gs == gs))
954955 then [StringEntry(U(), toBase58String(value(cm))), DeleteEntry(V())]
955956 else throw("Strict value is not equal to itself.")
956957 }
957958 else throw("Strict value is not equal to itself.")
958959 }
959960
960961
961962
962963 @Callable(dV)
963-func put (gs,gt) = {
964- let gu = bk()
965- let gv = valueOrErrorMessage(addressFromString(gu[C]), "Wr st addr")
966- let gw = valueOrErrorMessage(addressFromString(gu[E]), "Wr sl addr")
967- if ((0 > gs))
964+func put (gt,gu) = {
965+ let gv = bk()
966+ let gw = valueOrErrorMessage(addressFromString(gv[C]), "Wr st addr")
967+ let gx = valueOrErrorMessage(addressFromString(gv[E]), "Wr sl addr")
968+ if ((0 > gt))
968969 then throw("Wrong slippage")
969970 else if ((size(dV.payments) != 2))
970971 then throw("2 pmnts expd")
971972 else {
972- let gx = toBigInt(value(dV.payments[0]).amount)
973- let gy = toBigInt(value(dV.payments[1]).amount)
974- let eO = eH(gx, gy, toBigInt(0))
975- if ((eO == eO))
973+ let gy = toBigInt(value(dV.payments[0]).amount)
974+ let gz = toBigInt(value(dV.payments[1]).amount)
975+ let eP = eI(gy, gz, toBigInt(0))
976+ if ((eP == eP))
976977 then {
977- let gz = fh(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gs, true, false, true, 0, "")
978- let dx = gz._2
979- let gA = gz._7
980- let cO = gz._9
981- let dy = gz._10
982- let dz = gz._11
983- let cw = gz._12
984- let cx = gz._13
978+ let gA = fi(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gt, true, false, true, 0, "")
979+ let dx = gA._2
980+ let gB = gA._7
981+ let cO = gA._9
982+ let dy = gA._10
983+ let dz = gA._11
984+ let cw = gA._12
985+ let cx = gA._13
985986 let dk = invoke(aN, "emit", [dx], nil)
986987 if ((dk == dk))
987988 then {
988- let gB = {
989+ let gC = {
989990 let aE = dk
990991 if ($isInstanceOf(aE, "Address"))
991992 then {
992- let gC = aE
993- invoke(gC, "emit", [dx], nil)
993+ let gD = aE
994+ invoke(gD, "emit", [dx], nil)
994995 }
995996 else unit
996997 }
997- if ((gB == gB))
998+ if ((gC == gC))
998999 then {
999- let gD = if ((dy > 0))
1000- then invoke(gw, "put", nil, [AttachedPayment(cw, dy)])
1000+ let gE = if ((dy > 0))
1001+ then invoke(gx, "put", nil, [AttachedPayment(cw, dy)])
10011002 else nil
1002- if ((gD == gD))
1003+ if ((gE == gE))
10031004 then {
1004- let gE = if ((dz > 0))
1005- then invoke(gw, "put", nil, [AttachedPayment(cx, dz)])
1005+ let gF = if ((dz > 0))
1006+ then invoke(gx, "put", nil, [AttachedPayment(cx, dz)])
10061007 else nil
1007- if ((gE == gE))
1008+ if ((gF == gF))
10081009 then {
1009- let gF = if (gt)
1010+ let gG = if (gu)
10101011 then {
1011- let gG = invoke(gv, "stake", nil, [AttachedPayment(gA, dx)])
1012- if ((gG == gG))
1012+ let gH = invoke(gw, "stake", nil, [AttachedPayment(gB, dx)])
1013+ if ((gH == gH))
10131014 then nil
10141015 else throw("Strict value is not equal to itself.")
10151016 }
1016- else [ScriptTransfer(dV.caller, dx, gA)]
1017- let gH = eP(0, 0, 0)
1018- let gg = gH._1
1019- let eG = gH._2
1020- let gh = eT(eO, eG)
1021- if ((gh == gh))
1022- then ((cO ++ gF) ++ gg)
1017+ else [ScriptTransfer(dV.caller, dx, gB)]
1018+ let gI = eQ(0, 0, 0)
1019+ let gh = gI._1
1020+ let eH = gI._2
1021+ let gi = eU(eP, eH)
1022+ if ((gi == gi))
1023+ then ((cO ++ gG) ++ gh)
10231024 else throw("Strict value is not equal to itself.")
10241025 }
10251026 else throw("Strict value is not equal to itself.")
10261027 }
10271028 else throw("Strict value is not equal to itself.")
10281029 }
10291030 else throw("Strict value is not equal to itself.")
10301031 }
10311032 else throw("Strict value is not equal to itself.")
10321033 }
10331034 else throw("Strict value is not equal to itself.")
10341035 }
10351036 }
10361037
10371038
10381039
10391040 @Callable(dV)
1040-func putOneTknV2 (fJ,gt) = {
1041- let gI = {
1042- let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1043- if ($isInstanceOf(fR, "Boolean"))
1044- then fR
1045- else throw(($getType(fR) + " couldn't be cast to Boolean"))
1041+func putOneTknV2 (fK,gu) = {
1042+ let gJ = {
1043+ let fS = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1044+ if ($isInstanceOf(fS, "Boolean"))
1045+ then fS
1046+ else throw(($getType(fS) + " couldn't be cast to Boolean"))
10461047 }
1047- let gJ = if (if (if (aP())
1048+ let gK = if (if (if (aP())
10481049 then true
10491050 else (be == q))
10501051 then true
10511052 else (be == s))
10521053 then true
1053- else gI
1054- let gK = [if (if (!(gJ))
1054+ else gJ
1055+ let gL = [if (if (!(gK))
10551056 then true
1056- else gl(dV))
1057+ else gm(dV))
10571058 then true
10581059 else aK("put operation is blocked by admin"), if ((size(dV.payments) == 1))
10591060 then true
10601061 else aK("exactly 1 payment are expected")]
1061- if ((gK == gK))
1062+ if ((gL == gL))
10621063 then {
10631064 let ba = aS()
10641065 let cw = ba[w]
10651066 let cx = ba[x]
10661067 let cv = fromBase58String(ba[v])
1067- let fN = parseIntValue(ba[y])
1068- let fO = parseIntValue(ba[z])
1068+ let fO = parseIntValue(ba[y])
1069+ let fP = parseIntValue(ba[z])
10691070 let cu = if ((dV.caller == this))
10701071 then dV.originCaller
10711072 else dV.caller
1072- let fg = value(dV.payments[0])
1073- let cs = toBase58String(value(fg.assetId))
1074- let cY = fg.amount
1075- let gL = fl(cY, cs, toString(cu), toBase58String(dV.transactionId), true)
1076- if ((gL == gL))
1073+ let fh = value(dV.payments[0])
1074+ let cs = toBase58String(value(fh.assetId))
1075+ let cY = fh.amount
1076+ let gM = fm(cY, cs, toString(cu), toBase58String(dV.transactionId), true)
1077+ if ((gM == gM))
10771078 then {
1078- let cp = gL._3
1079- let cO = gL._2
1080- let gM = gL._1
1081- let dx = if (if ((fJ > 0))
1082- then (fJ > gM)
1079+ let cp = gM._3
1080+ let cO = gM._2
1081+ let gN = gM._1
1082+ let dx = if (if ((fK > 0))
1083+ then (fK > gN)
10831084 else false)
1084- then aK(makeString(["amount to receive is less than ", toString(fJ)], ""))
1085- else gM
1086- let gz = invoke(aN, "emit", [dx], nil)
1087- if ((gz == gz))
1085+ then aK(makeString(["amount to receive is less than ", toString(fK)], ""))
1086+ else gN
1087+ let gA = invoke(aN, "emit", [dx], nil)
1088+ if ((gA == gA))
10881089 then {
1089- let gB = {
1090- let aE = gz
1090+ let gC = {
1091+ let aE = gA
10911092 if ($isInstanceOf(aE, "Address"))
10921093 then {
1093- let gC = aE
1094- invoke(gC, "emit", [dx], nil)
1094+ let gD = aE
1095+ invoke(gD, "emit", [dx], nil)
10951096 }
10961097 else unit
10971098 }
1098- if ((gB == gB))
1099+ if ((gC == gC))
10991100 then {
1100- let gF = if (gt)
1101+ let gG = if (gu)
11011102 then {
1102- let gG = invoke(bm, "stake", nil, [AttachedPayment(cv, dx)])
1103- if ((gG == gG))
1103+ let gH = invoke(bm, "stake", nil, [AttachedPayment(cv, dx)])
1104+ if ((gH == gH))
11041105 then nil
11051106 else throw("Strict value is not equal to itself.")
11061107 }
11071108 else [ScriptTransfer(dV.caller, dx, cv)]
1108- let ga = if ((cp > 0))
1109+ let gb = if ((cp > 0))
11091110 then [ScriptTransfer(aR, cp, fromBase58String(cs))]
11101111 else nil
1111- let gN = if ((this == aR))
1112+ let gO = if ((this == aR))
11121113 then $Tuple2(0, 0)
11131114 else {
1114- let gO = if ((fg.assetId == bg))
1115+ let gP = if ((fh.assetId == bg))
11151116 then true
11161117 else false
1117- if (gO)
1118+ if (gP)
11181119 then $Tuple2(-(cp), 0)
11191120 else $Tuple2(0, -(cp))
11201121 }
1121- let eQ = gN._1
1122- let eR = gN._2
1123- let gP = eP(eQ, eR, 0)
1124- let gg = gP._1
1125- let eG = gP._2
1126- $Tuple2((((cO ++ gF) ++ ga) ++ gg), dx)
1122+ let eR = gO._1
1123+ let eS = gO._2
1124+ let gQ = eQ(eR, eS, 0)
1125+ let gh = gQ._1
1126+ let eH = gQ._2
1127+ $Tuple2((((cO ++ gG) ++ gb) ++ gh), dx)
11271128 }
11281129 else throw("Strict value is not equal to itself.")
11291130 }
11301131 else throw("Strict value is not equal to itself.")
11311132 }
11321133 else throw("Strict value is not equal to itself.")
11331134 }
11341135 else throw("Strict value is not equal to itself.")
11351136 }
11361137
11371138
11381139
11391140 @Callable(dV)
1140-func putForFree (gQ) = if ((0 > gQ))
1141+func putForFree (gR) = if ((0 > gR))
11411142 then throw("Wrong slpg")
11421143 else if ((size(dV.payments) != 2))
11431144 then throw("2 pmnts expd")
11441145 else {
1145- let gR = fh(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gQ, false, false, true, 0, "")
1146- let cO = gR._9
1147- let gx = toBigInt(value(dV.payments[0]).amount)
1148- let gy = toBigInt(value(dV.payments[1]).amount)
1149- let eO = eH(gx, gy, toBigInt(0))
1150- if ((eO == eO))
1146+ let gS = fi(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gR, false, false, true, 0, "")
1147+ let cO = gS._9
1148+ let gy = toBigInt(value(dV.payments[0]).amount)
1149+ let gz = toBigInt(value(dV.payments[1]).amount)
1150+ let eP = eI(gy, gz, toBigInt(0))
1151+ if ((eP == eP))
11511152 then {
1152- let gS = eP(0, 0, 0)
1153- let gg = gS._1
1154- let eG = gS._2
1155- let gh = eT(eO, eG)
1156- if ((gh == gh))
1157- then (cO ++ gg)
1153+ let gT = eQ(0, 0, 0)
1154+ let gh = gT._1
1155+ let eH = gT._2
1156+ let gi = eU(eP, eH)
1157+ if ((gi == gi))
1158+ then (cO ++ gh)
11581159 else throw("Strict value is not equal to itself.")
11591160 }
11601161 else throw("Strict value is not equal to itself.")
11611162 }
11621163
11631164
11641165
11651166 @Callable(dV)
11661167 func get () = {
1167- let dk = ff(dV)
1168- let gT = dk._1
1168+ let dk = fg(dV)
1169+ let gU = dk._1
11691170 let cN = dk._2
11701171 let cY = dk._3
11711172 let cs = dk._4
11721173 let cO = dk._5
11731174 let ew = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
11741175 if ((ew == ew))
11751176 then {
1176- let eO = eH(toBigInt(0), toBigInt(0), toBigInt(cY))
1177- let gU = eP(-(gT), -(cN), 0)
1178- let gg = gU._1
1179- let eG = gU._2
1180- let gh = eT(eO, eG)
1181- if ((gh == gh))
1182- then (cO ++ gg)
1177+ let eP = eI(toBigInt(0), toBigInt(0), toBigInt(cY))
1178+ let gV = eQ(-(gU), -(cN), 0)
1179+ let gh = gV._1
1180+ let eH = gV._2
1181+ let gi = eU(eP, eH)
1182+ if ((gi == gi))
1183+ then (cO ++ gh)
11831184 else throw("Strict value is not equal to itself.")
11841185 }
11851186 else throw("Strict value is not equal to itself.")
11861187 }
11871188
11881189
11891190
11901191 @Callable(dV)
1191-func getOneTknV2 (fI,fJ) = {
1192- let gI = {
1193- let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1194- if ($isInstanceOf(fR, "Boolean"))
1195- then fR
1196- else throw(($getType(fR) + " couldn't be cast to Boolean"))
1192+func getOneTknV2 (fJ,fK) = {
1193+ let gJ = {
1194+ let fS = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1195+ if ($isInstanceOf(fS, "Boolean"))
1196+ then fS
1197+ else throw(($getType(fS) + " couldn't be cast to Boolean"))
11971198 }
1198- let gV = if (if (aP())
1199+ let gW = if (if (aP())
11991200 then true
12001201 else (be == s))
12011202 then true
1202- else gI
1203- let gK = [if (if (!(gV))
1203+ else gJ
1204+ let gL = [if (if (!(gW))
12041205 then true
1205- else gl(dV))
1206+ else gm(dV))
12061207 then true
12071208 else aK("get operation is blocked by admin"), if ((size(dV.payments) == 1))
12081209 then true
12091210 else aK("exactly 1 payment are expected")]
1210- if ((gK == gK))
1211+ if ((gL == gL))
12111212 then {
1212- let gW = fH(fI, fJ, dV.payments, dV.caller, dV.originCaller, dV.transactionId)
1213- let cO = gW._1
1214- let fT = gW._2
1215- $Tuple2(cO, fT)
1213+ let gX = fI(fJ, fK, dV.payments, dV.caller, dV.originCaller, dV.transactionId)
1214+ let cO = gX._1
1215+ let fU = gX._2
1216+ $Tuple2(cO, fU)
12161217 }
12171218 else throw("Strict value is not equal to itself.")
12181219 }
12191220
12201221
12211222
12221223 @Callable(dV)
12231224 func refreshDLp () = {
1224- let gX = valueOrElse(getInteger(al), 0)
1225- let gY = if (((height - gX) >= ao))
1225+ let gY = valueOrElse(getInteger(al), 0)
1226+ let gZ = if (((height - gY) >= ao))
12261227 then unit
12271228 else aK(makeString([toString(ao), " blocks have not passed since the previous call"], ""))
1228- if ((gY == gY))
1229+ if ((gZ == gZ))
12291230 then {
1230- let fa = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ak), "0")), aM("invalid dLp"))
1231- let gZ = eP(0, 0, 0)
1232- let ha = gZ._1
1233- let eG = gZ._2
1234- let eS = if ((fa != eG))
1235- then ha
1231+ let fb = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ak), "0")), aM("invalid dLp"))
1232+ let ha = eQ(0, 0, 0)
1233+ let hb = ha._1
1234+ let eH = ha._2
1235+ let eT = if ((fb != eH))
1236+ then hb
12361237 else aK("nothing to refresh")
1237- $Tuple2(eS, toString(eG))
1238+ $Tuple2(eT, toString(eH))
12381239 }
12391240 else throw("Strict value is not equal to itself.")
12401241 }
12411242
12421243
12431244
12441245 @Callable(dV)
1245-func getOneTknV2READONLY (fI,hb) = {
1246+func getOneTknV2READONLY (fJ,hc) = {
12461247 let ba = aS()
12471248 let cw = ba[w]
12481249 let cx = ba[x]
12491250 let cv = ba[v]
12501251 let dF = [toBigInt(bF(cw)), toBigInt(bF(cx))]
12511252 let eF = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
12521253 let bS = dE(dF)
1253- let bR = (bS - fraction(toBigInt(hb), bS, eF))
1254- let hc = if ((fI == cw))
1254+ let bR = (bS - fraction(toBigInt(hc), bS, eF))
1255+ let hd = if ((fJ == cw))
12551256 then 0
1256- else if ((fI == cx))
1257+ else if ((fJ == cx))
12571258 then 1
12581259 else throw("invalid out asset id")
1259- let hd = es(dF, hc, bR)
1260- let he = (dF[hc] - hd)
1261- let hf = max([0, toInt((he - f))])
1262- let hg = cn(hf)
1263- let fS = hg._1
1264- let cp = hg._2
1265- $Tuple2(nil, $Tuple2(fS, cp))
1260+ let he = es(dF, hd, bR)
1261+ let hf = (dF[hd] - he)
1262+ let hg = max([0, toInt((hf - f))])
1263+ let hh = cn(hg)
1264+ let fT = hh._1
1265+ let cp = hh._2
1266+ $Tuple2(nil, $Tuple2(fT, cp))
12661267 }
12671268
12681269
12691270
12701271 @Callable(dV)
1271-func getOneTknV2WithBonusREADONLY (fI,hb) = {
1272+func getOneTknV2WithBonusREADONLY (fJ,hc) = {
12721273 let ba = aS()
12731274 let cw = ba[w]
12741275 let cx = ba[x]
12751276 let cv = ba[v]
12761277 let cC = bF(cw)
12771278 let cE = bF(cx)
1278- let hh = {
1279- let fR = invoke(this, "getOneTknV2READONLY", [fI, hb], nil)
1280- if ($isInstanceOf(fR, "(Int, Int)"))
1281- then fR
1282- else throw(($getType(fR) + " couldn't be cast to (Int, Int)"))
1279+ let hi = {
1280+ let fS = invoke(this, "getOneTknV2READONLY", [fJ, hc], nil)
1281+ if ($isInstanceOf(fS, "(Int, Int)"))
1282+ then fS
1283+ else throw(($getType(fS) + " couldn't be cast to (Int, Int)"))
12831284 }
1284- let fS = hh._1
1285- let cp = hh._2
1286- let dk = cq("", cv, hb, this)
1285+ let fT = hi._1
1286+ let cp = hi._2
1287+ let dk = cq("", cv, hc, this)
12871288 let cM = dk._1
12881289 let cN = dk._2
1289- let hi = (cM + cN)
1290- let fG = if ((hi == 0))
1291- then if ((fS == 0))
1290+ let hj = (cM + cN)
1291+ let fH = if ((hj == 0))
1292+ then if ((fT == 0))
12921293 then 0
12931294 else throw("bonus calculation error")
1294- else fraction((fS - hi), a, hi)
1295- $Tuple2(nil, $Tuple3(fS, cp, fG))
1295+ else fraction((fT - hj), a, hj)
1296+ $Tuple2(nil, $Tuple3(fT, cp, fH))
12961297 }
12971298
12981299
12991300
13001301 @Callable(dV)
1301-func getNoLess (hj,hk) = {
1302- let dk = ff(dV)
1302+func getNoLess (hk,hl) = {
1303+ let dk = fg(dV)
13031304 let cM = dk._1
13041305 let cN = dk._2
13051306 let cY = dk._3
13061307 let cs = dk._4
13071308 let cO = dk._5
1308- if ((hj > cM))
1309- then throw(((("Failed: " + toString(cM)) + " < ") + toString(hj)))
1310- else if ((hk > cN))
1311- then throw(((("Failed: " + toString(cN)) + " < ") + toString(hk)))
1309+ if ((hk > cM))
1310+ then throw(((("Failed: " + toString(cM)) + " < ") + toString(hk)))
1311+ else if ((hl > cN))
1312+ then throw(((("Failed: " + toString(cN)) + " < ") + toString(hl)))
13121313 else {
1313- let eO = eH(toBigInt(0), toBigInt(0), toBigInt(cY))
1314- let hl = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
1315- if ((hl == hl))
1314+ let eP = eI(toBigInt(0), toBigInt(0), toBigInt(cY))
1315+ let hm = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
1316+ if ((hm == hm))
13161317 then {
1317- let hm = eP(-(cM), -(cN), 0)
1318- let gg = hm._1
1319- let eG = hm._2
1320- let gh = eT(eO, eG)
1321- if ((gh == gh))
1322- then (cO ++ gg)
1318+ let hn = eQ(-(cM), -(cN), 0)
1319+ let gh = hn._1
1320+ let eH = hn._2
1321+ let gi = eU(eP, eH)
1322+ if ((gi == gi))
1323+ then (cO ++ gh)
13231324 else throw("Strict value is not equal to itself.")
13241325 }
13251326 else throw("Strict value is not equal to itself.")
13261327 }
13271328 }
13281329
13291330
13301331
13311332 @Callable(dV)
13321333 func unstakeAndGet (co) = {
1333- let hn = if ((size(dV.payments) != 0))
1334+ let ho = if ((size(dV.payments) != 0))
13341335 then throw("No pmnts expd")
13351336 else true
1336- if ((hn == hn))
1337+ if ((ho == ho))
13371338 then {
13381339 let ce = aS()
1339- let ho = bk()
1340- let gA = fromBase58String(ce[v])
1341- let hp = valueOrErrorMessage(addressFromString(ho[C]), "Wr st addr")
1342- let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1343- let hq = invoke(hp, "unstake", [toBase58String(gA), co], nil)
1344- if ((hq == hq))
1340+ let hp = bk()
1341+ let gB = fromBase58String(ce[v])
1342+ let hq = valueOrErrorMessage(addressFromString(hp[C]), "Wr st addr")
1343+ let eP = eI(toBigInt(0), toBigInt(0), toBigInt(0))
1344+ let hr = invoke(hq, "unstake", [toBase58String(gB), co], nil)
1345+ if ((hr == hr))
13451346 then {
1346- let dk = cq(toBase58String(dV.transactionId), toBase58String(gA), co, dV.caller)
1347+ let dk = cq(toBase58String(dV.transactionId), toBase58String(gB), co, dV.caller)
13471348 let cM = dk._1
13481349 let cN = dk._2
13491350 let cA = parseIntValue(dk._9)
13501351 let cO = dk._10
1351- let hr = if (if (aP())
1352+ let hs = if (if (aP())
13521353 then true
13531354 else (cA == s))
13541355 then throw(("Blocked: " + toString(cA)))
13551356 else true
1356- if ((hr == hr))
1357+ if ((hs == hs))
13571358 then {
1358- let hs = invoke(aN, "burn", [co], [AttachedPayment(gA, co)])
1359- if ((hs == hs))
1359+ let ht = invoke(aN, "burn", [co], [AttachedPayment(gB, co)])
1360+ if ((ht == ht))
13601361 then {
1361- let ht = eP(-(cM), -(cN), 0)
1362- let gg = ht._1
1363- let eG = ht._2
1364- let gh = eT(eO, eG)
1365- if ((gh == gh))
1366- then (cO ++ gg)
1362+ let hu = eQ(-(cM), -(cN), 0)
1363+ let gh = hu._1
1364+ let eH = hu._2
1365+ let gi = eU(eP, eH)
1366+ if ((gi == gi))
1367+ then (cO ++ gh)
13671368 else throw("Strict value is not equal to itself.")
13681369 }
13691370 else throw("Strict value is not equal to itself.")
13701371 }
13711372 else throw("Strict value is not equal to itself.")
13721373 }
13731374 else throw("Strict value is not equal to itself.")
13741375 }
13751376 else throw("Strict value is not equal to itself.")
13761377 }
13771378
13781379
13791380
13801381 @Callable(dV)
1381-func unstakeAndGetNoLess (hu,hv,hk) = {
1382- let gV = if (aP())
1382+func unstakeAndGetNoLess (hv,hw,hl) = {
1383+ let gW = if (aP())
13831384 then true
13841385 else (be == s)
1385- let gK = [if (!(gV))
1386+ let gL = [if (!(gW))
13861387 then true
13871388 else throw("get operation is blocked by admin"), if ((size(dV.payments) == 0))
13881389 then true
13891390 else throw("no payments are expected")]
1390- if ((gK == gK))
1391+ if ((gL == gL))
13911392 then {
1392- let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1393- let hq = invoke(bm, "unstake", [toBase58String(bf), hu], nil)
1394- if ((hq == hq))
1393+ let eP = eI(toBigInt(0), toBigInt(0), toBigInt(0))
1394+ let hr = invoke(bm, "unstake", [toBase58String(bf), hv], nil)
1395+ if ((hr == hr))
13951396 then {
1396- let hw = cq(toBase58String(dV.transactionId), toBase58String(bf), hu, dV.caller)
1397- let cM = hw._1
1398- let cN = hw._2
1399- let cO = hw._10
1400- let hx = [if ((cM >= hv))
1397+ let hx = cq(toBase58String(dV.transactionId), toBase58String(bf), hv, dV.caller)
1398+ let cM = hx._1
1399+ let cN = hx._2
1400+ let cO = hx._10
1401+ let hy = [if ((cM >= hw))
14011402 then true
1402- else throw(makeString(["amount asset amount to receive is less than ", toString(hv)], "")), if ((cN >= hk))
1403+ else throw(makeString(["amount asset amount to receive is less than ", toString(hw)], "")), if ((cN >= hl))
14031404 then true
1404- else throw(makeString(["price asset amount to receive is less than ", toString(hk)], ""))]
1405- if ((hx == hx))
1405+ else throw(makeString(["price asset amount to receive is less than ", toString(hl)], ""))]
1406+ if ((hy == hy))
14061407 then {
1407- let hl = invoke(aN, "burn", [hu], [AttachedPayment(bf, hu)])
1408- if ((hl == hl))
1408+ let hm = invoke(aN, "burn", [hv], [AttachedPayment(bf, hv)])
1409+ if ((hm == hm))
14091410 then {
1410- let hy = eP(-(cM), -(cN), 0)
1411- let gg = hy._1
1412- let eG = hy._2
1413- let gh = eT(eO, eG)
1414- if ((gh == gh))
1415- then (cO ++ gg)
1411+ let hz = eQ(-(cM), -(cN), 0)
1412+ let gh = hz._1
1413+ let eH = hz._2
1414+ let gi = eU(eP, eH)
1415+ if ((gi == gi))
1416+ then (cO ++ gh)
14161417 else throw("Strict value is not equal to itself.")
14171418 }
14181419 else throw("Strict value is not equal to itself.")
14191420 }
14201421 else throw("Strict value is not equal to itself.")
14211422 }
14221423 else throw("Strict value is not equal to itself.")
14231424 }
14241425 else throw("Strict value is not equal to itself.")
14251426 }
14261427
14271428
14281429
14291430 @Callable(dV)
1430-func unstakeAndGetOneTknV2 (hu,fI,fJ) = {
1431- let gI = {
1432- let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1433- if ($isInstanceOf(fR, "Boolean"))
1434- then fR
1435- else throw(($getType(fR) + " couldn't be cast to Boolean"))
1431+func unstakeAndGetOneTknV2 (hv,fJ,fK) = {
1432+ let gJ = {
1433+ let fS = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1434+ if ($isInstanceOf(fS, "Boolean"))
1435+ then fS
1436+ else throw(($getType(fS) + " couldn't be cast to Boolean"))
14361437 }
1437- let gV = if (if (aP())
1438+ let gW = if (if (aP())
14381439 then true
14391440 else (be == s))
14401441 then true
1441- else gI
1442- let gK = [if (if (!(gV))
1442+ else gJ
1443+ let gL = [if (if (!(gW))
14431444 then true
1444- else gl(dV))
1445+ else gm(dV))
14451446 then true
14461447 else aK("get operation is blocked by admin"), if ((size(dV.payments) == 0))
14471448 then true
14481449 else aK("no payments are expected")]
1449- if ((gK == gK))
1450+ if ((gL == gL))
14501451 then {
14511452 let ce = aS()
1452- let ho = bk()
1453- let gA = fromBase58String(ce[v])
1454- let hp = valueOrErrorMessage(addressFromString(ho[C]), "Wr st addr")
1455- let hq = invoke(hp, "unstake", [toBase58String(gA), hu], nil)
1456- if ((hq == hq))
1453+ let hp = bk()
1454+ let gB = fromBase58String(ce[v])
1455+ let hq = valueOrErrorMessage(addressFromString(hp[C]), "Wr st addr")
1456+ let hr = invoke(hq, "unstake", [toBase58String(gB), hv], nil)
1457+ if ((hr == hr))
14571458 then {
1458- let hz = fH(fI, fJ, [AttachedPayment(gA, hu)], dV.caller, dV.originCaller, dV.transactionId)
1459- let cO = hz._1
1460- let fT = hz._2
1461- $Tuple2(cO, fT)
1459+ let hA = fI(fJ, fK, [AttachedPayment(gB, hv)], dV.caller, dV.originCaller, dV.transactionId)
1460+ let cO = hA._1
1461+ let fU = hA._2
1462+ $Tuple2(cO, fU)
14621463 }
14631464 else throw("Strict value is not equal to itself.")
14641465 }
14651466 else throw("Strict value is not equal to itself.")
14661467 }
14671468
14681469
14691470
14701471 @Callable(dV)
1471-func putOneTknV2WithBonusREADONLY (hA,hB) = {
1472+func putOneTknV2WithBonusREADONLY (hB,hC) = {
14721473 let ba = aS()
14731474 let cw = ba[w]
14741475 let cx = ba[x]
14751476 let cv = ba[v]
1476- let hC = fl(hA, hB, "", "", true)
1477- let fB = hC._1
1478- let cO = hC._2
1479- let cp = hC._3
1480- let fG = hC._4
1481- $Tuple2(nil, $Tuple3(fB, cp, fG))
1477+ let hD = fm(hB, hC, "", "", true)
1478+ let fC = hD._1
1479+ let cO = hD._2
1480+ let cp = hD._3
1481+ let fH = hD._4
1482+ $Tuple2(nil, $Tuple3(fC, cp, fH))
14821483 }
14831484
14841485
14851486
14861487 @Callable(dV)
1487-func putOneTknV2WithoutTakeFeeREADONLY (hA,hB) = {
1488+func putOneTknV2WithoutTakeFeeREADONLY (hB,hC) = {
14881489 let ba = aS()
14891490 let cw = ba[w]
14901491 let cx = ba[x]
14911492 let cv = ba[v]
1492- let hD = fl(hA, hB, "", "", false)
1493- let fB = hD._1
1494- let cO = hD._2
1495- let cp = hD._3
1496- let fG = hD._4
1497- $Tuple2(nil, $Tuple3(fB, cp, fG))
1493+ let hE = fm(hB, hC, "", "", false)
1494+ let fC = hE._1
1495+ let cO = hE._2
1496+ let cp = hE._3
1497+ let fH = hE._4
1498+ $Tuple2(nil, $Tuple3(fC, cp, fH))
14981499 }
14991500
15001501
15011502
15021503 @Callable(dV)
1503-func activate (hE,hF) = if ((toString(dV.caller) != toString(aN)))
1504+func activate (hF,hG) = if ((toString(dV.caller) != toString(aN)))
15041505 then throw("denied")
1505- else $Tuple2([StringEntry(ae(), hE), StringEntry(af(), hF)], "success")
1506+ else $Tuple2([StringEntry(ae(), hF), StringEntry(af(), hG)], "success")
15061507
15071508
15081509
15091510 @Callable(dV)
1510-func setS (hG,hr) = if ((toString(dV.caller) != aG(this, ah())))
1511- then gk
1512- else [StringEntry(hG, hr)]
1511+func setS (hH,hs) = if ((toString(dV.caller) != aG(this, ah())))
1512+ then gl
1513+ else [StringEntry(hH, hs)]
15131514
15141515
15151516
15161517 @Callable(dV)
1517-func setI (hG,hr) = if ((toString(dV.caller) != aG(this, ah())))
1518- then gk
1519- else [IntegerEntry(hG, hr)]
1518+func setI (hH,hs) = if ((toString(dV.caller) != aG(this, ah())))
1519+ then gl
1520+ else [IntegerEntry(hH, hs)]
15201521
15211522
15221523
15231524 @Callable(dV)
15241525 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aS())
15251526
15261527
15271528
15281529 @Callable(dV)
15291530 func getAccBalanceWrapperREADONLY (bG) = $Tuple2(nil, bF(bG))
15301531
15311532
15321533
15331534 @Callable(dV)
15341535 func calcPricesWrapperREADONLY (bY,bZ,cd) = {
1535- let hH = cc(bY, bZ, cd)
1536- $Tuple2(nil, [toString(hH[0]), toString(hH[1]), toString(hH[2])])
1536+ let hI = cc(bY, bZ, cd)
1537+ $Tuple2(nil, [toString(hI[0]), toString(hI[1]), toString(hI[2])])
15371538 }
15381539
15391540
15401541
15411542 @Callable(dV)
1542-func fromX18WrapperREADONLY (L,hI) = $Tuple2(nil, K(parseBigIntValue(L), hI))
1543+func fromX18WrapperREADONLY (L,hJ) = $Tuple2(nil, K(parseBigIntValue(L), hJ))
15431544
15441545
15451546
15461547 @Callable(dV)
15471548 func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
15481549
15491550
15501551
15511552 @Callable(dV)
15521553 func calcPriceBigIntWrapperREADONLY (bI,bJ) = $Tuple2(nil, toString(bH(parseBigIntValue(bI), parseBigIntValue(bJ))))
15531554
15541555
15551556
15561557 @Callable(dV)
1557-func estimatePutOperationWrapperREADONLY (cr,bN,cQ,cR,cS,cT,hJ,cU,cV) = $Tuple2(nil, cP(cr, bN, cQ, cR, cS, cT, hJ, cU, cV, true, false, 0, ""))
1558+func estimatePutOperationWrapperREADONLY (cr,bN,cQ,cR,cS,cT,hK,cU,cV) = $Tuple2(nil, cP(cr, bN, cQ, cR, cS, cT, hK, cU, cV, true, false, 0, ""))
15581559
15591560
15601561
15611562 @Callable(dV)
1562-func estimateGetOperationWrapperREADONLY (cr,hK,ct,hJ) = {
1563- let dk = cq(cr, hK, ct, addressFromStringValue(hJ))
1563+func estimateGetOperationWrapperREADONLY (cr,hL,ct,hK) = {
1564+ let dk = cq(cr, hL, ct, addressFromStringValue(hK))
15641565 $Tuple2(nil, $Tuple10(dk._1, dk._2, dk._3, dk._4, dk._5, dk._6, dk._7, toString(dk._8), dk._9, dk._10))
15651566 }
15661567
15671568
15681569
15691570 @Callable(dV)
15701571 func getFeeREADONLY () = $Tuple2(nil, aj)
15711572
15721573
1573-@Verifier(hL)
1574-func hM () = {
1575- let hN = {
1576- let aE = gi()
1574+@Verifier(hM)
1575+func hN () = {
1576+ let hO = {
1577+ let aE = gj()
15771578 if ($isInstanceOf(aE, "ByteVector"))
15781579 then {
1579- let gm = aE
1580- gm
1580+ let gn = aE
1581+ gn
15811582 }
15821583 else if ($isInstanceOf(aE, "Unit"))
1583- then hL.senderPublicKey
1584+ then hM.senderPublicKey
15841585 else throw("Match error")
15851586 }
1586- let aE = hL
1587+ let aE = hM
15871588 if ($isInstanceOf(aE, "Order"))
15881589 then {
1589- let eW = aE
1590- let hO = aQ()
1591- let hP = eV(eW)
1592- let hQ = sigVerify(eW.bodyBytes, eW.proofs[0], eW.senderPublicKey)
1593- let hR = sigVerify(eW.bodyBytes, eW.proofs[1], hO)
1594- if (if (if (hP)
1595- then hQ
1596- else false)
1590+ let eX = aE
1591+ let hP = aQ()
1592+ let hQ = eW(eX)
1593+ let hR = sigVerify(eX.bodyBytes, eX.proofs[0], eX.senderPublicKey)
1594+ let hS = sigVerify(eX.bodyBytes, eX.proofs[1], hP)
1595+ if (if (if (hQ)
15971596 then hR
15981597 else false)
1598+ then hS
1599+ else false)
15991600 then true
1600- else az(hP, hQ, hR)
1601+ else az(hQ, hR, hS)
16011602 }
16021603 else if ($isInstanceOf(aE, "SetScriptTransaction"))
16031604 then {
16041605 let dI = aE
1605- let hS = blake2b256(value(dI.script))
1606- let hT = fromBase64String(value(getString(aN, ax())))
1607- let hU = scriptHash(this)
1608- if (if ((hT == hS))
1609- then (hU != hS)
1606+ let hT = blake2b256(value(dI.script))
1607+ let hU = fromBase64String(value(getString(aN, ax())))
1608+ let hV = scriptHash(this)
1609+ if (if ((hU == hT))
1610+ then (hV != hT)
16101611 else false)
16111612 then true
1612- else sigVerify(hL.bodyBytes, hL.proofs[0], hN)
1613+ else sigVerify(hM.bodyBytes, hM.proofs[0], hO)
16131614 }
1614- else sigVerify(hL.bodyBytes, hL.proofs[0], hN)
1615+ else sigVerify(hM.bodyBytes, hM.proofs[0], hO)
16151616 }
16161617

github/deemru/w8io/026f985 
390.90 ms