tx · 7CLV6ivn8wgpx7bfYAuMh4ycvfpSikVdh6soTQ2fLCd8

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.03500000 Waves

2023.02.09 10:35 [2441808] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "7CLV6ivn8wgpx7bfYAuMh4ycvfpSikVdh6soTQ2fLCd8", "fee": 3500000, "feeAssetId": null, "timestamp": 1675928136359, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "4GdjwUjFban6GQBfLGr3LXD72xUyLMvJddeSWDoyzxWykxfXZLq8rfJchCPM5MLsXH3UQdK9mmdbGYonss6F69MV" ], "script": "base64:BgL2IwgCEgQKAgEEEgYKBAEEAQgSAwoBCBIDCgEIEgASBAoCAQQSBAoCAQQSAwoBARIAEgQKAggBEgQKAggBEgQKAggBEgQKAgEBEgMKAQESBQoDAQEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiIKc2xpcHBhZ2U0RCILd2F2ZXNTdHJpbmciBUFtdWx0IgVEY29udiIDU0VQIgVFTVBUWSIKUG9vbEFjdGl2ZSIKUG9vbFB1dERpcyIOUG9vbE1hdGNoZXJEaXMiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiCWlkeFBvb2xTdCIJaWR4TFBBc0lkIglpZHhBbUFzSWQiCWlkeFByQXNJZCILaWR4QW10QXNEY20iDWlkeFByaWNlQXNEY20iC2lkeElBbXRBc0lkIg1pZHhJUHJpY2VBc0lkIg9pZHhGYWN0U3Rha0NudHIiEmlkeEZhY3RvcnlSZXN0Q250ciIQaWR4RmFjdFNsaXBwQ250ciIRaWR4RmFjdEd3eFJld0NudHIiCmZlZURlZmF1bHQiAnQxIgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0IgJmMSIDdmFsIg9yZXN1bHRTY2FsZU11bHQiAnRzIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIBdCIDcGF1IgJ1YSIEdHhJZCIDZ2F1IgJhYSICcGEiA2FtcCIDYWRhIgxzd2FwQ29udHJhY3QiBGZjZmciBG10cGsiAnBjIgZpQW10QXMiBWlQckFzIgNtYmEiBWJBU3RyIgNhcHMiHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiA3RvZSIDb3JWIgZzZW5kclYiBm1hdGNoViIDc3RyIgckbWF0Y2gwIgZ2YWxTdHIiBHN0cmYiBGFkZHIiA2tleSIEaW50ZiIIdGhyb3dFcnIiA21zZyIDZmNhIgVpbkZlZSIBQCIGb3V0RmVlIgFBIgNpZ3MiAm1wIhNmZWVDb2xsZWN0b3JBZGRyZXNzIgNncGMiBWFtdEFzIgdwcmljZUFzIghpUHJpY2VBcyIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDY5NTI3MTM4Ig5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIDZ2ZjIg1mYWN0b3J5Q29uZmlnIg9zdGFraW5nQ29udHJhY3QiD3NsaXBhZ2VDb250cmFjdCILZ3d4Q29udHJhY3QiDHJlc3RDb250cmFjdCIRZGF0YVB1dEFjdGlvbkluZm8iDWluQW10QXNzZXRBbXQiD2luUHJpY2VBc3NldEFtdCIIb3V0THBBbXQiBXByaWNlIgpzbGlwQnlVc2VyIgxzbGlwcGFnZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCIMc2xpcGFnZUFtQW10IgxzbGlwYWdlUHJBbXQiEWRhdGFHZXRBY3Rpb25JbmZvIg5vdXRBbXRBc3NldEFtdCIQb3V0UHJpY2VBc3NldEFtdCIHaW5McEFtdCINZ2V0QWNjQmFsYW5jZSIHYXNzZXRJZCIEY3BiaSIIcHJBbXRYMTgiCGFtQW10WDE4IgN2YWQiAkExIgJBMiIIc2xpcHBhZ2UiBGRpZmYiBHBhc3MiAnZkIgJEMSICRDAiBHNscGciBGZhaWwiA3BjcCIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10IgthbXRBc0FtdFgxOCIKcHJBc0FtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyIIYW10QXNEY20iB3ByQXNEY20iCHByaWNlWDE4IghscEFtdFgxOCINbHBQckluQW1Bc1gxOCINbHBQckluUHJBc1gxOCIPY2FsY3VsYXRlUHJpY2VzIgFwIgd0YWtlRmVlIgZhbW91bnQiA2ZlZSIJZmVlQW1vdW50IgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMTc2MDUxNzk1MCIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiA21vYSIFb3JkZXIiB2FtdEFzSWQiBnByQXNJZCIPYWNjQW10QXNCYWxhbmNlIg5hY2NQckFzQmFsYW5jZSIKb3JBbXRBc3NldCIKb3JBbXRBc1N0ciIJb3JQckFzc2V0IglvclByQXNTdHIiCm9yZGVyUHJpY2UiDmNhc3RPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCICY2ciAWkiA3BtdCICY3AiBmNhbGxlciIHYW1Bc1BtdCIHcHJBc1BtdCIEZ2V0RCICeHAiAW4iA3hwMCIDeHAxIgphUHJlY2lzaW9uIgFhIgFzIgNhbm4iC3hwMF94cDFfbl9uIhBhbm5fc19hUHJlY2lzaW9uIg5hbm5fYVByZWNpc2lvbiICbjEiBGNhbGMiA2FjYyIDY3VyIg0kdDAyMjUwMjIyNTIyIgFkIgVmb3VuZCICZHAiBWROZXh0IgVkRGlmZiIDYXJyIg0kdDAyMjk4MzIzMDMwIgIkbCICJHMiBSRhY2MwIgUkZjBfMSICJGEiAiRpIgUkZjBfMiIFZ2V0WUQiAUQiAXgiAWMiAWIiDSR0MDIzNTMwMjM1NTAiAXkiBXlOZXh0IgV5RGlmZiINJHQwMjM4NTcyMzkwNCINY2FsY1B1dE9uZVRrbiIJcG10QW10UmF3Igt3aXRoVGFrZUZlZSIPbHBBc3NldEVtaXNzaW9uIg1jaGVjaEVtaXNzaW9uIg0kdDAyNDY4NzI1MTQ5IgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCINJHQwMjUxNTUyNTMzMSILYW1BbW91bnRSYXciC3ByQW1vdW50UmF3Ig0kdDAyNTMzNTI1NTg5IghhbUFtb3VudCIIcHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IgZjaGVja0QiCGxwQW1vdW50Ig5wb29sUHJvcG9ydGlvbiIPYW1vdW50QXNzZXRQYXJ0Ig5wcmljZUFzc2V0UGFydCIJbHBBbXRCb3RoIgVib251cyITZ2V0T25lVGtuVjJJbnRlcm5hbCIKb3V0QXNzZXRJZCIMbWluT3V0QW1vdW50IghwYXltZW50cyIMb3JpZ2luQ2FsbGVyIg10cmFuc2FjdGlvbklkIgphbURlY2ltYWxzIgpwckRlY2ltYWxzIgpwb29sU3RhdHVzIg0kdDAyNzU5MTI3NzAyIgh0b3RhbEdldCILdG90YWxBbW91bnQiDSR0MDI3ODkyMjgxOTkiBW91dEFtIgVvdXRQciIIY3VyUHJYMTgiBWN1clByIhFvdXRBc3NldElkT3JXYXZlcyIQc2VuZEZlZVRvTWF0Y2hlciIEYnVybiIBbSICcG0iAnBkIglpc01hbmFnZXIiAnBrIgJtbSIEZ2V0WSIJaXNSZXZlcnNlIhNwb29sQW1vdW50SW5CYWxhbmNlIg0kdDAzMDU3MTMwNTkxIg0kdDAzMDkyMjMwOTY5Ig1jbGVhbkFtb3VudEluIg0kdDAzMTE5MDMxNjE0Ighhc3NldE91dCICZHkiC3RvdGFsR2V0UmF3IgVuZXdYcCIEbmV3RCIMYW1vdW50T3V0TWluIglhZGRyZXNzVG8iBmNoZWNrcyIHYXNzZXRJbiINJHQwMzMwMTYzMzQxMCIIY2hlY2tNaW4iF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgJjbSIDaHBtIgNjcG0iBHNsaXAiCWF1dG9TdGFrZSIHZmFjdENmZyILc3Rha2luZ0NudHIiCHNsaXBDbnRyIgFlIglscEFzc2V0SWQiAmVsIgZsZWdhY3kiAnNhIgJzcCIIbHBUcm5zZnIiAnNzIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCINaXNQdXREaXNhYmxlZCINJHQwMzg3OTgzODk1NiIHZXN0aW1MUCIHbWF4U2xwZyIGZXN0UHV0IglvdXRBbXRBbXQiDWlzR2V0RGlzYWJsZWQiDSR0MDQxNTc4NDE3MzMiDWxwQXNzZXRBbW91bnQiCmxwRW1pc3Npb24iBWluZGV4IgRuZXdZIg0kdDA0MjYwMzQyNjU4Ig0kdDA0MzAwMzQzMTE4Ig5zdW1PZkdldEFzc2V0cyISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDWNoZWNrUGF5bWVudHMiCmZhY3RvcnlDZmciB3N0YWtpbmciCnVuc3Rha2VJbnYiAXYiBWJ1cm5BIg11bnN0YWtlQW1vdW50IhVub0xlc3NUaGVuQW1vdW50QXNzZXQiA3JlcyIMY2hlY2tBbW91bnRzIg0kdDA0Njk1NjQ3MTQ0IhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCINJHQwNDc0MDM0NzUwNiINJHQwNDc3ODU0Nzg4OSIIYW10QXNTdHIiB3ByQXNTdHIiAWsiAnByIgxyZXNTY2FsZU11bHQiB3VzckFkZHIiB3BtdEFzSWQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIKb3JkZXJWYWxpZCILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNobwABYQCAwtcvAAFiCQC2AgEAgMLXLwABYwkAtgIBAICAkLu61q3wDQABZAkAtgIBAAAAAWUJALYCAQAAAAFmCQC2AgEAAQABZwkAtgIBAAIAAWgJALYCAQkAZQIFAWEJAGkCCQBoAgUBYQABBQFhAAFpAgVXQVZFUwABagIDMTAwAAFrAgExAAFsAgJfXwABbQIAAAFuAAEAAW8AAgABcAADAAFxAAQAAXIAAQABcwACAAF0AAMAAXUABAABdgAFAAF3AAYAAXgABwABeQAIAAF6AAkAAUEAAQABQgAGAAFDAAcAAUQACgABRQkAawMACgUBYQCQTgEBRgIBRwFICQC8AgMJALYCAQUBRwUBYwkAtgIBBQFIAQFJAgFKAUsJAKADAQkAvAIDBQFKCQC2AgEFAUsFAWMBAUwDAU0BTgFPCQBrAwUBTQUBTgUBTwEBUAEBSgMJAL8CAgUBZAUBSgkAvgIBBQFKBQFKAQFRAQFKAwkAvwICBQFkBQFKCQC+AgEFAUoFAUoBAVIAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFTAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVQAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVUAAhElcyVzX19wcmljZV9fbGFzdAEBVgIBVwFYCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBVwkAzAgCCQCkAwEFAVgFA25pbAUBbAEBWQIBWgJhYQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVoCAl9fBQJhYQECYWICAVoCYWEJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFaAgJfXwUCYWEBAmFjAAIPJXNfX2Ftb3VudEFzc2V0AQJhZAACDiVzX19wcmljZUFzc2V0AQJhZQACByVzX19hbXABAmFmAAINJXNfX2FkZG9uQWRkcgECYWcAAhAlc19fc3dhcENvbnRyYWN0AQJhaAACESVzX19mYWN0b3J5Q29uZmlnAQJhaQACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYWoCAmFrAmFsCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhawICX18FAmFsAghfX2NvbmZpZwECYW0BAmFuCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmFuAQJhbwACDCVzX19zaHV0ZG93bgECYXAAAh0lc19fYWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAECYXEAAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYXIDAmFzAmF0AmF1CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEUZhaWxlZDogb3JkVmFsaWQ9CQClAwEFAmFzAgsgc25kclZhbGlkPQkApQMBBQJhdAIMIG10Y2hyVmFsaWQ9CQClAwEFAmF1AQJhdgEBSgQCYXcFAUoDCQABAgUCYXcCBlN0cmluZwQCYXgFAmF3BQJheAkAAgECE2ZhaWwgY2FzdCB0byBTdHJpbmcBAmF5AgJhegJhQQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmF6BQJhQQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhegkAzAgCAgEuCQDMCAIFAmFBCQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFCAgJhegJhQQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmF6BQJhQQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhegkAzAgCAgEuCQDMCAIFAmFBCQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFDAQJhRAkAAgEJALkJAgkAzAgCAg9scF9zdGFibGUucmlkZToJAMwIAgUCYUQFA25pbAIBIAACYUUJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJheQIFBHRoaXMJAQFSAAACYUYKAAJhRwkA/AcEBQJhRQIQZ2V0SW5GZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFHAgNJbnQFAmFHCQACAQkArAICCQADAQUCYUcCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAACYUgKAAJhRwkA/AcEBQJhRQIRZ2V0T3V0RmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhRwIDSW50BQJhRwkAAgEJAKwCAgkAAwEFAmFHAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmFJCQECYXkCBQR0aGlzCQECYWUAAQJhSgAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYUUJAQJhbwAHAQJhSwAJANkEAQkBAmF5AgUCYUUJAQJhaQAAAmFMCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYXkCBQJhRQkBAmFxAAECYU0ABAJhTgkBAmF5AgUEdGhpcwkBAmFjAAQCYU8JAQJheQIFBHRoaXMJAQJhZAAEAmFQCQECYUICBQJhRQkBAmFtAQUCYU8EAmFrCQECYUICBQJhRQkBAmFtAQUCYU4JALUJAgkBAmF5AgUCYUUJAQJhagIJAKQDAQUCYWsJAKQDAQUCYVAFAWwBAmFRAQJhUgMJAAACBQJhUgUBaQUEdW5pdAkA2QQBBQJhUgECYVMBAmFSAwkAAAIFAmFSBQR1bml0BQFpCQDYBAEJAQV2YWx1ZQEFAmFSAQJhVAECYVUJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhVQUBcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFVBQFzCQDZBAEJAJEDAgUCYVUFAXQJAQJhUQEJAJEDAgUCYVUFAXUJAQJhUQEJAJEDAgUCYVUFAXYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVQUBdwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFVBQF4AAJhVgkBAmFUAQkBAmFNAAACYVcFAmFWAAJhWAgFAmFXAl8xAAJhWQgFAmFXAl8yAAJhWggFAmFXAl8zAAJiYQgFAmFXAl80AAJiYggFAmFXAl81AAJiYwgFAmFXAl82AAJiZAgFAmFXAl83AQJiZQAJALUJAgkBAmF5AgUCYUUJAQJhaAAFAWwAAmJmCQECYmUAAAJiZwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYmYFAUECIEludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzAAJiaAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYmYFAUMCIEludmFsaWQgc2xpcGFnZSBjb250cmFjdCBhZGRyZXNzAAJiaQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYmYFAUQCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MAAmJqCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiZgUBQgIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwECYmsKAmJsAmJtAmJuAmJvAmJwAmJxAmJyAmJzAmJ0AmJ1CQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJibAkAzAgCCQCkAwEFAmJtCQDMCAIJAKQDAQUCYm4JAMwIAgkApAMBBQJibwkAzAgCCQCkAwEFAmJwCQDMCAIJAKQDAQUCYnEJAMwIAgkApAMBBQJicgkAzAgCCQCkAwEFAmJzCQDMCAIJAKQDAQUCYnQJAMwIAgkApAMBBQJidQUDbmlsBQFsAQJidgYCYncCYngCYnkCYm8CYnICYnMJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJ4CQDMCAIJAKQDAQUCYnkJAMwIAgkApAMBBQJibwkAzAgCCQCkAwEFAmJyCQDMCAIJAKQDAQUCYnMFA25pbAUBbAECYnoBAmJBAwkAAAIFAmJBAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJiQQECYkICAmJDAmJECQC8AgMFAmJDBQFjBQJiRAECYkUDAmJGAmJHAmJIBAJiSQkAvAIDCQC4AgIFAmJGBQJiRwUBYgUCYkcEAmJKCQC/AgIJALgCAgUCYkgJAQFQAQUCYkkFAWQDCQEBIQEFAmJKCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFAmJJCQCUCgIFAmJKCQCZAwEJAMwIAgUCYkYJAMwIAgUCYkcFA25pbAECYksDAmJMAmJNAmJOBAJiSQkAvAIDBQJiTQUBYgUCYkwEAmJPCQC/AgIFAmJOBQJiSQMDBQJiTwYJAL8CAgUCYk0FAmJMCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJiTQIBIAkApgMBBQJiTAIBIAkApgMBBQJiSQIBIAkApgMBBQJiTgUCYk8BAmJQBAJiUQJiUgJiUwJiVAQCYlUJAQFGAgUCYlMFAmJRBAJiVgkBAUYCBQJiVAUCYlIJAQJiQgIFAmJWBQJiVQECYlcDAmJTAmJUAmJYBAJiWQkBAmFNAAQCYloJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWQUBdwQCY2EJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWQUBeAQCY2IJAQJiUAQFAmJaBQJjYQUCYlMFAmJUBAJiRAkBAUYCBQJiUwUCYloEAmJDCQEBRgIFAmJUBQJjYQQCY2MJAQFGAgUCYlgFAWEEAmNkCQECYkICBQJiRAUCY2MEAmNlCQECYkICBQJiQwUCY2MJAMwIAgUCY2IJAMwIAgUCY2QJAMwIAgUCY2UFA25pbAECY2YDAmJTAmJUAmJYBAJjZwkBAmJXAwUCYlMFAmJUBQJiWAkAzAgCCQEBSQIJAJEDAgUCY2cAAAUBYQkAzAgCCQEBSQIJAJEDAgUCY2cAAQUBYQkAzAgCCQEBSQIJAJEDAgUCY2cAAgUBYQUDbmlsAQJjaAICY2kCY2oEAmNrAwkAAAIFAmNqAAAAAAkAawMFAmNpBQJjagUBYQkAlAoCCQBlAgUCY2kFAmNrBQJjawECY2wEAmNtAmNuAmNvAmNwBAJiWQkBAmFNAAQCY3EJAJEDAgUCYlkFAXQEAmNyCQCRAwIFAmJZBQF1BAJjcwkAkQMCBQJiWQUBdgQCY3QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWQUBdwQCY3UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWQUBeAQCY3YJAJEDAgUCYlkFAXMEAmN3CAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY3ECC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgUCY3EFAmNuCQACAQIPV3JvbmcgcG10IGFzc2V0BAJjeAkBAmJ6AQUCY3IEAmN5CQEBRgIFAmN4BQJjdAQCY3oJAQJiegEFAmNzBAJjQQkBAUYCBQJjegUCY3UEAmNCCQECYkICBQJjQQUCY3kEAmNDCQEBSQIFAmNCBQFhBAJjRAkBAUYCBQJjbwUBYQQCY0UJAQFGAgUCY3cFAWEEAmNGCQC8AgMFAmN5BQJjRAUCY0UEAmNHCQC8AgMFAmNBBQJjRAUCY0UEAmNICQEBSQIFAmNGBQJjdAQCY0kJAQFJAgUCY0cFAmN1BAJjSgMJAAACBQJjbQIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3AFAmNIAwkAAAIFAmNyAgVXQVZFUwUEdW5pdAkA2QQBBQJjcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjcAUCY0kDCQAAAgUCY3MCBVdBVkVTBQR1bml0CQDZBAEFAmNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIJAKUIAQUCY3AFAmNtCQECYnYGBQJjSAUCY0kFAmNvBQJjQwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUABQJjQwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjQwUDbmlsCQCcCgoFAmNIBQJjSQUCY3IFAmNzBQJjeAUCY3oFAmN3BQJjQgUCY3YFAmNKAQJjSw0CY20CYkgCY0wCY00CY04CY08CY3ACY1ACY1ECY1ICY1MCY1QCY1UEAmJZCQECYU0ABAJjcQkA2QQBCQCRAwIFAmJZBQF0BAJjVgkAkQMCBQJiWQUBdQQCY1cJAJEDAgUCYlkFAXYEAmNYCQCRAwIFAmJZBQF5BAJjWQkAkQMCBQJiWQUBegQCY1oJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWQUBdwQCZGEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWQUBeAQCY3YJAJEDAgUCYlkFAXMEAmRiCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmNxAghXciBscCBhcwhxdWFudGl0eQQCY3gDBQJjUAkBAmJ6AQUCY1YDAwUCY1IJAAACBQJjVQUCY1YHCQBlAgkBAmJ6AQUCY1YFAmNUAwUCY1IJAQJiegEFAmNWCQBlAgkBAmJ6AQUCY1YFAmNMBAJjegMFAmNQCQECYnoBBQJjVwMDBQJjUgkAAAIFAmNVBQJjVwcJAGUCCQECYnoBBQJjVwUCY1QDBQJjUgkBAmJ6AQUCY1cJAGUCCQECYnoBBQJjVwUCY04EAmRjCQEBRgIFAmNMBQJjWgQCZGQJAQFGAgUCY04FAmRhBAJkZQkBAmJCAgUCZGQFAmRjBAJjeQkBAUYCBQJjeAUCY1oEAmNBCQEBRgIFAmN6BQJkYQQCZGYDCQAAAgUCZGIAAAQCY0IFAWQEAmRnBQFkBAJjYwkAdgYJALkCAgUCZGMFAmRkAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBSQIFAmNjBQFhCQEBSQIFAmRjBQJjWgkBAUkCBQJkZAUCZGEJAQJiQgIJALcCAgUCY0EFAmRkCQC3AgIFAmN5BQJkYwUCZGcEAmNCCQECYkICBQJjQQUCY3kEAmRoCQC8AgMJAQFQAQkAuAICBQJjQgUCZGUFAWMFAmNCBAJkZwkBAUYCBQJiSAUBYQMDAwUCY1MJAQIhPQIFAmNCBQFkBwkAvwICBQJkaAUCZGcHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmRoAgMgPiAJAKYDAQUCZGcEAmRpCQEBRgIFAmRiBQFhBAJkagkAvAIDBQJkYwUCY0IFAWMEAmRrCQC8AgMFAmRkBQFjBQJjQgQCZGwDCQC/AgIFAmRqBQJkZAkAlAoCBQJkawUCZGQJAJQKAgUCZGMFAmRqBAJkbQgFAmRsAl8xBAJkbggFAmRsAl8yBAJjYwkAvAIDBQJkaQUCZG4FAmNBCQCXCgUJAQFJAgUCY2MFAWEJAQFJAgUCZG0FAmNaCQEBSQIFAmRuBQJkYQUCY0IFAmRnBAJkbwgFAmRmAl8xBAJkcAgFAmRmAl8yBAJkcQgFAmRmAl8zBAJjQwkBAUkCCAUCZGYCXzQFAWEEAmRyCQEBSQIIBQJkZgJfNQUBYQMJAGcCAAAFAmRvCQACAQIHTFAgPD0gMAQCZHMDCQEBIQEFAmNRAAAFAmRvBAJkdAkAZQIFAmNMBQJkcAQCZHUJAGUCBQJjTgUCZHEEAmR2AwMFAmNSCQAAAgUCY1UFAmNWBwkAlAoCBQJjVAAAAwMFAmNSCQAAAgUCY1UFAmNXBwkAlAoCAAAFAmNUCQCUCgIFAmRwBQJkcQQCZHcIBQJkdgJfMQQCZHgIBQJkdgJfMgQCZHkJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCY0MJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVkCBQJjcAUCY20JAQJiawoFAmR3BQJkeAUCZHMFAmNDBQJiSAUCZHIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmR0BQJkdQUDbmlsCQCfCg0FAmRvBQJkcwUCY0MFAmN4BQJjegUCZGIFAmNxBQJjdgUCZHkFAmR0BQJkdQUCY00FAmNPAQJkegECZEEEAmJZCQECYU0ABAJkQgkAkQMCBQJiWQUBdQQCZEMJAJEDAgUCYlkFAXYEAmN2CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlkFAXMEAmJaCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlkFAXcEAmNhCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlkFAXgEAmRECQECYnoBBQJkQgQCZEUJAQJiegEFAmRDBAJjQgMJAAACCAUCZEEJb3JkZXJUeXBlBQNCdXkJAQJiUAQFAmJaBQJjYQkAZAIFAmRECAUCZEEGYW1vdW50BQJkRQkBAmJQBAUCYloFAmNhCQBlAgUCZEQIBQJkQQZhbW91bnQFAmRFBAJjQwkBAUkCBQJjQgUBYQMDAwkBAmFKAAYJAAACBQJjdgUBcAYJAAACBQJjdgUBcQkAAgECDUFkbWluIGJsb2NrZWQEAmRGCAgFAmRBCWFzc2V0UGFpcgthbW91bnRBc3NldAQCZEcDCQAAAgUCZEYFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRGBAJkSAgIBQJkQQlhc3NldFBhaXIKcHJpY2VBc3NldAQCZEkDCQAAAgUCZEgFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRIAwMJAQIhPQIFAmRHBQJkQgYJAQIhPQIFAmRJBQJkQwkAAgECCVdyIGFzc2V0cwQCZEoIBQJkQQVwcmljZQQCZGEJAGsDBQFhBQJjYQUCYloEAmRLCQEBTAMFAmRKBQFhBQJkYQQCZEwDCQAAAggFAmRBCW9yZGVyVHlwZQUDQnV5CQBnAgUCY0MFAmRLCQBnAgUCZEsFAmNDBgECZE0BAmROAwkBAiE9AgkAkAMBCAUCZE4IcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmRPCQEFdmFsdWUBCQCRAwIIBQJkTghwYXltZW50cwAABAJjbgkBBXZhbHVlAQgFAmRPB2Fzc2V0SWQEAmNUCAUCZE8GYW1vdW50BAJkZgkBAmNsBAkA2AQBCAUCZE4NdHJhbnNhY3Rpb25JZAkA2AQBBQJjbgUCY1QIBQJkTgZjYWxsZXIEAmNICAUCZGYCXzEEAmNJCAUCZGYCXzIEAmN2CQENcGFyc2VJbnRWYWx1ZQEIBQJkZgJfOQQCY0oIBQJkZgNfMTADAwkBAmFKAAYJAAACBQJjdgUBcQkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmN2CQCXCgUFAmNIBQJjSQUCY1QFAmNuBQJjSgECZFAKAmRRAmFhAmRSAmRTAmJIAmNRAmNSAmNTAmNUAmNVBAJkZgkBAmNLDQUCYWEFAmJICAkBBXZhbHVlAQUCZFIGYW1vdW50CAkBBXZhbHVlAQUCZFIHYXNzZXRJZAgJAQV2YWx1ZQEFAmRTBmFtb3VudAgJAQV2YWx1ZQEFAmRTB2Fzc2V0SWQFAmRRCQAAAgUCYWECAAUCY1EFAmNSBQJjUwUCY1QFAmNVBAJjdgkBDXBhcnNlSW50VmFsdWUBCAUCZGYCXzgDAwMJAQJhSgAGCQAAAgUCY3YFAW8GCQAAAgUCY3YFAXEJAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFAmN2BQJkZgECZFQBAmRVBAJkVgUBZwQCZFcJAJEDAgUCZFUAAAQCZFgJAJEDAgUCZFUAAQQCZFkJAKcDAQUBagQCZFoJALkCAgkApwMBBQJhSQUCZFkEAmVhCQC3AgIFAmRXBQJkWAMJAAACBQJlYQUBZQUBZQQCZWIJALkCAgUCZFoFAmRWBAJlYwkAuQICCQC5AgIJALkCAgUCZFcFAmRYBQJkVgUCZFYEAmVkCQC6AgIJALkCAgUCZWIFAmVhBQJkWQQCZWUJALgCAgUCZWIFAmRZBAJlZgkAtwICBQJkVgUBZgoBAmVnAgJlaAJlaQQCZWoFAmVoBAJlawgFAmVqAl8xBAJlbAgFAmVqAl8yAwkBAiE9AgUCZWwFBHVuaXQFAmVoBAJlbQkAugICCQC5AgIJALkCAgUCZWsFAmVrBQJlawUCZWMEAmVuCQC6AgIJALkCAgkAtwICBQJlZAkAuQICBQJlbQUCZFYFAmVrCQC3AgIJALoCAgkAuQICBQJlZQUCZWsFAmRZCQC5AgIFAmVmBQJlbQQCZW8JAQFRAQkAuAICBQJlbgkBBXZhbHVlAQUCZWsDCQDAAgIFAWYFAmVvCQCUCgIFAmVuBQJlaQkAlAoCBQJlbgUEdW5pdAQCZXAJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4JAMwIAgAPCQDMCAIAEAkAzAgCABEJAMwIAgASCQDMCAIAEwkAzAgCABQJAMwIAgAVCQDMCAIAFgkAzAgCABcJAMwIAgAYBQNuaWwEAmVxCgACZXIFAmVwCgACZXMJAJADAQUCZXIKAAJldAkAlAoCBQJlYQUEdW5pdAoBAmV1AgJldgJldwMJAGcCBQJldwUCZXMFAmV2CQECZWcCBQJldgkAkQMCBQJlcgUCZXcKAQJleAICZXYCZXcDCQBnAgUCZXcFAmVzBQJldgkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDI1CQECZXgCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCCQECZXUCBQJldAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkEAmVrCAUCZXECXzEEAmVsCAUCZXECXzIDCQECIT0CBQJlbAUEdW5pdAUCZWsJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCZWsBAmV5AwJkVQJkTgJlegQCZFYFAWcEAmVBCQCRAwIFAmRVAwkAAAIFAmROAAAAAQAABAJkWQkApwMBBQFqBAJkWgkAuQICCQCnAwEFAmFJBQJkWQQCZWEFAmVBBAJlYgkAuQICBQJkWgUCZFYEAmVCCQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUCZXoFAmV6CQC5AgIFAmVBBQJkVgUCZXoFAmRZCQC5AgIFAmViBQJkVgQCZUMJALgCAgkAtwICBQJlYQkAugICCQC5AgIFAmV6BQJkWQUCZWIFAmV6CgECZWcCAmVoAmVpBAJlRAUCZWgEAmVFCAUCZUQCXzEEAmVsCAUCZUQCXzIDCQECIT0CBQJlbAUEdW5pdAUCZWgEAmVGCQC6AgIJALcCAgkAuQICBQJlRQUCZUUFAmVCCQC3AgIJALkCAgUBZwUCZUUFAmVDBAJlRwkBAVEBCQC4AgIFAmVGCQEFdmFsdWUBBQJlRQMJAMACAgUBZgUCZUcJAJQKAgUCZUYFAmVpCQCUCgIFAmVGBQR1bml0BAJlcAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlSAoAAmVyBQJlcAoAAmVzCQCQAwEFAmVyCgACZXQJAJQKAgUCZXoFBHVuaXQKAQJldQICZXYCZXcDCQBnAgUCZXcFAmVzBQJldgkBAmVnAgUCZXYJAJEDAgUCZXIFAmV3CgECZXgCAmV2AmV3AwkAZwIFAmV3BQJlcwUCZXYJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmV4AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgkBAmV1AgUCZXQAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZUUIBQJlSAJfMQQCZWwIBQJlSAJfMgMJAQIhPQIFAmVsBQR1bml0BQJlRQkAAgEJAKwCAgIZWSBjYWxjdWxhdGlvbiBlcnJvciwgWSA9IAkApgMBBQJlRQECZUkFAmVKAmNuAmNwAmFhAmVLBAJhVQkBAmFNAAQCY3IJAJEDAgUCYVUFAXUEAmNzCQCRAwIFAmFVBQF2BAJjcQkAkQMCBQJhVQUBdAQCY1oJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVQUBdwQCZGEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVQUBeAQCZUwJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNxAhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJlTQMJAL8CAgUCZUwFAWUGCQACAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJlTQUCZU0EAmN4CQECYnoBBQJjcgQCY3oJAQJiegEFAmNzBAJlTgMJAAACBQJhYQIACQCUCgIFAmN4BQJjegMJAAACBQJjbgUCY3IDCQBmAgUCZUoFAmN4CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCCQBlAgUCY3gFAmVKBQJjegMJAAACBQJjbgUCY3MDCQBmAgUCZUoFAmN6CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCBQJjeAkAZQIFAmN6BQJlSgkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmVPCAUCZU4CXzEEAmVQCAUCZU4CXzIEAmVRAwkAAAIFAmNuBQJjcgkAlAoCBQJlSgAAAwkAAAIFAmNuBQJjcwkAlAoCAAAFAmVKCQACAQIPaW52YWxpZCBwYXltZW50BAJlUggFAmVRAl8xBAJlUwgFAmVRAl8yBAJlVAMFAmVLCQCVCgMICQECY2gCBQJlUgUCYUYCXzEICQECY2gCBQJlUwUCYUYCXzEICQECY2gCBQJlSgUCYUYCXzIJAJUKAwUCZVIFAmVTAAAEAmVVCAUCZVQCXzEEAmVWCAUCZVQCXzIEAmNrCAUCZVQCXzMEAmVXCQBkAgUCZU8FAmVVBAJlWAkAZAIFAmVQBQJlVgQCYk0JAQJkVAEJAMwIAgkAtgIBBQJlTwkAzAgCCQC2AgEFAmVQBQNuaWwEAmJMCQECZFQBCQDMCAIJALYCAQUCZVcJAMwIAgkAtgIBBQJlWAUDbmlsBAJlWQMJAL8CAgUCYkwFAmJNBgkBBXRocm93AAMJAAACBQJlWQUCZVkEAmVaCQC8AgMFAmVMCQC4AgIFAmJMBQJiTQUCYk0EAmNDCQEBSQIJAQJiQgIJAQFGAgUCZVgFAmRhCQEBRgIFAmVXBQJjWgUBYQQCZHkJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCY0MJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVkCBQJjcAUCYWEJAQJiawoFAmVSBQJlUwkAoAMBBQJlWgUCY0MAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJmYQkAawMFAmVQBQFhBQJlTwQCZmIJAGsDBQJlSgUBYQkAZAIFAmZhBQFhBAJmYwkAZQIFAmVKBQJmYgQCZmQJALwCAwUCZUwJALYCAQUCZmMJALYCAQUCZVAEAmZlCQCgAwEJALwCAwkAuAICBQJlWgUCZmQFAWIFAmZkCQCWCgQJAKADAQUCZVoFAmR5BQJjawUCZmUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZmBgJmZwJmaAJmaQJkUQJmagJmawQCYVUJAQJhTQAEAmNxCQCRAwIFAmFVBQF0BAJjcgkAkQMCBQJhVQUBdQQCY3MJAJEDAgUCYVUFAXYEAmZsCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVUFAXcEAmZtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVUFAXgEAmZuCQCRAwIFAmFVBQFzBAJjcAMJAAACBQJkUQUCYmoFAmZqBQJkUQQCZE8JAQV2YWx1ZQEJAJEDAgUCZmkAAAQCY24JAQV2YWx1ZQEIBQJkTwdhc3NldElkBAJjVAgFAmRPBmFtb3VudAQCY20JANgEAQUCZmsDCQECIT0CBQJjcQkA2AQBBQJjbgkAAgECCFdyb25nIExQBAJjeAkBAmJ6AQUCY3IEAmN6CQECYnoBBQJjcwQCZm8KAAJhRwkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmZnCQDMCAIFAmNUBQNuaWwFA25pbAMJAAECBQJhRwIKKEludCwgSW50KQUCYUcJAAIBCQCsAgIJAAMBBQJhRwIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQMJAAACBQJmbwUCZm8EAmNrCAUCZm8CXzIEAmZwCAUCZm8CXzEEAmZxAwMJAGYCBQJmaAAACQBmAgUCZmgFAmZwBwkBAmFDAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmaAUDbmlsAgAFAmZwBAJmcgMJAAACBQJmZwUCY3IJAJYKBAUCZnEAAAkAZQIJAGUCBQJjeAUCZnEFAmNrBQJjegMJAAACBQJmZwUCY3MJAJYKBAAABQJmcQUCY3gJAGUCCQBlAgUCY3oFAmZxBQJjawkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJmcwgFAmZyAl8xBAJmdAgFAmZyAl8yBAJlVwgFAmZyAl8zBAJlWAgFAmZyAl80BAJmdQkBAmJCAgkBAUYCBQJlWAUCZm0JAQFGAgUCZVcFAmZsBAJmdgkBAUkCBQJmdQUBYQQCZncDCQAAAgUCZmcCBVdBVkVTBQR1bml0CQDZBAEFAmZnBAJmeAMJAGYCBQJjawAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFMBQJjawUCZncFA25pbAUDbmlsBAJjSgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmNwBQJmcQUCZncJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAgkApQgBBQJjcAUCY20JAQJidgYFAmZzBQJmdAUCY1QFAmZ2BQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmZ2CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmZ2BQNuaWwFAmZ4AwkAAAIFAmNKBQJjSgQCZnkJAPwHBAUCYUUCBGJ1cm4JAMwIAgUCY1QFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY24FAmNUBQNuaWwDCQAAAgUCZnkFAmZ5CQCUCgIFAmNKBQJmcQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZnoABAJhdwkAoggBCQEBUwADCQABAgUCYXcCBlN0cmluZwQCZWEFAmF3CQDZBAEFAmVhAwkAAQIFAmF3AgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmZBAAQCYXcJAKIIAQkBAVQAAwkAAQIFAmF3AgZTdHJpbmcEAmVhBQJhdwkA2QQBBQJlYQMJAAECBQJhdwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJmQgkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJmQwECZE4EAmF3CQECZnoAAwkAAQIFAmF3AgpCeXRlVmVjdG9yBAJmRAUCYXcJAAACCAUCZE4PY2FsbGVyUHVibGljS2V5BQJmRAMJAAECBQJhdwIEVW5pdAkAAAIIBQJkTgZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZkUBAmROBAJhdwkBAmZ6AAMJAAECBQJhdwIKQnl0ZVZlY3RvcgQCZkQFAmF3AwkAAAIIBQJkTg9jYWxsZXJQdWJsaWNLZXkFAmZEBgUCZkIDCQABAgUCYXcCBFVuaXQDCQAAAggFAmROBmNhbGxlcgUEdGhpcwYFAmZCCQACAQILTWF0Y2ggZXJyb3IBAmZGAwJmRwJlegJmSAQCYVUJAQJhTQAEAmNyCQCRAwIFAmFVBQF1BAJjcwkAkQMCBQJhVQUBdgQCZFYFAWcEAmRZCQCnAwEFAWoEAmRaCQC5AgIJAKcDAQUCYUkFAmRZBAJkVQMJAAACBQJmRwcJAMwIAgkAtwICCQC2AgEJAQJiegEFAmNyBQJmSAkAzAgCCQC2AgEJAQJiegEFAmNzBQNuaWwJAMwIAgkAtwICCQC2AgEJAQJiegEFAmNzBQJmSAkAzAgCCQC2AgEJAQJiegEFAmNyBQNuaWwEAmVBCQCRAwIFAmRVAAAEAmVhBQJlQQQCZWIJALkCAgUCZFoFAmRWBAJlQgkAugICCQC5AgIJALkCAgkAugICCQC5AgIFAmV6BQJlegkAuQICBQJlQQUCZFYFAmV6BQJkWQkAuQICBQJlYgUCZFYEAmVDCQC4AgIJALcCAgUCZWEJALoCAgkAuQICBQJlegUCZFkFAmViBQJlegoBAmVnAgJlaAJlaQQCZkkFAmVoBAJlRQgFAmZJAl8xBAJlbAgFAmZJAl8yAwkBAiE9AgUCZWwFBHVuaXQFAmVoBAJlRgkAugICCQC3AgIJALkCAgUCZUUFAmVFBQJlQgkAtwICCQC5AgIFAWcFAmVFBQJlQwQCZUcJAQFRAQkAuAICBQJlRgkBBXZhbHVlAQUCZUUDCQDAAgIFAWYFAmVHCQCUCgIFAmVGBQJlaQkAlAoCBQJlRgUEdW5pdAQCZXAJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZkoKAAJlcgUCZXAKAAJlcwkAkAMBBQJlcgoAAmV0CQCUCgIFAmV6BQR1bml0CgECZXUCAmV2AmV3AwkAZwIFAmV3BQJlcwUCZXYJAQJlZwIFAmV2CQCRAwIFAmVyBQJldwoBAmV4AgJldgJldwMJAGcCBQJldwUCZXMFAmV2CQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJleAIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIJAQJldQIFAmV0AAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVFCAUCZkoCXzEEAmVsCAUCZkoCXzIDCQECIT0CBQJlbAUEdW5pdAUCZUUJAAIBCQCsAgICGVkgY2FsY3VsYXRpb24gZXJyb3IsIFkgPSAJAKYDAQUCZUUdAmROASFjYWxjdWxhdGVBbW91bnRPdXRGb3JTd2FwUkVBRE9OTFkCAmZLAmZHBAJmTAMJAAACBQJmRwcEAmZNCQECYXkCBQR0aGlzCQECYWQABAJmSAkAtwICCQC2AgEJAQJiegEJAQJheQIFBHRoaXMJAQJhYwAJALYCAQUCZksJAJQKAgUCZk0FAmZIBAJmTQkBAmF5AgUEdGhpcwkBAmFjAAQCZkgJALcCAgkAtgIBCQECYnoBCQECYXkCBQR0aGlzCQECYWQACQC2AgEFAmZLCQCUCgIFAmZNBQJmSAQCZk0IBQJmTAJfMQQCZkgIBQJmTAJfMgQCYVUJAQJhTQAEAmNyCQCRAwIFAmFVBQF1BAJjcwkAkQMCBQJhVQUBdgQCZFUJAMwIAgkAtgIBCQECYnoBBQJjcgkAzAgCCQC2AgEJAQJiegEFAmNzBQNuaWwEAmV6CQECZFQBBQJkVQQCZUUJAQJmRgMFAmZHBQJlegkAtgIBBQJmSwQCZk4JALgCAgkAuAICCQC2AgEJAQJiegEFAmZNBQJlRQkAtgIBAAEEAmZPCQCWAwEJAMwIAgAACQDMCAIJAKADAQUCZk4FA25pbAQCZlADCQAAAgUCZkcHCQDMCAIJALcCAgkAtgIBCQECYnoBBQJjcgkAtgIBBQJmSwkAzAgCCQC4AgIJALYCAQkBAmJ6AQUCY3MFAmZOBQNuaWwJAMwIAgkAuAICCQC2AgEJAQJiegEFAmNyBQJmTgkAzAgCCQC3AgIJALYCAQkBAmJ6AQUCY3MJALYCAQUCZksFA25pbAQCZlEJAQJkVAEFAmZQBAJlWQMJAMACAgUCZlEFAmV6BgkAAgEJALkJAgkAzAgCAhRuZXcgRCBpcyBmZXdlciBlcnJvcgkAzAgCCQCmAwEFAmV6CQDMCAIJAKYDAQUCZlEFA25pbAICX18DCQAAAgUCZVkFAmVZCQCUCgIFA25pbAUCZk8JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE4BJmNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBBbmRTZW5kVG9rZW5zBAJmSwJmRwJmUgJmUwQCZlQJAMwIAgMJAGcCCAkBBXZhbHVlAQkAkQMCCAUCZE4IcGF5bWVudHMAAAZhbW91bnQFAmZLBgkBAmFDAQIMV3JvbmcgYW1vdW50CQDMCAIDCQAAAggFAmROBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF5AgUEdGhpcwkBAmFnAAYJAQJhQwECEVBlcm1pc3Npb24gZGVuaWVkBQNuaWwDCQAAAgUCZlQFAmZUBAJkTwkBBXZhbHVlAQkAkQMCCAUCZE4IcGF5bWVudHMAAAQCZlUDCQAAAggFAmRPB2Fzc2V0SWQFBHVuaXQJANgEAQkAmwMBAgVXQVZFUwkA2AQBCQEFdmFsdWUBCAUCZE8HYXNzZXRJZAQCZlYDCQAAAgUCZkcHBAJmTQkBAmF5AgUEdGhpcwkBAmFkAAQCZkgJAGUCCQECYnoBBQJmVQgJAQV2YWx1ZQEJAJEDAggFAmROCHBheW1lbnRzAAAGYW1vdW50CQCUCgIFAmZNBQJmSAQCZk0JAQJheQIFBHRoaXMJAQJhYwAEAmZICQBlAgkBAmJ6AQUCZlUICQEFdmFsdWUBCQCRAwIIBQJkTghwYXltZW50cwAABmFtb3VudAkAlAoCBQJmTQUCZkgEAmZNCAUCZlYCXzEEAmZICAUCZlYCXzIEAmFVCQECYU0ABAJjcgkAkQMCBQJhVQUBdQQCY3MJAJEDAgUCYVUFAXYEAmRVAwkAAAIFAmZHBwkAzAgCCQC4AgIJALYCAQkBAmJ6AQUCY3IJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmROCHBheW1lbnRzAAAGYW1vdW50CQDMCAIJALYCAQkBAmJ6AQUCY3MFA25pbAkAzAgCCQC2AgEJAQJiegEFAmNyCQDMCAIJALgCAgkAtgIBCQECYnoBBQJjcwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZE4IcGF5bWVudHMAAAZhbW91bnQFA25pbAQCZXoJAQJkVAEFAmRVBAJlRQkBAmZGAwUCZkcFAmV6CQC2AgEAAAQCZk4JALgCAgkAuAICCQC2AgEJAQJiegEFAmZNBQJlRQkAtgIBAAEEAmZPCQCWAwEJAMwIAgAACQDMCAIJAKADAQUCZk4FA25pbAQCZlcDCQBnAgUCZk8FAmZSBgkAAgECLEV4Y2hhbmdlIHJlc3VsdCBpcyBmZXdlciBjb2lucyB0aGFuIGV4cGVjdGVkAwkAAAIFAmZXBQJmVwQCZlADCQAAAgUCZkcHCQDMCAIJALYCAQkBAmJ6AQUCY3IJAMwIAgkAuAICCQC2AgEJAQJiegEFAmNzBQJmTgUDbmlsCQDMCAIJALgCAgkAtgIBCQECYnoBBQJjcgUCZk4JAMwIAgkAtgIBCQECYnoBBQJjcwUDbmlsBAJmUQkBAmRUAQUCZlAEAmVZAwkAwAICBQJmUQUCZXoGCQACAQIUbmV3IEQgaXMgZmV3ZXIgZXJyb3IDCQAAAgUCZVkFAmVZCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmZTBQJmTwMJAAACBQJmVQIFV0FWRVMFBHVuaXQJANkEAQUCZk0FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTgELY29uc3RydWN0b3IBAVIEAmVCCQECZkUBBQJkTgMJAAACBQJlQgUCZUIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVIABQFSBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE4BCnNldE1hbmFnZXIBAmZYBAJlQgkBAmZFAQUCZE4DCQAAAgUCZUIFAmVCBAJmWQkA2QQBBQJmWAMJAAACBQJmWQUCZlkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVQABQJmWAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmROAQ5jb25maXJtTWFuYWdlcgAEAmNnCQECZkEABAJmWgMJAQlpc0RlZmluZWQBBQJjZwYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZloFAmZaBAJnYQMJAAACCAUCZE4PY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJjZwYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZ2EFAmdhCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFTAAkA2AQBCQEFdmFsdWUBBQJjZwkAzAgCCQELRGVsZXRlRW50cnkBCQEBVAAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTgEDcHV0AgJnYgJnYwQCZ2QJAQJiZQAEAmdlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJnZAUBQQIKV3Igc3QgYWRkcgQCZ2YJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmdkBQFDAgpXciBzbCBhZGRyAwkAZgIAAAUCZ2IJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmROCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmdnCQECZFAKCQClCAEIBQJkTgZjYWxsZXIJANgEAQgFAmRODXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZE4IcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZE4IcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmROCHBheW1lbnRzAAEFAmdiBgcGAAACAAQCZHMIBQJnZwJfMgQCZ2gIBQJnZwJfNwQCY0oIBQJnZwJfOQQCZHQIBQJnZwNfMTAEAmR1CAUCZ2cDXzExBAJjcggFAmdnA18xMgQCY3MIBQJnZwNfMTMEAmRmCQD8BwQFAmFFAgRlbWl0CQDMCAIFAmRzBQNuaWwFA25pbAMJAAACBQJkZgUCZGYEAmdpBAJhdwUCZGYDCQABAgUCYXcCB0FkZHJlc3MEAmdqBQJhdwkA/AcEBQJnagIEZW1pdAkAzAgCBQJkcwUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZ2kFAmdpBAJnawMJAGYCBQJkdAAACQD8BwQFAmdmAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3IFAmR0BQNuaWwFA25pbAMJAAACBQJnawUCZ2sEAmdsAwkAZgIFAmR1AAAJAPwHBAUCZ2YCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjcwUCZHUFA25pbAUDbmlsAwkAAAIFAmdsBQJnbAQCZ20DBQJnYwQCZ24JAPwHBAUCZ2UCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdoBQJkcwUDbmlsAwkAAAIFAmduBQJnbgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkTgZjYWxsZXIFAmRzBQJnaAUDbmlsCQDOCAIFAmNKBQJnbQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTgELcHV0T25lVGtuVjICAmZoAmdjBAJnbwoAAmFHCQD8BwQFAmFFAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYUcCB0Jvb2xlYW4FAmFHCQACAQkArAICCQADAQUCYUcCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdwAwMDCQECYUoABgkAAAIFAmFZBQFvBgkAAAIFAmFZBQFxBgUCZ28EAmZUCQDMCAIDAwkBASEBBQJncAYJAQJmQwEFAmROBgkBAmFDAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZE4IcGF5bWVudHMAAQYJAQJhQwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZUBQJmVAQCYVUJAQJhTQAEAmNyCQCRAwIFAmFVBQF1BAJjcwkAkQMCBQJhVQUBdgQCY3EJANkEAQkAkQMCBQJhVQUBdAQCZmwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVQUBdwQCZm0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVQUBeAQCY3ADCQAAAggFAmROBmNhbGxlcgUEdGhpcwgFAmRODG9yaWdpbkNhbGxlcggFAmROBmNhbGxlcgQCZE8JAQV2YWx1ZQEJAJEDAggFAmROCHBheW1lbnRzAAAEAmNuCQDYBAEJAQV2YWx1ZQEIBQJkTwdhc3NldElkBAJjVAgFAmRPBmFtb3VudAQCZ3EJAQJlSQUFAmNUBQJjbgkApQgBBQJjcAkA2AQBCAUCZE4NdHJhbnNhY3Rpb25JZAYDCQAAAgUCZ3EFAmdxBAJjawgFAmdxAl8zBAJjSggFAmdxAl8yBAJncggFAmdxAl8xBAJkcwMDCQBmAgUCZmgAAAkAZgIFAmZoBQJncgcJAQJhQwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZmgFA25pbAIABQJncgQCZ2cJAPwHBAUCYUUCBGVtaXQJAMwIAgUCZHMFA25pbAUDbmlsAwkAAAIFAmdnBQJnZwQCZ2kEAmF3BQJnZwMJAAECBQJhdwIHQWRkcmVzcwQCZ2oFAmF3CQD8BwQFAmdqAgRlbWl0CQDMCAIFAmRzBQNuaWwFA25pbAUEdW5pdAMJAAACBQJnaQUCZ2kEAmdtAwUCZ2MEAmduCQD8BwQFAmJnAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjcQUCZHMFA25pbAMJAAACBQJnbgUCZ24FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZE4GY2FsbGVyBQJkcwUCY3EFA25pbAQCZngDCQBmAgUCY2sAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhTAUCY2sJANkEAQUCY24FA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCBQJjSgUCZ20FAmZ4BQJkcwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTgEKcHV0Rm9yRnJlZQECZ3MDCQBmAgAABQJncwkAAgECCldyb25nIHNscGcDCQECIT0CCQCQAwEIBQJkTghwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJndAkBAmRQCgkApQgBCAUCZE4GY2FsbGVyCQDYBAEIBQJkTg10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmROCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmROCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJkTghwYXltZW50cwABBQJncwcHBgAAAgAIBQJndAJfOQJkTgEDZ2V0AAQCZGYJAQJkTQEFAmROBAJndQgFAmRmAl8xBAJjSQgFAmRmAl8yBAJjVAgFAmRmAl8zBAJjbggFAmRmAl80BAJjSggFAmRmAl81BAJlQwkA/AcEBQJhRQIEYnVybgkAzAgCBQJjVAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjbgUCY1QFA25pbAMJAAACBQJlQwUCZUMFAmNKCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmROAQtnZXRPbmVUa25WMgICZmcCZmgEAmdvCgACYUcJAPwHBAUCYUUCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhRwIHQm9vbGVhbgUCYUcJAAIBCQCsAgIJAAMBBQJhRwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ3YDAwkBAmFKAAYJAAACBQJhWQUBcQYFAmdvBAJmVAkAzAgCAwMJAQEhAQUCZ3YGCQECZkMBBQJkTgYJAQJhQwECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmROCHBheW1lbnRzAAEGCQECYUMBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmVAUCZlQEAmd3CQECZmYGBQJmZwUCZmgIBQJkTghwYXltZW50cwgFAmROBmNhbGxlcggFAmRODG9yaWdpbkNhbGxlcggFAmRODXRyYW5zYWN0aW9uSWQEAmNKCAUCZ3cCXzEEAmZxCAUCZ3cCXzIJAJQKAgUCY0oFAmZxCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmROARNnZXRPbmVUa25WMlJFQURPTkxZAgJmZwJneAQCYVUJAQJhTQAEAmNyCQCRAwIFAmFVBQF1BAJjcwkAkQMCBQJhVQUBdgQCY3EJAJEDAgUCYVUFAXQEAmRVCQDMCAIJALYCAQkBAmJ6AQUCY3IJAMwIAgkAtgIBCQECYnoBBQJjcwUDbmlsBAJneQkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY3ECEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmJNCQECZFQBBQJkVQQCYkwJALgCAgUCYk0JALwCAwkAtgIBBQJneAUCYk0FAmd5BAJnegMJAAACBQJmZwUCY3IAAAMJAAACBQJmZwUCY3MAAQkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJnQQkBAmV5AwUCZFUFAmd6BQJiTAQCZk4JALgCAgkAkQMCBQJkVQUCZ3oFAmdBBAJmTwkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALgCAgUCZk4FAWYFA25pbAQCZ0IJAQJjaAIFAmZPBQJhSAQCZnAIBQJnQgJfMQQCY2sIBQJnQgJfMgkAlAoCBQNuaWwJAJQKAgUCZnAFAmNrAmROARxnZXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJmZwJneAQCYVUJAQJhTQAEAmNyCQCRAwIFAmFVBQF1BAJjcwkAkQMCBQJhVQUBdgQCY3EJAJEDAgUCYVUFAXQEAmN4CQECYnoBBQJjcgQCY3oJAQJiegEFAmNzBAJnQwoAAmFHCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZmcJAMwIAgUCZ3gFA25pbAUDbmlsAwkAAQIFAmFHAgooSW50LCBJbnQpBQJhRwkAAgEJAKwCAgkAAwEFAmFHAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJmcAgFAmdDAl8xBAJjawgFAmdDAl8yBAJkZgkBAmNsBAIABQJjcQUCZ3gFBHRoaXMEAmNICAUCZGYCXzEEAmNJCAUCZGYCXzIEAmdECQBkAgUCY0gFAmNJBAJmZQMJAAACBQJnRAAAAwkAAAIFAmZwAAAAAAkAAgECF2JvbnVzIGNhbGN1bGF0aW9uIGVycm9yCQBrAwkAZQIFAmZwBQJnRAUBYQUCZ0QJAJQKAgUDbmlsCQCVCgMFAmZwBQJjawUCZmUCZE4BCWdldE5vTGVzcwICZ0UCZ0YEAmRmCQECZE0BBQJkTgQCY0gIBQJkZgJfMQQCY0kIBQJkZgJfMgQCY1QIBQJkZgJfMwQCY24IBQJkZgJfNAQCY0oIBQJkZgJfNQMJAGYCBQJnRQUCY0gJAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUCY0gCAyA8IAkApAMBBQJnRQMJAGYCBQJnRgUCY0kJAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJjSQIDIDwgCQCkAwEFAmdGBAJnRwkA/AcEBQJhRQIEYnVybgkAzAgCBQJjVAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjbgUCY1QFA25pbAMJAAACBQJnRwUCZ0cFAmNKCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmROAQ11bnN0YWtlQW5kR2V0AQJjaQQCZ0gDCQECIT0CCQCQAwEIBQJkTghwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCZ0gFAmdIBAJiWQkBAmFNAAQCZ0kJAQJiZQAEAmdoCQDZBAEJAJEDAgUCYlkFAXQEAmdKCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJnSQUBQQIKV3Igc3QgYWRkcgQCZ0sJAPwHBAUCZ0oCB3Vuc3Rha2UJAMwIAgkA2AQBBQJnaAkAzAgCBQJjaQUDbmlsBQNuaWwDCQAAAgUCZ0sFAmdLBAJkZgkBAmNsBAkA2AQBCAUCZE4NdHJhbnNhY3Rpb25JZAkA2AQBBQJnaAUCY2kIBQJkTgZjYWxsZXIEAmN2CQENcGFyc2VJbnRWYWx1ZQEIBQJkZgJfOQQCY0oIBQJkZgNfMTAEAmdMAwMJAQJhSgAGCQAAAgUCY3YFAXEJAAIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQJjdgYDCQAAAgUCZ0wFAmdMBAJnTQkA/AcEBQJhRQIEYnVybgkAzAgCBQJjaQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnaAUCY2kFA25pbAMJAAACBQJnTQUCZ00FAmNKCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmROARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJnTgJnTwJnRgQCZ3YDCQECYUoABgkAAAIFAmFZBQFxBAJmVAkAzAgCAwkBASEBBQJndgYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkTghwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZUBQJmVAQCZ0sJAPwHBAUCYmcCB3Vuc3Rha2UJAMwIAgkA2AQBBQJhWgkAzAgCBQJnTgUDbmlsBQNuaWwDCQAAAgUCZ0sFAmdLBAJnUAkBAmNsBAkA2AQBCAUCZE4NdHJhbnNhY3Rpb25JZAkA2AQBBQJhWgUCZ04IBQJkTgZjYWxsZXIEAmNICAUCZ1ACXzEEAmNJCAUCZ1ACXzIEAmNKCAUCZ1ADXzEwBAJnUQkAzAgCAwkAZwIFAmNIBQJnTwYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJnTwUDbmlsAgAJAMwIAgMJAGcCBQJjSQUCZ0YGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJnRgUDbmlsAgAFA25pbAMJAAACBQJnUQUCZ1EEAmdHCQD8BwQFAmFFAgRidXJuCQDMCAIFAmdOBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFaBQJnTgUDbmlsAwkAAAIFAmdHBQJnRwUCY0oJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE4BFXVuc3Rha2VBbmRHZXRPbmVUa25WMgMCZ04CZmcCZmgEAmdvCgACYUcJAPwHBAUCYUUCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhRwIHQm9vbGVhbgUCYUcJAAIBCQCsAgIJAAMBBQJhRwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ3YDAwkBAmFKAAYJAAACBQJhWQUBcQYFAmdvBAJmVAkAzAgCAwMJAQEhAQUCZ3YGCQECZkMBBQJkTgYJAQJhQwECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmROCHBheW1lbnRzAAAGCQECYUMBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmVAUCZlQEAmJZCQECYU0ABAJnSQkBAmJlAAQCZ2gJANkEAQkAkQMCBQJiWQUBdAQCZ0oJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmdJBQFBAgpXciBzdCBhZGRyBAJnSwkA/AcEBQJnSgIHdW5zdGFrZQkAzAgCCQDYBAEFAmdoCQDMCAIFAmdOBQNuaWwFA25pbAMJAAACBQJnSwUCZ0sEAmdSCQECZmYGBQJmZwUCZmgJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdoBQJnTgUDbmlsCAUCZE4GY2FsbGVyCAUCZE4Mb3JpZ2luQ2FsbGVyCAUCZE4NdHJhbnNhY3Rpb25JZAQCY0oIBQJnUgJfMQQCZnEIBQJnUgJfMgkAlAoCBQJjSgUCZnEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE4BHHB1dE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmdTAmdUBAJhVQkBAmFNAAQCY3IJAJEDAgUCYVUFAXUEAmNzCQCRAwIFAmFVBQF2BAJjcQkAkQMCBQJhVQUBdAQCZ1UJAQJlSQUFAmdTBQJnVAIAAgAGBAJlWggFAmdVAl8xBAJjSggFAmdVAl8yBAJjawgFAmdVAl8zBAJmZQgFAmdVAl80CQCUCgIFA25pbAkAlQoDBQJlWgUCY2sFAmZlAmROASFwdXRPbmVUa25WMldpdGhvdXRUYWtlRmVlUkVBRE9OTFkCAmdTAmdUBAJhVQkBAmFNAAQCY3IJAJEDAgUCYVUFAXUEAmNzCQCRAwIFAmFVBQF2BAJjcQkAkQMCBQJhVQUBdAQCZ1YJAQJlSQUFAmdTBQJnVAIAAgAHBAJlWggFAmdWAl8xBAJjSggFAmdWAl8yBAJjawgFAmdWAl8zBAJmZQgFAmdWAl80CQCUCgIFA25pbAkAlQoDBQJlWgUCY2sFAmZlAmROAQhhY3RpdmF0ZQICZ1cCZ1gDCQECIT0CCQClCAEIBQJkTgZjYWxsZXIJAKUIAQUCYUUJAAIBAgZkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMABQJnVwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQABQJnWAUDbmlsAgdzdWNjZXNzAmROAQRzZXRTAgJnWQJnTAMJAQIhPQIJAKUIAQgFAmROBmNhbGxlcgkBAmF5AgUEdGhpcwkBAmFmAAUCZkIJAMwIAgkBC1N0cmluZ0VudHJ5AgUCZ1kFAmdMBQNuaWwCZE4BBHNldEkCAmdZAmdMAwkBAiE9AgkApQgBCAUCZE4GY2FsbGVyCQECYXkCBQR0aGlzCQECYWYABQJmQgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZ1kFAmdMBQNuaWwCZE4BHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmFNAAJkTgEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYkEJAJQKAgUDbmlsCQECYnoBBQJiQQJkTgEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCYlMCYlQCYlgEAmdaCQECYlcDBQJiUwUCYlQFAmJYCQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCZ1oAAAkAzAgCCQCmAwEJAJEDAgUCZ1oAAQkAzAgCCQCmAwEJAJEDAgUCZ1oAAgUDbmlsAmROARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFKAmhhCQCUCgIFA25pbAkBAUkCCQCnAwEFAUoFAmhhAmROARR0b1gxOFdyYXBwZXJSRUFET05MWQIBRwFICQCUCgIFA25pbAkApgMBCQEBRgIFAUcFAUgCZE4BHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYkMCYkQJAJQKAgUDbmlsCQCmAwEJAQJiQgIJAKcDAQUCYkMJAKcDAQUCYkQCZE4BI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJjbQJiSAJjTAJjTQJjTgJjTwJoYgJjUAJjUQkAlAoCBQNuaWwJAQJjSw0FAmNtBQJiSAUCY0wFAmNNBQJjTgUCY08FAmhiBQJjUAUCY1EGBwAAAgACZE4BI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJjbQJoYwJjbwJoYgQCZGYJAQJjbAQFAmNtBQJoYwUCY28JARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmhiCQCUCgIFA25pbAkAnAoKCAUCZGYCXzEIBQJkZgJfMggFAmRmAl8zCAUCZGYCXzQIBQJkZgJfNQgFAmRmAl82CAUCZGYCXzcJAKYDAQgFAmRmAl84CAUCZGYCXzkIBQJkZgNfMTABAmhkAQJoZQAEAmhmBAJhdwkBAmZ6AAMJAAECBQJhdwIKQnl0ZVZlY3RvcgQCZkQFAmF3BQJmRAMJAAECBQJhdwIEVW5pdAgFAmhkD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJhdwUCaGQDCQABAgUCYXcCBU9yZGVyBAJkQQUCYXcEAmhnCQECYUsABAJoaAkBAmR6AQUCZEEEAmhpCQD0AwMIBQJkQQlib2R5Qnl0ZXMJAJEDAggFAmRBBnByb29mcwAACAUCZEEPc2VuZGVyUHVibGljS2V5BAJoagkA9AMDCAUCZEEJYm9keUJ5dGVzCQCRAwIIBQJkQQZwcm9vZnMAAQUCaGcDAwMFAmhoBQJoaQcFAmhqBwYJAQJhcgMFAmhoBQJoaQUCaGoDCQABAgUCYXcCFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJlYQUCYXcEAmhrCQD2AwEJAQV2YWx1ZQEIBQJlYQZzY3JpcHQEAmhsCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYUUJAQJhcAAEAmhtCQDxBwEFBHRoaXMDAwkAAAIFAmhsBQJoawkBAiE9AgUCaG0FAmhrBwYJAPQDAwgFAmhkCWJvZHlCeXRlcwkAkQMCCAUCaGQGcHJvb2ZzAAAFAmhmCQD0AwMIBQJoZAlib2R5Qnl0ZXMJAJEDAggFAmhkBnByb29mcwAABQJoZuTfYN4=", "chainId": 84, "height": 2441808, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3MkEJ84yCwfbFgXLTiDChiEzE8ihQJ8JiSY3pxiXW8wZ Next: GeE4KG5d4Hrq1FxkHiryNNZkcTWzx7DUdmah2zzt8wNN Diff:
OldNewDifferences
935935 then [(toBigInt(bz(cr)) - toBigInt(value(dN.payments[0]).amount)), toBigInt(bz(cs))]
936936 else [toBigInt(bz(cr)), (toBigInt(bz(cs)) - toBigInt(value(dN.payments[0]).amount))]
937937 let ez = dT(dU)
938- let eE = fF(fG, ez, toBigInt(fH))
938+ let eE = fF(fG, ez, toBigInt(0))
939939 let fN = ((toBigInt(bz(fM)) - eE) - toBigInt(1))
940940 let fO = max([0, toInt(fN)])
941941 let fW = if ((fO >= fR))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
1818 let h = toBigInt((a - ((a * 1) / a)))
1919
2020 let i = "WAVES"
2121
2222 let j = "100"
2323
2424 let k = "1"
2525
2626 let l = "__"
2727
2828 let m = ""
2929
3030 let n = 1
3131
3232 let o = 2
3333
3434 let p = 3
3535
3636 let q = 4
3737
3838 let r = 1
3939
4040 let s = 2
4141
4242 let t = 3
4343
4444 let u = 4
4545
4646 let v = 5
4747
4848 let w = 6
4949
5050 let x = 7
5151
5252 let y = 8
5353
5454 let z = 9
5555
5656 let A = 1
5757
5858 let B = 6
5959
6060 let C = 7
6161
6262 let D = 10
6363
6464 let E = fraction(10, a, 10000)
6565
6666 func F (G,H) = fraction(toBigInt(G), c, toBigInt(H))
6767
6868
6969 func I (J,K) = toInt(fraction(J, toBigInt(K), c))
7070
7171
7272 func L (M,N,O) = fraction(M, N, O)
7373
7474
7575 func P (J) = if ((d > J))
7676 then -(J)
7777 else J
7878
7979
8080 func Q (J) = if ((d > J))
8181 then -(J)
8282 else J
8383
8484
8585 func R () = "%s__factoryContract"
8686
8787
8888 func S () = "%s__managerPublicKey"
8989
9090
9191 func T () = "%s__pendingManagerPublicKey"
9292
9393
9494 func U () = "%s%s__price__last"
9595
9696
9797 func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], l)
9898
9999
100100 func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
101101
102102
103103 func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
104104
105105
106106 func ac () = "%s__amountAsset"
107107
108108
109109 func ad () = "%s__priceAsset"
110110
111111
112112 func ae () = "%s__amp"
113113
114114
115115 func af () = "%s__addonAddr"
116116
117117
118118 func ag () = "%s__swapContract"
119119
120120
121121 func ah () = "%s__factoryConfig"
122122
123123
124124 func ai () = "%s%s__matcher__publicKey"
125125
126126
127127 func aj (ak,al) = (((("%d%d%s__" + ak) + "__") + al) + "__config")
128128
129129
130130 func am (an) = ("%s%s%s__mappings__baseAsset2internalId__" + an)
131131
132132
133133 func ao () = "%s__shutdown"
134134
135135
136136 func ap () = "%s__allowedLpStableScriptHash"
137137
138138
139139 func aq () = "%s__feeCollectorAddress"
140140
141141
142142 func ar (as,at,au) = throw(((((("Failed: ordValid=" + toString(as)) + " sndrValid=") + toString(at)) + " mtchrValid=") + toString(au)))
143143
144144
145145 func av (J) = {
146146 let aw = J
147147 if ($isInstanceOf(aw, "String"))
148148 then {
149149 let ax = aw
150150 ax
151151 }
152152 else throw("fail cast to String")
153153 }
154154
155155
156156 func ay (az,aA) = valueOrErrorMessage(getString(az, aA), makeString(["mandatory ", toString(az), ".", aA, " not defined"], ""))
157157
158158
159159 func aB (az,aA) = valueOrErrorMessage(getInteger(az, aA), makeString(["mandatory ", toString(az), ".", aA, " not defined"], ""))
160160
161161
162162 func aC (aD) = throw(makeString(["lp_stable.ride:", aD], " "))
163163
164164
165165 let aE = addressFromStringValue(ay(this, R()))
166166
167167 let aF = {
168168 let aG = invoke(aE, "getInFeeREADONLY", [toString(this)], nil)
169169 if ($isInstanceOf(aG, "Int"))
170170 then aG
171171 else throw(($getType(aG) + " couldn't be cast to Int"))
172172 }
173173
174174 let aH = {
175175 let aG = invoke(aE, "getOutFeeREADONLY", [toString(this)], nil)
176176 if ($isInstanceOf(aG, "Int"))
177177 then aG
178178 else throw(($getType(aG) + " couldn't be cast to Int"))
179179 }
180180
181181 let aI = ay(this, ae())
182182
183183 func aJ () = valueOrElse(getBoolean(aE, ao()), false)
184184
185185
186186 func aK () = fromBase58String(ay(aE, ai()))
187187
188188
189189 let aL = addressFromStringValue(ay(aE, aq()))
190190
191191 func aM () = {
192192 let aN = ay(this, ac())
193193 let aO = ay(this, ad())
194194 let aP = aB(aE, am(aO))
195195 let ak = aB(aE, am(aN))
196196 split(ay(aE, aj(toString(ak), toString(aP))), l)
197197 }
198198
199199
200200 func aQ (aR) = if ((aR == i))
201201 then unit
202202 else fromBase58String(aR)
203203
204204
205205 func aS (aR) = if ((aR == unit))
206206 then i
207207 else toBase58String(value(aR))
208208
209209
210210 func aT (aU) = $Tuple7(addressFromStringValue(aU[r]), parseIntValue(aU[s]), fromBase58String(aU[t]), aQ(aU[u]), aQ(aU[v]), parseIntValue(aU[w]), parseIntValue(aU[x]))
211211
212212
213213 let aV = aT(aM())
214214
215215 let aW = aV
216216
217217 let aX = aW._1
218218
219219 let aY = aW._2
220220
221221 let aZ = aW._3
222222
223223 let ba = aW._4
224224
225225 let bb = aW._5
226226
227227 let bc = aW._6
228228
229229 let bd = aW._7
230230
231231 func be () = split(ay(aE, ah()), l)
232232
233233
234234 let bf = be()
235235
236236 let bg = valueOrErrorMessage(addressFromString(bf[A]), "Invalid staking contract address")
237237
238238 let bh = valueOrErrorMessage(addressFromString(bf[C]), "Invalid slipage contract address")
239239
240240 let bi = valueOrErrorMessage(addressFromString(bf[D]), "Invalid gwx contract address")
241241
242242 let bj = valueOrErrorMessage(addressFromString(bf[B]), "Invalid gwx contract address")
243243
244244 func bk (bl,bm,bn,bo,bp,bq,br,bs,bt,bu) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bu)], l)
245245
246246
247247 func bv (bw,bx,by,bo,br,bs) = makeString(["%d%d%d%d%d%d", toString(bw), toString(bx), toString(by), toString(bo), toString(br), toString(bs)], l)
248248
249249
250250 func bz (bA) = if ((bA == "WAVES"))
251251 then wavesBalance(this).available
252252 else assetBalance(this, fromBase58String(bA))
253253
254254
255255 func bB (bC,bD) = fraction(bC, c, bD)
256256
257257
258258 func bE (bF,bG,bH) = {
259259 let bI = fraction((bF - bG), b, bG)
260260 let bJ = ((bH - P(bI)) > d)
261261 if (!(bJ))
262262 then throw(("Big slpg: " + toString(bI)))
263263 else $Tuple2(bJ, min([bF, bG]))
264264 }
265265
266266
267267 func bK (bL,bM,bN) = {
268268 let bI = fraction(bM, b, bL)
269269 let bO = (bN > bI)
270270 if (if (bO)
271271 then true
272272 else (bM > bL))
273273 then throw(((((((toString(bM) + " ") + toString(bL)) + " ") + toString(bI)) + " ") + toString(bN)))
274274 else bO
275275 }
276276
277277
278278 func bP (bQ,bR,bS,bT) = {
279279 let bU = F(bS, bQ)
280280 let bV = F(bT, bR)
281281 bB(bV, bU)
282282 }
283283
284284
285285 func bW (bS,bT,bX) = {
286286 let bY = aM()
287287 let bZ = parseIntValue(bY[w])
288288 let ca = parseIntValue(bY[x])
289289 let cb = bP(bZ, ca, bS, bT)
290290 let bD = F(bS, bZ)
291291 let bC = F(bT, ca)
292292 let cc = F(bX, a)
293293 let cd = bB(bD, cc)
294294 let ce = bB(bC, cc)
295295 [cb, cd, ce]
296296 }
297297
298298
299299 func cf (bS,bT,bX) = {
300300 let cg = bW(bS, bT, bX)
301301 [I(cg[0], a), I(cg[1], a), I(cg[2], a)]
302302 }
303303
304304
305305 func ch (ci,cj) = {
306306 let ck = if ((cj == 0))
307307 then 0
308308 else fraction(ci, cj, a)
309309 $Tuple2((ci - ck), ck)
310310 }
311311
312312
313313 func cl (cm,cn,co,cp) = {
314314 let bY = aM()
315315 let cq = bY[t]
316316 let cr = bY[u]
317317 let cs = bY[v]
318318 let ct = parseIntValue(bY[w])
319319 let cu = parseIntValue(bY[x])
320320 let cv = bY[s]
321321 let cw = valueOrErrorMessage(assetInfo(fromBase58String(cq)), "Wrong LP id").quantity
322322 if ((cq != cn))
323323 then throw("Wrong pmt asset")
324324 else {
325325 let cx = bz(cr)
326326 let cy = F(cx, ct)
327327 let cz = bz(cs)
328328 let cA = F(cz, cu)
329329 let cB = bB(cA, cy)
330330 let cC = I(cB, a)
331331 let cD = F(co, a)
332332 let cE = F(cw, a)
333333 let cF = fraction(cy, cD, cE)
334334 let cG = fraction(cA, cD, cE)
335335 let cH = I(cF, ct)
336336 let cI = I(cG, cu)
337337 let cJ = if ((cm == ""))
338338 then nil
339339 else [ScriptTransfer(cp, cH, if ((cr == "WAVES"))
340340 then unit
341341 else fromBase58String(cr)), ScriptTransfer(cp, cI, if ((cs == "WAVES"))
342342 then unit
343343 else fromBase58String(cs)), StringEntry(ab(toString(cp), cm), bv(cH, cI, co, cC, height, lastBlock.timestamp)), IntegerEntry(U(), cC), IntegerEntry(V(height, lastBlock.timestamp), cC)]
344344 $Tuple10(cH, cI, cr, cs, cx, cz, cw, cB, cv, cJ)
345345 }
346346 }
347347
348348
349349 func cK (cm,bH,cL,cM,cN,cO,cp,cP,cQ,cR,cS,cT,cU) = {
350350 let bY = aM()
351351 let cq = fromBase58String(bY[t])
352352 let cV = bY[u]
353353 let cW = bY[v]
354354 let cX = bY[y]
355355 let cY = bY[z]
356356 let cZ = parseIntValue(bY[w])
357357 let da = parseIntValue(bY[x])
358358 let cv = bY[s]
359359 let db = valueOrErrorMessage(assetInfo(cq), "Wr lp as").quantity
360360 let cx = if (cP)
361361 then bz(cV)
362362 else if (if (cR)
363363 then (cU == cV)
364364 else false)
365365 then (bz(cV) - cT)
366366 else if (cR)
367367 then bz(cV)
368368 else (bz(cV) - cL)
369369 let cz = if (cP)
370370 then bz(cW)
371371 else if (if (cR)
372372 then (cU == cW)
373373 else false)
374374 then (bz(cW) - cT)
375375 else if (cR)
376376 then bz(cW)
377377 else (bz(cW) - cN)
378378 let dc = F(cL, cZ)
379379 let dd = F(cN, da)
380380 let de = bB(dd, dc)
381381 let cy = F(cx, cZ)
382382 let cA = F(cz, da)
383383 let df = if ((db == 0))
384384 then {
385385 let cB = d
386386 let dg = d
387387 let cc = pow((dc * dd), 0, toBigInt(5), 1, 0, DOWN)
388388 $Tuple5(I(cc, a), I(dc, cZ), I(dd, da), bB((cA + dd), (cy + dc)), dg)
389389 }
390390 else {
391391 let cB = bB(cA, cy)
392392 let dh = fraction(P((cB - de)), c, cB)
393393 let dg = F(bH, a)
394394 if (if (if (cS)
395395 then (cB != d)
396396 else false)
397397 then (dh > dg)
398398 else false)
399399 then throw(((("Price slippage " + toString(dh)) + " > ") + toString(dg)))
400400 else {
401401 let di = F(db, a)
402402 let dj = fraction(dc, cB, c)
403403 let dk = fraction(dd, c, cB)
404404 let dl = if ((dj > dd))
405405 then $Tuple2(dk, dd)
406406 else $Tuple2(dc, dj)
407407 let dm = dl._1
408408 let dn = dl._2
409409 let cc = fraction(di, dn, cA)
410410 $Tuple5(I(cc, a), I(dm, cZ), I(dn, da), cB, dg)
411411 }
412412 }
413413 let do = df._1
414414 let dp = df._2
415415 let dq = df._3
416416 let cC = I(df._4, a)
417417 let dr = I(df._5, a)
418418 if ((0 >= do))
419419 then throw("LP <= 0")
420420 else {
421421 let ds = if (!(cQ))
422422 then 0
423423 else do
424424 let dt = (cL - dp)
425425 let du = (cN - dq)
426426 let dv = if (if (cR)
427427 then (cU == cV)
428428 else false)
429429 then $Tuple2(cT, 0)
430430 else if (if (cR)
431431 then (cU == cW)
432432 else false)
433433 then $Tuple2(0, cT)
434434 else $Tuple2(dp, dq)
435435 let dw = dv._1
436436 let dx = dv._2
437437 let dy = [IntegerEntry(U(), cC), IntegerEntry(V(height, lastBlock.timestamp), cC), StringEntry(Y(cp, cm), bk(dw, dx, ds, cC, bH, dr, height, lastBlock.timestamp, dt, du))]
438438 $Tuple13(do, ds, cC, cx, cz, db, cq, cv, dy, dt, du, cM, cO)
439439 }
440440 }
441441
442442
443443 func dz (dA) = {
444444 let bY = aM()
445445 let dB = bY[u]
446446 let dC = bY[v]
447447 let cv = parseIntValue(bY[s])
448448 let bZ = parseIntValue(bY[w])
449449 let ca = parseIntValue(bY[x])
450450 let dD = bz(dB)
451451 let dE = bz(dC)
452452 let cB = if ((dA.orderType == Buy))
453453 then bP(bZ, ca, (dD + dA.amount), dE)
454454 else bP(bZ, ca, (dD - dA.amount), dE)
455455 let cC = I(cB, a)
456456 if (if (if (aJ())
457457 then true
458458 else (cv == p))
459459 then true
460460 else (cv == q))
461461 then throw("Admin blocked")
462462 else {
463463 let dF = dA.assetPair.amountAsset
464464 let dG = if ((dF == unit))
465465 then "WAVES"
466466 else toBase58String(value(dF))
467467 let dH = dA.assetPair.priceAsset
468468 let dI = if ((dH == unit))
469469 then "WAVES"
470470 else toBase58String(value(dH))
471471 if (if ((dG != dB))
472472 then true
473473 else (dI != dC))
474474 then throw("Wr assets")
475475 else {
476476 let dJ = dA.price
477477 let da = fraction(a, ca, bZ)
478478 let dK = L(dJ, a, da)
479479 let dL = if ((dA.orderType == Buy))
480480 then (cC >= dK)
481481 else (dK >= cC)
482482 true
483483 }
484484 }
485485 }
486486
487487
488488 func dM (dN) = if ((size(dN.payments) != 1))
489489 then throw("1 pmnt exp")
490490 else {
491491 let dO = value(dN.payments[0])
492492 let cn = value(dO.assetId)
493493 let cT = dO.amount
494494 let df = cl(toBase58String(dN.transactionId), toBase58String(cn), cT, dN.caller)
495495 let cH = df._1
496496 let cI = df._2
497497 let cv = parseIntValue(df._9)
498498 let cJ = df._10
499499 if (if (aJ())
500500 then true
501501 else (cv == q))
502502 then throw(("Admin blocked: " + toString(cv)))
503503 else $Tuple5(cH, cI, cT, cn, cJ)
504504 }
505505
506506
507507 func dP (dQ,aa,dR,dS,bH,cQ,cR,cS,cT,cU) = {
508508 let df = cK(aa, bH, value(dR).amount, value(dR).assetId, value(dS).amount, value(dS).assetId, dQ, (aa == ""), cQ, cR, cS, cT, cU)
509509 let cv = parseIntValue(df._8)
510510 if (if (if (aJ())
511511 then true
512512 else (cv == o))
513513 then true
514514 else (cv == q))
515515 then throw(("Blocked:" + toString(cv)))
516516 else df
517517 }
518518
519519
520520 func dT (dU) = {
521521 let dV = g
522522 let dW = dU[0]
523523 let dX = dU[1]
524524 let dY = parseBigIntValue(j)
525525 let dZ = (parseBigIntValue(aI) * dY)
526526 let ea = (dW + dX)
527527 if ((ea == e))
528528 then e
529529 else {
530530 let eb = (dZ * dV)
531531 let ec = (((dW * dX) * dV) * dV)
532532 let ed = ((eb * ea) / dY)
533533 let ee = (eb - dY)
534534 let ef = (dV + f)
535535 func eg (eh,ei) = {
536536 let ej = eh
537537 let ek = ej._1
538538 let el = ej._2
539539 if ((el != unit))
540540 then eh
541541 else {
542542 let em = (((ek * ek) * ek) / ec)
543543 let en = (((ed + (em * dV)) * ek) / (((ee * ek) / dY) + (ef * em)))
544544 let eo = Q((en - value(ek)))
545545 if ((f >= eo))
546546 then $Tuple2(en, ei)
547547 else $Tuple2(en, unit)
548548 }
549549 }
550550
551551 let ep = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
552552 let eq = {
553553 let er = ep
554554 let es = size(er)
555555 let et = $Tuple2(ea, unit)
556556 func eu (ev,ew) = if ((ew >= es))
557557 then ev
558558 else eg(ev, er[ew])
559559
560560 func ex (ev,ew) = if ((ew >= es))
561561 then ev
562562 else throw("List size exceeds 25")
563563
564564 ex(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(et, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25)
565565 }
566566 let ek = eq._1
567567 let el = eq._2
568568 if ((el != unit))
569569 then ek
570570 else throw(("D calculation error, D = " + toString(ek)))
571571 }
572572 }
573573
574574
575575 func ey (dU,dN,ez) = {
576576 let dV = g
577577 let eA = dU[if ((dN == 0))
578578 then 1
579579 else 0]
580580 let dY = parseBigIntValue(j)
581581 let dZ = (parseBigIntValue(aI) * dY)
582582 let ea = eA
583583 let eb = (dZ * dV)
584584 let eB = (((((ez * ez) / (eA * dV)) * ez) * dY) / (eb * dV))
585585 let eC = ((ea + ((ez * dY) / eb)) - ez)
586586 func eg (eh,ei) = {
587587 let eD = eh
588588 let eE = eD._1
589589 let el = eD._2
590590 if ((el != unit))
591591 then eh
592592 else {
593593 let eF = (((eE * eE) + eB) / ((g * eE) + eC))
594594 let eG = Q((eF - value(eE)))
595595 if ((f >= eG))
596596 then $Tuple2(eF, ei)
597597 else $Tuple2(eF, unit)
598598 }
599599 }
600600
601601 let ep = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
602602 let eH = {
603603 let er = ep
604604 let es = size(er)
605605 let et = $Tuple2(ez, unit)
606606 func eu (ev,ew) = if ((ew >= es))
607607 then ev
608608 else eg(ev, er[ew])
609609
610610 func ex (ev,ew) = if ((ew >= es))
611611 then ev
612612 else throw("List size exceeds 15")
613613
614614 ex(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(et, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
615615 }
616616 let eE = eH._1
617617 let el = eH._2
618618 if ((el != unit))
619619 then eE
620620 else throw(("Y calculation error, Y = " + toString(eE)))
621621 }
622622
623623
624624 func eI (eJ,cn,cp,aa,eK) = {
625625 let aU = aM()
626626 let cr = aU[u]
627627 let cs = aU[v]
628628 let cq = aU[t]
629629 let cZ = parseIntValue(aU[w])
630630 let da = parseIntValue(aU[x])
631631 let eL = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cq)), "invalid lp asset").quantity)
632632 let eM = if ((eL > e))
633633 then true
634634 else throw("initial deposit requires all coins")
635635 if ((eM == eM))
636636 then {
637637 let cx = bz(cr)
638638 let cz = bz(cs)
639639 let eN = if ((aa == ""))
640640 then $Tuple2(cx, cz)
641641 else if ((cn == cr))
642642 then if ((eJ > cx))
643643 then throw("invalid payment amount")
644644 else $Tuple2((cx - eJ), cz)
645645 else if ((cn == cs))
646646 then if ((eJ > cz))
647647 then throw("invalid payment amount")
648648 else $Tuple2(cx, (cz - eJ))
649649 else throw("wrong pmtAssetId")
650650 let eO = eN._1
651651 let eP = eN._2
652652 let eQ = if ((cn == cr))
653653 then $Tuple2(eJ, 0)
654654 else if ((cn == cs))
655655 then $Tuple2(0, eJ)
656656 else throw("invalid payment")
657657 let eR = eQ._1
658658 let eS = eQ._2
659659 let eT = if (eK)
660660 then $Tuple3(ch(eR, aF)._1, ch(eS, aF)._1, ch(eJ, aF)._2)
661661 else $Tuple3(eR, eS, 0)
662662 let eU = eT._1
663663 let eV = eT._2
664664 let ck = eT._3
665665 let eW = (eO + eU)
666666 let eX = (eP + eV)
667667 let bM = dT([toBigInt(eO), toBigInt(eP)])
668668 let bL = dT([toBigInt(eW), toBigInt(eX)])
669669 let eY = if ((bL > bM))
670670 then true
671671 else throw()
672672 if ((eY == eY))
673673 then {
674674 let eZ = fraction(eL, (bL - bM), bM)
675675 let cC = I(bB(F(eX, da), F(eW, cZ)), a)
676676 let dy = [IntegerEntry(U(), cC), IntegerEntry(V(height, lastBlock.timestamp), cC), StringEntry(Y(cp, aa), bk(eR, eS, toInt(eZ), cC, 0, 0, height, lastBlock.timestamp, 0, 0))]
677677 let fa = fraction(eP, a, eO)
678678 let fb = fraction(eJ, a, (fa + a))
679679 let fc = (eJ - fb)
680680 let fd = fraction(eL, toBigInt(fc), toBigInt(eP))
681681 let fe = toInt(fraction((eZ - fd), b, fd))
682682 $Tuple4(toInt(eZ), dy, ck, fe)
683683 }
684684 else throw("Strict value is not equal to itself.")
685685 }
686686 else throw("Strict value is not equal to itself.")
687687 }
688688
689689
690690 func ff (fg,fh,fi,dQ,fj,fk) = {
691691 let aU = aM()
692692 let cq = aU[t]
693693 let cr = aU[u]
694694 let cs = aU[v]
695695 let fl = parseIntValue(aU[w])
696696 let fm = parseIntValue(aU[x])
697697 let fn = aU[s]
698698 let cp = if ((dQ == bj))
699699 then fj
700700 else dQ
701701 let dO = value(fi[0])
702702 let cn = value(dO.assetId)
703703 let cT = dO.amount
704704 let cm = toBase58String(fk)
705705 if ((cq != toBase58String(cn)))
706706 then throw("Wrong LP")
707707 else {
708708 let cx = bz(cr)
709709 let cz = bz(cs)
710710 let fo = {
711711 let aG = invoke(this, "getOneTknV2READONLY", [fg, cT], nil)
712712 if ($isInstanceOf(aG, "(Int, Int)"))
713713 then aG
714714 else throw(($getType(aG) + " couldn't be cast to (Int, Int)"))
715715 }
716716 if ((fo == fo))
717717 then {
718718 let ck = fo._2
719719 let fp = fo._1
720720 let fq = if (if ((fh > 0))
721721 then (fh > fp)
722722 else false)
723723 then aC(makeString(["amount to receive is less than ", toString(fh)], ""))
724724 else fp
725725 let fr = if ((fg == cr))
726726 then $Tuple4(fq, 0, ((cx - fq) - ck), cz)
727727 else if ((fg == cs))
728728 then $Tuple4(0, fq, cx, ((cz - fq) - ck))
729729 else throw("invalid out asset id")
730730 let fs = fr._1
731731 let ft = fr._2
732732 let eW = fr._3
733733 let eX = fr._4
734734 let fu = bB(F(eX, fm), F(eW, fl))
735735 let fv = I(fu, a)
736736 let fw = if ((fg == "WAVES"))
737737 then unit
738738 else fromBase58String(fg)
739739 let fx = if ((ck > 0))
740740 then [ScriptTransfer(aL, ck, fw)]
741741 else nil
742742 let cJ = ([ScriptTransfer(cp, fq, fw), StringEntry(ab(toString(cp), cm), bv(fs, ft, cT, fv, height, lastBlock.timestamp)), IntegerEntry(U(), fv), IntegerEntry(V(height, lastBlock.timestamp), fv)] ++ fx)
743743 if ((cJ == cJ))
744744 then {
745745 let fy = invoke(aE, "burn", [cT], [AttachedPayment(cn, cT)])
746746 if ((fy == fy))
747747 then $Tuple2(cJ, fq)
748748 else throw("Strict value is not equal to itself.")
749749 }
750750 else throw("Strict value is not equal to itself.")
751751 }
752752 else throw("Strict value is not equal to itself.")
753753 }
754754 }
755755
756756
757757 func fz () = {
758758 let aw = getString(S())
759759 if ($isInstanceOf(aw, "String"))
760760 then {
761761 let ea = aw
762762 fromBase58String(ea)
763763 }
764764 else if ($isInstanceOf(aw, "Unit"))
765765 then unit
766766 else throw("Match error")
767767 }
768768
769769
770770 func fA () = {
771771 let aw = getString(T())
772772 if ($isInstanceOf(aw, "String"))
773773 then {
774774 let ea = aw
775775 fromBase58String(ea)
776776 }
777777 else if ($isInstanceOf(aw, "Unit"))
778778 then unit
779779 else throw("Match error")
780780 }
781781
782782
783783 let fB = throw("Permission denied")
784784
785785 func fC (dN) = {
786786 let aw = fz()
787787 if ($isInstanceOf(aw, "ByteVector"))
788788 then {
789789 let fD = aw
790790 (dN.callerPublicKey == fD)
791791 }
792792 else if ($isInstanceOf(aw, "Unit"))
793793 then (dN.caller == this)
794794 else throw("Match error")
795795 }
796796
797797
798798 func fE (dN) = {
799799 let aw = fz()
800800 if ($isInstanceOf(aw, "ByteVector"))
801801 then {
802802 let fD = aw
803803 if ((dN.callerPublicKey == fD))
804804 then true
805805 else fB
806806 }
807807 else if ($isInstanceOf(aw, "Unit"))
808808 then if ((dN.caller == this))
809809 then true
810810 else fB
811811 else throw("Match error")
812812 }
813813
814814
815815 func fF (fG,ez,fH) = {
816816 let aU = aM()
817817 let cr = aU[u]
818818 let cs = aU[v]
819819 let dV = g
820820 let dY = parseBigIntValue(j)
821821 let dZ = (parseBigIntValue(aI) * dY)
822822 let dU = if ((fG == false))
823823 then [(toBigInt(bz(cr)) + fH), toBigInt(bz(cs))]
824824 else [(toBigInt(bz(cs)) + fH), toBigInt(bz(cr))]
825825 let eA = dU[0]
826826 let ea = eA
827827 let eb = (dZ * dV)
828828 let eB = (((((ez * ez) / (eA * dV)) * ez) * dY) / (eb * dV))
829829 let eC = ((ea + ((ez * dY) / eb)) - ez)
830830 func eg (eh,ei) = {
831831 let fI = eh
832832 let eE = fI._1
833833 let el = fI._2
834834 if ((el != unit))
835835 then eh
836836 else {
837837 let eF = (((eE * eE) + eB) / ((g * eE) + eC))
838838 let eG = Q((eF - value(eE)))
839839 if ((f >= eG))
840840 then $Tuple2(eF, ei)
841841 else $Tuple2(eF, unit)
842842 }
843843 }
844844
845845 let ep = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
846846 let fJ = {
847847 let er = ep
848848 let es = size(er)
849849 let et = $Tuple2(ez, unit)
850850 func eu (ev,ew) = if ((ew >= es))
851851 then ev
852852 else eg(ev, er[ew])
853853
854854 func ex (ev,ew) = if ((ew >= es))
855855 then ev
856856 else throw("List size exceeds 15")
857857
858858 ex(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(eu(et, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
859859 }
860860 let eE = fJ._1
861861 let el = fJ._2
862862 if ((el != unit))
863863 then eE
864864 else throw(("Y calculation error, Y = " + toString(eE)))
865865 }
866866
867867
868868 @Callable(dN)
869869 func calculateAmountOutForSwapREADONLY (fK,fG) = {
870870 let fL = if ((fG == false))
871871 then {
872872 let fM = ay(this, ad())
873873 let fH = (toBigInt(bz(ay(this, ac()))) + toBigInt(fK))
874874 $Tuple2(fM, fH)
875875 }
876876 else {
877877 let fM = ay(this, ac())
878878 let fH = (toBigInt(bz(ay(this, ad()))) + toBigInt(fK))
879879 $Tuple2(fM, fH)
880880 }
881881 let fM = fL._1
882882 let fH = fL._2
883883 let aU = aM()
884884 let cr = aU[u]
885885 let cs = aU[v]
886886 let dU = [toBigInt(bz(cr)), toBigInt(bz(cs))]
887887 let ez = dT(dU)
888888 let eE = fF(fG, ez, toBigInt(fK))
889889 let fN = ((toBigInt(bz(fM)) - eE) - toBigInt(1))
890890 let fO = max([0, toInt(fN)])
891891 let fP = if ((fG == false))
892892 then [(toBigInt(bz(cr)) + toBigInt(fK)), (toBigInt(bz(cs)) - fN)]
893893 else [(toBigInt(bz(cr)) - fN), (toBigInt(bz(cs)) + toBigInt(fK))]
894894 let fQ = dT(fP)
895895 let eY = if ((fQ >= ez))
896896 then true
897897 else throw(makeString(["new D is fewer error", toString(ez), toString(fQ)], "__"))
898898 if ((eY == eY))
899899 then $Tuple2(nil, fO)
900900 else throw("Strict value is not equal to itself.")
901901 }
902902
903903
904904
905905 @Callable(dN)
906906 func calculateAmountOutForSwapAndSendTokens (fK,fG,fR,fS) = {
907907 let fT = [if ((value(dN.payments[0]).amount >= fK))
908908 then true
909909 else aC("Wrong amount"), if ((dN.caller == addressFromStringValue(ay(this, ag()))))
910910 then true
911911 else aC("Permission denied")]
912912 if ((fT == fT))
913913 then {
914914 let dO = value(dN.payments[0])
915915 let fU = if ((dO.assetId == unit))
916916 then toBase58String(toBytes("WAVES"))
917917 else toBase58String(value(dO.assetId))
918918 let fV = if ((fG == false))
919919 then {
920920 let fM = ay(this, ad())
921921 let fH = (bz(fU) - value(dN.payments[0]).amount)
922922 $Tuple2(fM, fH)
923923 }
924924 else {
925925 let fM = ay(this, ac())
926926 let fH = (bz(fU) - value(dN.payments[0]).amount)
927927 $Tuple2(fM, fH)
928928 }
929929 let fM = fV._1
930930 let fH = fV._2
931931 let aU = aM()
932932 let cr = aU[u]
933933 let cs = aU[v]
934934 let dU = if ((fG == false))
935935 then [(toBigInt(bz(cr)) - toBigInt(value(dN.payments[0]).amount)), toBigInt(bz(cs))]
936936 else [toBigInt(bz(cr)), (toBigInt(bz(cs)) - toBigInt(value(dN.payments[0]).amount))]
937937 let ez = dT(dU)
938- let eE = fF(fG, ez, toBigInt(fH))
938+ let eE = fF(fG, ez, toBigInt(0))
939939 let fN = ((toBigInt(bz(fM)) - eE) - toBigInt(1))
940940 let fO = max([0, toInt(fN)])
941941 let fW = if ((fO >= fR))
942942 then true
943943 else throw("Exchange result is fewer coins than expected")
944944 if ((fW == fW))
945945 then {
946946 let fP = if ((fG == false))
947947 then [toBigInt(bz(cr)), (toBigInt(bz(cs)) - fN)]
948948 else [(toBigInt(bz(cr)) - fN), toBigInt(bz(cs))]
949949 let fQ = dT(fP)
950950 let eY = if ((fQ >= ez))
951951 then true
952952 else throw("new D is fewer error")
953953 if ((eY == eY))
954954 then [ScriptTransfer(addressFromStringValue(fS), fO, if ((fU == "WAVES"))
955955 then unit
956956 else fromBase58String(fM))]
957957 else throw("Strict value is not equal to itself.")
958958 }
959959 else throw("Strict value is not equal to itself.")
960960 }
961961 else throw("Strict value is not equal to itself.")
962962 }
963963
964964
965965
966966 @Callable(dN)
967967 func constructor (R) = {
968968 let eB = fE(dN)
969969 if ((eB == eB))
970970 then [StringEntry(R(), R)]
971971 else throw("Strict value is not equal to itself.")
972972 }
973973
974974
975975
976976 @Callable(dN)
977977 func setManager (fX) = {
978978 let eB = fE(dN)
979979 if ((eB == eB))
980980 then {
981981 let fY = fromBase58String(fX)
982982 if ((fY == fY))
983983 then [StringEntry(T(), fX)]
984984 else throw("Strict value is not equal to itself.")
985985 }
986986 else throw("Strict value is not equal to itself.")
987987 }
988988
989989
990990
991991 @Callable(dN)
992992 func confirmManager () = {
993993 let cg = fA()
994994 let fZ = if (isDefined(cg))
995995 then true
996996 else throw("No pending manager")
997997 if ((fZ == fZ))
998998 then {
999999 let ga = if ((dN.callerPublicKey == value(cg)))
10001000 then true
10011001 else throw("You are not pending manager")
10021002 if ((ga == ga))
10031003 then [StringEntry(S(), toBase58String(value(cg))), DeleteEntry(T())]
10041004 else throw("Strict value is not equal to itself.")
10051005 }
10061006 else throw("Strict value is not equal to itself.")
10071007 }
10081008
10091009
10101010
10111011 @Callable(dN)
10121012 func put (gb,gc) = {
10131013 let gd = be()
10141014 let ge = valueOrErrorMessage(addressFromString(gd[A]), "Wr st addr")
10151015 let gf = valueOrErrorMessage(addressFromString(gd[C]), "Wr sl addr")
10161016 if ((0 > gb))
10171017 then throw("Wrong slippage")
10181018 else if ((size(dN.payments) != 2))
10191019 then throw("2 pmnts expd")
10201020 else {
10211021 let gg = dP(toString(dN.caller), toBase58String(dN.transactionId), AttachedPayment(value(dN.payments[0]).assetId, value(dN.payments[0]).amount), dN.payments[1], gb, true, false, true, 0, "")
10221022 let ds = gg._2
10231023 let gh = gg._7
10241024 let cJ = gg._9
10251025 let dt = gg._10
10261026 let du = gg._11
10271027 let cr = gg._12
10281028 let cs = gg._13
10291029 let df = invoke(aE, "emit", [ds], nil)
10301030 if ((df == df))
10311031 then {
10321032 let gi = {
10331033 let aw = df
10341034 if ($isInstanceOf(aw, "Address"))
10351035 then {
10361036 let gj = aw
10371037 invoke(gj, "emit", [ds], nil)
10381038 }
10391039 else unit
10401040 }
10411041 if ((gi == gi))
10421042 then {
10431043 let gk = if ((dt > 0))
10441044 then invoke(gf, "put", nil, [AttachedPayment(cr, dt)])
10451045 else nil
10461046 if ((gk == gk))
10471047 then {
10481048 let gl = if ((du > 0))
10491049 then invoke(gf, "put", nil, [AttachedPayment(cs, du)])
10501050 else nil
10511051 if ((gl == gl))
10521052 then {
10531053 let gm = if (gc)
10541054 then {
10551055 let gn = invoke(ge, "stake", nil, [AttachedPayment(gh, ds)])
10561056 if ((gn == gn))
10571057 then nil
10581058 else throw("Strict value is not equal to itself.")
10591059 }
10601060 else [ScriptTransfer(dN.caller, ds, gh)]
10611061 (cJ ++ gm)
10621062 }
10631063 else throw("Strict value is not equal to itself.")
10641064 }
10651065 else throw("Strict value is not equal to itself.")
10661066 }
10671067 else throw("Strict value is not equal to itself.")
10681068 }
10691069 else throw("Strict value is not equal to itself.")
10701070 }
10711071 }
10721072
10731073
10741074
10751075 @Callable(dN)
10761076 func putOneTknV2 (fh,gc) = {
10771077 let go = {
10781078 let aG = invoke(aE, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10791079 if ($isInstanceOf(aG, "Boolean"))
10801080 then aG
10811081 else throw(($getType(aG) + " couldn't be cast to Boolean"))
10821082 }
10831083 let gp = if (if (if (aJ())
10841084 then true
10851085 else (aY == o))
10861086 then true
10871087 else (aY == q))
10881088 then true
10891089 else go
10901090 let fT = [if (if (!(gp))
10911091 then true
10921092 else fC(dN))
10931093 then true
10941094 else aC("put operation is blocked by admin"), if ((size(dN.payments) == 1))
10951095 then true
10961096 else aC("exactly 1 payment are expected")]
10971097 if ((fT == fT))
10981098 then {
10991099 let aU = aM()
11001100 let cr = aU[u]
11011101 let cs = aU[v]
11021102 let cq = fromBase58String(aU[t])
11031103 let fl = parseIntValue(aU[w])
11041104 let fm = parseIntValue(aU[x])
11051105 let cp = if ((dN.caller == this))
11061106 then dN.originCaller
11071107 else dN.caller
11081108 let dO = value(dN.payments[0])
11091109 let cn = toBase58String(value(dO.assetId))
11101110 let cT = dO.amount
11111111 let gq = eI(cT, cn, toString(cp), toBase58String(dN.transactionId), true)
11121112 if ((gq == gq))
11131113 then {
11141114 let ck = gq._3
11151115 let cJ = gq._2
11161116 let gr = gq._1
11171117 let ds = if (if ((fh > 0))
11181118 then (fh > gr)
11191119 else false)
11201120 then aC(makeString(["amount to receive is less than ", toString(fh)], ""))
11211121 else gr
11221122 let gg = invoke(aE, "emit", [ds], nil)
11231123 if ((gg == gg))
11241124 then {
11251125 let gi = {
11261126 let aw = gg
11271127 if ($isInstanceOf(aw, "Address"))
11281128 then {
11291129 let gj = aw
11301130 invoke(gj, "emit", [ds], nil)
11311131 }
11321132 else unit
11331133 }
11341134 if ((gi == gi))
11351135 then {
11361136 let gm = if (gc)
11371137 then {
11381138 let gn = invoke(bg, "stake", nil, [AttachedPayment(cq, ds)])
11391139 if ((gn == gn))
11401140 then nil
11411141 else throw("Strict value is not equal to itself.")
11421142 }
11431143 else [ScriptTransfer(dN.caller, ds, cq)]
11441144 let fx = if ((ck > 0))
11451145 then [ScriptTransfer(aL, ck, fromBase58String(cn))]
11461146 else nil
11471147 $Tuple2(((cJ ++ gm) ++ fx), ds)
11481148 }
11491149 else throw("Strict value is not equal to itself.")
11501150 }
11511151 else throw("Strict value is not equal to itself.")
11521152 }
11531153 else throw("Strict value is not equal to itself.")
11541154 }
11551155 else throw("Strict value is not equal to itself.")
11561156 }
11571157
11581158
11591159
11601160 @Callable(dN)
11611161 func putForFree (gs) = if ((0 > gs))
11621162 then throw("Wrong slpg")
11631163 else if ((size(dN.payments) != 2))
11641164 then throw("2 pmnts expd")
11651165 else {
11661166 let gt = dP(toString(dN.caller), toBase58String(dN.transactionId), AttachedPayment(value(dN.payments[0]).assetId, value(dN.payments[0]).amount), dN.payments[1], gs, false, false, true, 0, "")
11671167 gt._9
11681168 }
11691169
11701170
11711171
11721172 @Callable(dN)
11731173 func get () = {
11741174 let df = dM(dN)
11751175 let gu = df._1
11761176 let cI = df._2
11771177 let cT = df._3
11781178 let cn = df._4
11791179 let cJ = df._5
11801180 let eC = invoke(aE, "burn", [cT], [AttachedPayment(cn, cT)])
11811181 if ((eC == eC))
11821182 then cJ
11831183 else throw("Strict value is not equal to itself.")
11841184 }
11851185
11861186
11871187
11881188 @Callable(dN)
11891189 func getOneTknV2 (fg,fh) = {
11901190 let go = {
11911191 let aG = invoke(aE, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11921192 if ($isInstanceOf(aG, "Boolean"))
11931193 then aG
11941194 else throw(($getType(aG) + " couldn't be cast to Boolean"))
11951195 }
11961196 let gv = if (if (aJ())
11971197 then true
11981198 else (aY == q))
11991199 then true
12001200 else go
12011201 let fT = [if (if (!(gv))
12021202 then true
12031203 else fC(dN))
12041204 then true
12051205 else aC("get operation is blocked by admin"), if ((size(dN.payments) == 1))
12061206 then true
12071207 else aC("exactly 1 payment are expected")]
12081208 if ((fT == fT))
12091209 then {
12101210 let gw = ff(fg, fh, dN.payments, dN.caller, dN.originCaller, dN.transactionId)
12111211 let cJ = gw._1
12121212 let fq = gw._2
12131213 $Tuple2(cJ, fq)
12141214 }
12151215 else throw("Strict value is not equal to itself.")
12161216 }
12171217
12181218
12191219
12201220 @Callable(dN)
12211221 func getOneTknV2READONLY (fg,gx) = {
12221222 let aU = aM()
12231223 let cr = aU[u]
12241224 let cs = aU[v]
12251225 let cq = aU[t]
12261226 let dU = [toBigInt(bz(cr)), toBigInt(bz(cs))]
12271227 let gy = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cq)), "invalid lp asset").quantity)
12281228 let bM = dT(dU)
12291229 let bL = (bM - fraction(toBigInt(gx), bM, gy))
12301230 let gz = if ((fg == cr))
12311231 then 0
12321232 else if ((fg == cs))
12331233 then 1
12341234 else throw("invalid out asset id")
12351235 let gA = ey(dU, gz, bL)
12361236 let fN = (dU[gz] - gA)
12371237 let fO = max([0, toInt((fN - f))])
12381238 let gB = ch(fO, aH)
12391239 let fp = gB._1
12401240 let ck = gB._2
12411241 $Tuple2(nil, $Tuple2(fp, ck))
12421242 }
12431243
12441244
12451245
12461246 @Callable(dN)
12471247 func getOneTknV2WithBonusREADONLY (fg,gx) = {
12481248 let aU = aM()
12491249 let cr = aU[u]
12501250 let cs = aU[v]
12511251 let cq = aU[t]
12521252 let cx = bz(cr)
12531253 let cz = bz(cs)
12541254 let gC = {
12551255 let aG = invoke(this, "getOneTknV2READONLY", [fg, gx], nil)
12561256 if ($isInstanceOf(aG, "(Int, Int)"))
12571257 then aG
12581258 else throw(($getType(aG) + " couldn't be cast to (Int, Int)"))
12591259 }
12601260 let fp = gC._1
12611261 let ck = gC._2
12621262 let df = cl("", cq, gx, this)
12631263 let cH = df._1
12641264 let cI = df._2
12651265 let gD = (cH + cI)
12661266 let fe = if ((gD == 0))
12671267 then if ((fp == 0))
12681268 then 0
12691269 else throw("bonus calculation error")
12701270 else fraction((fp - gD), a, gD)
12711271 $Tuple2(nil, $Tuple3(fp, ck, fe))
12721272 }
12731273
12741274
12751275
12761276 @Callable(dN)
12771277 func getNoLess (gE,gF) = {
12781278 let df = dM(dN)
12791279 let cH = df._1
12801280 let cI = df._2
12811281 let cT = df._3
12821282 let cn = df._4
12831283 let cJ = df._5
12841284 if ((gE > cH))
12851285 then throw(((("Failed: " + toString(cH)) + " < ") + toString(gE)))
12861286 else if ((gF > cI))
12871287 then throw(((("Failed: " + toString(cI)) + " < ") + toString(gF)))
12881288 else {
12891289 let gG = invoke(aE, "burn", [cT], [AttachedPayment(cn, cT)])
12901290 if ((gG == gG))
12911291 then cJ
12921292 else throw("Strict value is not equal to itself.")
12931293 }
12941294 }
12951295
12961296
12971297
12981298 @Callable(dN)
12991299 func unstakeAndGet (ci) = {
13001300 let gH = if ((size(dN.payments) != 0))
13011301 then throw("No pmnts expd")
13021302 else true
13031303 if ((gH == gH))
13041304 then {
13051305 let bY = aM()
13061306 let gI = be()
13071307 let gh = fromBase58String(bY[t])
13081308 let gJ = valueOrErrorMessage(addressFromString(gI[A]), "Wr st addr")
13091309 let gK = invoke(gJ, "unstake", [toBase58String(gh), ci], nil)
13101310 if ((gK == gK))
13111311 then {
13121312 let df = cl(toBase58String(dN.transactionId), toBase58String(gh), ci, dN.caller)
13131313 let cv = parseIntValue(df._9)
13141314 let cJ = df._10
13151315 let gL = if (if (aJ())
13161316 then true
13171317 else (cv == q))
13181318 then throw(("Blocked: " + toString(cv)))
13191319 else true
13201320 if ((gL == gL))
13211321 then {
13221322 let gM = invoke(aE, "burn", [ci], [AttachedPayment(gh, ci)])
13231323 if ((gM == gM))
13241324 then cJ
13251325 else throw("Strict value is not equal to itself.")
13261326 }
13271327 else throw("Strict value is not equal to itself.")
13281328 }
13291329 else throw("Strict value is not equal to itself.")
13301330 }
13311331 else throw("Strict value is not equal to itself.")
13321332 }
13331333
13341334
13351335
13361336 @Callable(dN)
13371337 func unstakeAndGetNoLess (gN,gO,gF) = {
13381338 let gv = if (aJ())
13391339 then true
13401340 else (aY == q)
13411341 let fT = [if (!(gv))
13421342 then true
13431343 else throw("get operation is blocked by admin"), if ((size(dN.payments) == 0))
13441344 then true
13451345 else throw("no payments are expected")]
13461346 if ((fT == fT))
13471347 then {
13481348 let gK = invoke(bg, "unstake", [toBase58String(aZ), gN], nil)
13491349 if ((gK == gK))
13501350 then {
13511351 let gP = cl(toBase58String(dN.transactionId), toBase58String(aZ), gN, dN.caller)
13521352 let cH = gP._1
13531353 let cI = gP._2
13541354 let cJ = gP._10
13551355 let gQ = [if ((cH >= gO))
13561356 then true
13571357 else throw(makeString(["amount asset amount to receive is less than ", toString(gO)], "")), if ((cI >= gF))
13581358 then true
13591359 else throw(makeString(["price asset amount to receive is less than ", toString(gF)], ""))]
13601360 if ((gQ == gQ))
13611361 then {
13621362 let gG = invoke(aE, "burn", [gN], [AttachedPayment(aZ, gN)])
13631363 if ((gG == gG))
13641364 then cJ
13651365 else throw("Strict value is not equal to itself.")
13661366 }
13671367 else throw("Strict value is not equal to itself.")
13681368 }
13691369 else throw("Strict value is not equal to itself.")
13701370 }
13711371 else throw("Strict value is not equal to itself.")
13721372 }
13731373
13741374
13751375
13761376 @Callable(dN)
13771377 func unstakeAndGetOneTknV2 (gN,fg,fh) = {
13781378 let go = {
13791379 let aG = invoke(aE, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13801380 if ($isInstanceOf(aG, "Boolean"))
13811381 then aG
13821382 else throw(($getType(aG) + " couldn't be cast to Boolean"))
13831383 }
13841384 let gv = if (if (aJ())
13851385 then true
13861386 else (aY == q))
13871387 then true
13881388 else go
13891389 let fT = [if (if (!(gv))
13901390 then true
13911391 else fC(dN))
13921392 then true
13931393 else aC("get operation is blocked by admin"), if ((size(dN.payments) == 0))
13941394 then true
13951395 else aC("no payments are expected")]
13961396 if ((fT == fT))
13971397 then {
13981398 let bY = aM()
13991399 let gI = be()
14001400 let gh = fromBase58String(bY[t])
14011401 let gJ = valueOrErrorMessage(addressFromString(gI[A]), "Wr st addr")
14021402 let gK = invoke(gJ, "unstake", [toBase58String(gh), gN], nil)
14031403 if ((gK == gK))
14041404 then {
14051405 let gR = ff(fg, fh, [AttachedPayment(gh, gN)], dN.caller, dN.originCaller, dN.transactionId)
14061406 let cJ = gR._1
14071407 let fq = gR._2
14081408 $Tuple2(cJ, fq)
14091409 }
14101410 else throw("Strict value is not equal to itself.")
14111411 }
14121412 else throw("Strict value is not equal to itself.")
14131413 }
14141414
14151415
14161416
14171417 @Callable(dN)
14181418 func putOneTknV2WithBonusREADONLY (gS,gT) = {
14191419 let aU = aM()
14201420 let cr = aU[u]
14211421 let cs = aU[v]
14221422 let cq = aU[t]
14231423 let gU = eI(gS, gT, "", "", true)
14241424 let eZ = gU._1
14251425 let cJ = gU._2
14261426 let ck = gU._3
14271427 let fe = gU._4
14281428 $Tuple2(nil, $Tuple3(eZ, ck, fe))
14291429 }
14301430
14311431
14321432
14331433 @Callable(dN)
14341434 func putOneTknV2WithoutTakeFeeREADONLY (gS,gT) = {
14351435 let aU = aM()
14361436 let cr = aU[u]
14371437 let cs = aU[v]
14381438 let cq = aU[t]
14391439 let gV = eI(gS, gT, "", "", false)
14401440 let eZ = gV._1
14411441 let cJ = gV._2
14421442 let ck = gV._3
14431443 let fe = gV._4
14441444 $Tuple2(nil, $Tuple3(eZ, ck, fe))
14451445 }
14461446
14471447
14481448
14491449 @Callable(dN)
14501450 func activate (gW,gX) = if ((toString(dN.caller) != toString(aE)))
14511451 then throw("denied")
14521452 else $Tuple2([StringEntry(ac(), gW), StringEntry(ad(), gX)], "success")
14531453
14541454
14551455
14561456 @Callable(dN)
14571457 func setS (gY,gL) = if ((toString(dN.caller) != ay(this, af())))
14581458 then fB
14591459 else [StringEntry(gY, gL)]
14601460
14611461
14621462
14631463 @Callable(dN)
14641464 func setI (gY,gL) = if ((toString(dN.caller) != ay(this, af())))
14651465 then fB
14661466 else [IntegerEntry(gY, gL)]
14671467
14681468
14691469
14701470 @Callable(dN)
14711471 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aM())
14721472
14731473
14741474
14751475 @Callable(dN)
14761476 func getAccBalanceWrapperREADONLY (bA) = $Tuple2(nil, bz(bA))
14771477
14781478
14791479
14801480 @Callable(dN)
14811481 func calcPricesWrapperREADONLY (bS,bT,bX) = {
14821482 let gZ = bW(bS, bT, bX)
14831483 $Tuple2(nil, [toString(gZ[0]), toString(gZ[1]), toString(gZ[2])])
14841484 }
14851485
14861486
14871487
14881488 @Callable(dN)
14891489 func fromX18WrapperREADONLY (J,ha) = $Tuple2(nil, I(parseBigIntValue(J), ha))
14901490
14911491
14921492
14931493 @Callable(dN)
14941494 func toX18WrapperREADONLY (G,H) = $Tuple2(nil, toString(F(G, H)))
14951495
14961496
14971497
14981498 @Callable(dN)
14991499 func calcPriceBigIntWrapperREADONLY (bC,bD) = $Tuple2(nil, toString(bB(parseBigIntValue(bC), parseBigIntValue(bD))))
15001500
15011501
15021502
15031503 @Callable(dN)
15041504 func estimatePutOperationWrapperREADONLY (cm,bH,cL,cM,cN,cO,hb,cP,cQ) = $Tuple2(nil, cK(cm, bH, cL, cM, cN, cO, hb, cP, cQ, true, false, 0, ""))
15051505
15061506
15071507
15081508 @Callable(dN)
15091509 func estimateGetOperationWrapperREADONLY (cm,hc,co,hb) = {
15101510 let df = cl(cm, hc, co, addressFromStringValue(hb))
15111511 $Tuple2(nil, $Tuple10(df._1, df._2, df._3, df._4, df._5, df._6, df._7, toString(df._8), df._9, df._10))
15121512 }
15131513
15141514
15151515 @Verifier(hd)
15161516 func he () = {
15171517 let hf = {
15181518 let aw = fz()
15191519 if ($isInstanceOf(aw, "ByteVector"))
15201520 then {
15211521 let fD = aw
15221522 fD
15231523 }
15241524 else if ($isInstanceOf(aw, "Unit"))
15251525 then hd.senderPublicKey
15261526 else throw("Match error")
15271527 }
15281528 let aw = hd
15291529 if ($isInstanceOf(aw, "Order"))
15301530 then {
15311531 let dA = aw
15321532 let hg = aK()
15331533 let hh = dz(dA)
15341534 let hi = sigVerify(dA.bodyBytes, dA.proofs[0], dA.senderPublicKey)
15351535 let hj = sigVerify(dA.bodyBytes, dA.proofs[1], hg)
15361536 if (if (if (hh)
15371537 then hi
15381538 else false)
15391539 then hj
15401540 else false)
15411541 then true
15421542 else ar(hh, hi, hj)
15431543 }
15441544 else if ($isInstanceOf(aw, "SetScriptTransaction"))
15451545 then {
15461546 let ea = aw
15471547 let hk = blake2b256(value(ea.script))
15481548 let hl = fromBase64String(value(getString(aE, ap())))
15491549 let hm = scriptHash(this)
15501550 if (if ((hl == hk))
15511551 then (hm != hk)
15521552 else false)
15531553 then true
15541554 else sigVerify(hd.bodyBytes, hd.proofs[0], hf)
15551555 }
15561556 else sigVerify(hd.bodyBytes, hd.proofs[0], hf)
15571557 }
15581558

github/deemru/w8io/fabc49c 
132.38 ms