tx · 9xXhHRxvySGeAeQbsBfugrPda3S9FRREjB9Pf3YEQzHk

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.02800000 Waves

2022.10.10 12:40 [2266073] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "9xXhHRxvySGeAeQbsBfugrPda3S9FRREjB9Pf3YEQzHk", "fee": 2800000, "feeAssetId": null, "timestamp": 1665394863718, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "39p5V9VazQVkufqQrwwQzbrcChKvj54gdw78E7PRUAb289ddvk6mbB56ZeuYsTrAgFRw6H9hJHWyckyBjja7fCPH" ], "script": "base64:BgLKHggCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEIARIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgpzbGlwcGFnZTREIgVBbXVsdCIFRGNvbnYiA1NFUCIFRU1QVFkiClBvb2xBY3RpdmUiClBvb2xQdXREaXMiDlBvb2xNYXRjaGVyRGlzIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIglpZHhQb29sU3QiCWlkeExQQXNJZCIJaWR4QW1Bc0lkIglpZHhQckFzSWQiC2lkeEFtdEFzRGNtIg1pZHhQcmljZUFzRGNtIgtpZHhJQW10QXNJZCINaWR4SVByaWNlQXNJZCIPaWR4RmFjdFN0YWtDbnRyIhBpZHhGYWN0U2xpcHBDbnRyIhFpZHhGYWN0R3d4UmV3Q250ciIKZmVlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiAmYxIgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgF0IgNwYXUiAnVhIgR0eElkIgNnYXUiAmFhIgJwYSIDYW1wIgNhZGEiBmtleUZlZSIDZmVlIgRmY2ZnIgRtdHBrIgJwYyIGaUFtdEFzIgVpUHJBcyIDbWJhIgViQVN0ciIDYXBzIhxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIgN0b2UiA29yViIGc2VuZHJWIgZtYXRjaFYiA3N0ciIHJG1hdGNoMCIGdmFsU3RyIgRzdHJmIgRhZGRyIgNrZXkiBGludGYiA2ZjYSIBQSIDaWdzIgJtcCITZmVlQ29sbGVjdG9yQWRkcmVzcyIDZ3BjIgVhbXRBcyIHcHJpY2VBcyIIaVByaWNlQXMiA2dmYyINZmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0Ig9zbGlwYWdlQ29udHJhY3QiC2d3eENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIJZmVlQW1vdW50IgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMTYzNTExNjY5NiIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiA21vYSIFb3JkZXIiB2FtdEFzSWQiBnByQXNJZCIPYWNjQW10QXNCYWxhbmNlIg5hY2NQckFzQmFsYW5jZSIKb3JBbXRBc3NldCIKb3JBbXRBc1N0ciIJb3JQckFzc2V0IglvclByQXNTdHIiCm9yZGVyUHJpY2UiDmNhc3RPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCICY2ciAWkiA3BtdCICY3AiBmNhbGxlciIHYW1Bc1BtdCIHcHJBc1BtdCIEZ2V0RCICeHAiAW4iA3hwMCIDeHAxIgphUHJlY2lzaW9uIgFhIgFzIgNhbm4iC3hwMF94cDFfbl9uIhBhbm5fc19hUHJlY2lzaW9uIg5hbm5fYVByZWNpc2lvbiICbjEiBGNhbGMiA2FjYyIDY3VyIg0kdDAyMTI0ODIxMjY4IgFkIgVmb3VuZCICZHAiBWROZXh0IgVkRGlmZiIDYXJyIg0kdDAyMTY4OTIxNzM2IgIkbCICJHMiBSRhY2MwIgUkZjBfMSICJGEiAiRpIgUkZjBfMiIFZ2V0WUQiAUQiAXgiAWMiAWIiDSR0MDIyMjM2MjIyNTYiAXkiBXlOZXh0IgV5RGlmZiINJHQwMjI1NjMyMjYxMCINY2FsY1B1dE9uZVRrbiIJcG10QW10UmF3Igpwb29sQ29uZmlnIg0kdDAyMzE1MjIzNjEzIgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCINJHQwMjM2MTkyMzc5NSILYW1BbW91bnRSYXciC3ByQW1vdW50UmF3IghhbUFtb3VudCIIcHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IgZjaGVja0QiD2xwQXNzZXRFbWlzc2lvbiIIbHBBbW91bnQiDnBvb2xQcm9wb3J0aW9uIg9hbW91bnRBc3NldFBhcnQiDnByaWNlQXNzZXRQYXJ0IglscEFtdEJvdGgiBWJvbnVzIhNnZXRPbmVUa25WMkludGVybmFsIgpvdXRBc3NldElkIgxtaW5PdXRBbW91bnQiCHBheW1lbnRzIgxvcmlnaW5DYWxsZXIiDXRyYW5zYWN0aW9uSWQiCmFtRGVjaW1hbHMiCnByRGVjaW1hbHMiCnBvb2xTdGF0dXMiDSR0MDI2MjUyMjYzNjAiAUAiCHRvdGFsR2V0Igt0b3RhbEFtb3VudCINJHQwMjY1NDcyNjg1NCIFb3V0QW0iBW91dFByIghjdXJQclgxOCIFY3VyUHIiEW91dEFzc2V0SWRPcldhdmVzIhBzZW5kRmVlVG9NYXRjaGVyIgRidXJuIgFtIgJwbSICcGQiAm1tIgJwayIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiAmNtIgNocG0iA2NwbSIEc2xpcCIJYXV0b1N0YWtlIgdmYWN0Q2ZnIgtzdGFraW5nQ250ciIIc2xpcENudHIiAWUiCWxwQXNzZXRJZCICZWwiBmxlZ2FjeSICc2EiAnNwIghscFRybnNmciICc3MiDSR0MDMxNzMxMzE4NTYiB2VzdGltTFAiB21heFNscGciBmVzdFB1dCIJb3V0QW10QW10Ig0kdDAzNDAzOTM0MTk0Ig1scEFzc2V0QW1vdW50IgpscEVtaXNzaW9uIgVpbmRleCIEbmV3WSICZHkiC3RvdGFsR2V0UmF3Ig0kdDAzNDk3MzM1MDIyIg0kdDAzNTM2NzM1NDgyIg5zdW1PZkdldEFzc2V0cyISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDWNoZWNrUGF5bWVudHMiCmZhY3RvcnlDZmciB3N0YWtpbmciCnVuc3Rha2VJbnYiAXYiBWJ1cm5BIg11bnN0YWtlQW1vdW50Ig0kdDAzNzc4OTM3OTc3IhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCINJHQwMzgyMzYzODMzMyIIYW10QXNTdHIiB3ByQXNTdHIiAWsiAnByIgxyZXNTY2FsZU11bHQiB3VzckFkZHIiB3BtdEFzSWQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIKb3JkZXJWYWxpZCILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNoXAABYQCAwtcvAAFiCQC2AgEAgMLXLwABYwkAtgIBAICAkLu61q3wDQABZAkAtgIBAAAAAWUJALYCAQAAAAFmCQC2AgEAAQABZwkAtgIBAAIAAWgJALYCAQkAZQIFAWEJAGkCCQBoAgUBYQABBQFhAAFpAgMxMDAAAWoCATEAAWsCAl9fAAFsAgAAAW0AAQABbgACAAFvAAMAAXAABAABcQABAAFyAAIAAXMAAwABdAAEAAF1AAUAAXYABgABdwAHAAF4AAgAAXkACQABegABAAFBAAcAAUIACgABQwkAawMABQUBYQCQTgEBRAIBRQFGCQC8AgMJALYCAQUBRQUBYwkAtgIBBQFGAQFHAgFIAUkJAKADAQkAvAIDBQFICQC2AgEFAUkFAWMBAUoDAUsBTAFNCQBrAwUBSwUBTAUBTQEBTgEBSAMJAL8CAgUBZAUBSAkAvgIBBQFIBQFIAQFPAQFIAwkAvwICBQFkBQFICQC+AgEFAUgFAUgBAVAAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFRAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVIAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVMAAhElcyVzX19wcmljZV9fbGFzdAEBVAIBVQFWCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBVQkAzAgCCQCkAwEFAVYFA25pbAUBawEBVwIBWAFZCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUBWAICX18FAVkBAVoCAVgBWQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAVgCAl9fBQFZAQJhYQACDyVzX19hbW91bnRBc3NldAECYWIAAg4lc19fcHJpY2VBc3NldAECYWMAAgclc19fYW1wAQJhZAACDSVzX19hZGRvbkFkZHIAAmFlAgclc19fZmVlAAJhZgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhZQUBQwECYWcAAhElc19fZmFjdG9yeUNvbmZpZwECYWgAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmFpAgJhagJhawkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYWoCAl9fBQJhawIIX19jb25maWcBAmFsAQJhbQkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhbQECYW4AAgwlc19fc2h1dGRvd24BAmFvAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBAmFwAAIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmFxAwJhcgJhcwJhdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhFGYWlsZWQ6IG9yZFZhbGlkPQkApQMBBQJhcgILIHNuZHJWYWxpZD0JAKUDAQUCYXMCDCBtdGNoclZhbGlkPQkApQMBBQJhdAECYXUBAUgEAmF2BQFIAwkAAQIFAmF2AgZTdHJpbmcEAmF3BQJhdgUCYXcJAAIBAhNmYWlsIGNhc3QgdG8gU3RyaW5nAQJheAICYXkCYXoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJheQUCYXoJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYXkJAMwIAgIBLgkAzAgCBQJhegkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJhQQICYXkCYXoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJheQUCYXoJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYXkJAMwIAgIBLgkAzAgCBQJhegkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAAJhQgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF4AgUEdGhpcwkBAVAAAAJhQwkBAmF4AgUEdGhpcwkBAmFjAAECYUQACQELdmFsdWVPckVsc2UCCQCbCAIFAmFCCQECYW4ABwECYUUACQDZBAEJAQJheAIFAmFCCQECYWgAAAJhRgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF4AgUCYUIJAQJhcAABAmFHAAQCYUgJAQJheAIFBHRoaXMJAQJhYQAEAmFJCQECYXgCBQR0aGlzCQECYWIABAJhSgkBAmFBAgUCYUIJAQJhbAEFAmFJBAJhagkBAmFBAgUCYUIJAQJhbAEFAmFICQC1CQIJAQJheAIFAmFCCQECYWkCCQCkAwEFAmFqCQCkAwEFAmFKBQFrAQJhSwAJALUJAgkBAmF4AgUCYUIJAQJhZwAFAWsAAmFMCQECYUsAAAJhTQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYUwFAXoCIEludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzAAJhTgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYUwFAUECIEludmFsaWQgc2xpcGFnZSBjb250cmFjdCBhZGRyZXNzAAJhTwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYUwFAUICHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MBAmFQCgJhUQJhUgJhUwJhVAJhVQJhVgJhVwJhWAJhWQJhWgkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYVEJAMwIAgkApAMBBQJhUgkAzAgCCQCkAwEFAmFTCQDMCAIJAKQDAQUCYVQJAMwIAgkApAMBBQJhVQkAzAgCCQCkAwEFAmFWCQDMCAIJAKQDAQUCYVcJAMwIAgkApAMBBQJhWAkAzAgCCQCkAwEFAmFZCQDMCAIJAKQDAQUCYVoFA25pbAUBawECYmEGAmJiAmJjAmJkAmFUAmFXAmFYCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYmIJAMwIAgkApAMBBQJiYwkAzAgCCQCkAwEFAmJkCQDMCAIJAKQDAQUCYVQJAMwIAgkApAMBBQJhVwkAzAgCCQCkAwEFAmFYBQNuaWwFAWsBAmJlAQJiZgMJAAACBQJiZgIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYmYBAmJnAgJiaAJiaQkAvAIDBQJiaAUBYwUCYmkBAmJqAwJiawJibAJibQQCYm4JALwCAwkAuAICBQJiawUCYmwFAWIFAmJsBAJibwkAvwICCQC4AgIFAmJtCQEBTgEFAmJuBQFkAwkBASEBBQJibwkAAgEJAKwCAgIKQmlnIHNscGc6IAkApgMBBQJibgkAlAoCBQJibwkAmQMBCQDMCAIFAmJrCQDMCAIFAmJsBQNuaWwBAmJwAwJicQJicgJicwQCYm4JALwCAwUCYnIFAWIFAmJxBAJidAkAvwICBQJicwUCYm4DAwUCYnQGCQC/AgIFAmJyBQJicQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKYDAQUCYnICASAJAKYDAQUCYnECASAJAKYDAQUCYm4CASAJAKYDAQUCYnMFAmJ0AQJidQQCYnYCYncCYngCYnkEAmJ6CQEBRAIFAmJ4BQJidgQCYkEJAQFEAgUCYnkFAmJ3CQECYmcCBQJiQQUCYnoBAmJCAwJieAJieQJiQwQCYkQJAQJhRwAEAmJFCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXYEAmJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXcEAmJHCQECYnUEBQJiRQUCYkYFAmJ4BQJieQQCYmkJAQFEAgUCYngFAmJFBAJiaAkBAUQCBQJieQUCYkYEAmJICQEBRAIFAmJDBQFhBAJiSQkBAmJnAgUCYmkFAmJIBAJiSgkBAmJnAgUCYmgFAmJICQDMCAIFAmJHCQDMCAIFAmJJCQDMCAIFAmJKBQNuaWwBAmJLAwJieAJieQJiQwQCYkwJAQJiQgMFAmJ4BQJieQUCYkMJAMwIAgkBAUcCCQCRAwIFAmJMAAAFAWEJAMwIAgkBAUcCCQCRAwIFAmJMAAEFAWEJAMwIAgkBAUcCCQCRAwIFAmJMAAIFAWEFA25pbAECYk0BAmJOBAJiTwkAawMFAmJOBQJhZgUBYQkAlAoCCQBlAgUCYk4FAmJPBQJiTwECYlAEAmJRAmJSAmJTAmJUBAJiRAkBAmFHAAQCYlUJAJEDAgUCYkQFAXMEAmJWCQCRAwIFAmJEBQF0BAJiVwkAkQMCBQJiRAUBdQQCYlgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBdgQCYlkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBdwQCYloJAJEDAgUCYkQFAXIEAmNhCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCYlUCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgUCYlUFAmJSCQACAQIPV3JvbmcgcG10IGFzc2V0BAJjYgkBAmJlAQUCYlYEAmNjCQEBRAIFAmNiBQJiWAQCY2QJAQJiZQEFAmJXBAJjZQkBAUQCBQJjZAUCYlkEAmNmCQECYmcCBQJjZQUCY2MEAmNnCQEBRwIFAmNmBQFhBAJjaAkBAUQCBQJiUwUBYQQCY2kJAQFEAgUCY2EFAWEEAmNqCQC8AgMFAmNjBQJjaAUCY2kEAmNrCQC8AgMFAmNlBQJjaAUCY2kEAmNsCQEBRwIFAmNqBQJiWAQCY20JAQFHAgUCY2sFAmJZBAJjbgMJAAACBQJiUQIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYlQFAmNsAwkAAAIFAmJWAgVXQVZFUwUEdW5pdAkA2QQBBQJiVgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiVAUCY20DCQAAAgUCYlcCBVdBVkVTBQR1bml0CQDZBAEFAmJXCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAgkApQgBBQJiVAUCYlEJAQJiYQYFAmNsBQJjbQUCYlMFAmNnBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwAFAmNnCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNnBQNuaWwJAJwKCgUCY2wFAmNtBQJiVgUCYlcFAmNiBQJjZAUCY2EFAmNmBQJiWgUCY24BAmNvDQJiUQJibQJjcAJjcQJjcgJjcwJiVAJjdAJjdQJjdgJjdwJjeAJjeQQCYkQJAQJhRwAEAmJVCQDZBAEJAJEDAgUCYkQFAXMEAmN6CQCRAwIFAmJEBQF0BAJjQQkAkQMCBQJiRAUBdQQCY0IJAJEDAgUCYkQFAXgEAmNDCQCRAwIFAmJEBQF5BAJjRAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQF2BAJjRQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQF3BAJiWgkAkQMCBQJiRAUBcgQCY0YICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlUCCFdyIGxwIGFzCHF1YW50aXR5BAJjYgMFAmN0CQECYmUBBQJjegMDBQJjdgkAAAIFAmN5BQJjegcJAGUCCQECYmUBBQJjegUCY3gDBQJjdgkBAmJlAQUCY3oJAGUCCQECYmUBBQJjegUCY3AEAmNkAwUCY3QJAQJiZQEFAmNBAwMFAmN2CQAAAgUCY3kFAmNBBwkAZQIJAQJiZQEFAmNBBQJjeAMFAmN2CQECYmUBBQJjQQkAZQIJAQJiZQEFAmNBBQJjcgQCY0cJAQFEAgUCY3AFAmNEBAJjSAkBAUQCBQJjcgUCY0UEAmNJCQECYmcCBQJjSAUCY0cEAmNjCQEBRAIFAmNiBQJjRAQCY2UJAQFEAgUCY2QFAmNFBAJjSgMJAAACBQJjRgAABAJjZgUBZAQCY0sFAWQEAmJICQB2BgkAuQICBQJjRwUCY0gAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFHAgUCYkgFAWEJAQFHAgUCY0cFAmNECQEBRwIFAmNIBQJjRQkBAmJnAgkAtwICBQJjZQUCY0gJALcCAgUCY2MFAmNHBQJjSwQCY2YJAQJiZwIFAmNlBQJjYwQCY0wJALwCAwkBAU4BCQC4AgIFAmNmBQJjSQUBYwUCY2YEAmNLCQEBRAIFAmJtBQFhAwMDBQJjdwkBAiE9AgUCY2YFAWQHCQC/AgIFAmNMBQJjSwcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCY0wCAyA+IAkApgMBBQJjSwQCY00JAQFEAgUCY0YFAWEEAmNOCQC8AgMFAmNHBQJjZgUBYwQCY08JALwCAwUCY0gFAWMFAmNmBAJjUAMJAL8CAgUCY04FAmNICQCUCgIFAmNPBQJjSAkAlAoCBQJjRwUCY04EAmNRCAUCY1ACXzEEAmNSCAUCY1ACXzIEAmJICQC8AgMFAmNNBQJjUgUCY2UJAJcKBQkBAUcCBQJiSAUBYQkBAUcCBQJjUQUCY0QJAQFHAgUCY1IFAmNFBQJjZgUCY0sEAmNTCAUCY0oCXzEEAmNUCAUCY0oCXzIEAmNVCAUCY0oCXzMEAmNnCQEBRwIIBQJjSgJfNAUBYQQCY1YJAQFHAggFAmNKAl81BQFhAwkAZwIAAAUCY1MJAAIBAgdMUCA8PSAwBAJjVwMJAQEhAQUCY3UAAAUCY1MEAmNYCQBlAgUCY3AFAmNUBAJjWQkAZQIFAmNyBQJjVQQCY1oDAwUCY3YJAAACBQJjeQUCY3oHCQCUCgIFAmN4AAADAwUCY3YJAAACBQJjeQUCY0EHCQCUCgIAAAUCY3gJAJQKAgUCY1QFAmNVBAJkYQgFAmNaAl8xBAJkYggFAmNaAl8yBAJkYwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJjZwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjZwkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIFAmJUBQJiUQkBAmFQCgUCZGEFAmRiBQJjVwUCY2cFAmJtBQJjVgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY1gFAmNZBQNuaWwJAJ8KDQUCY1MFAmNXBQJjZwUCY2IFAmNkBQJjRgUCYlUFAmJaBQJkYwUCY1gFAmNZBQJjcQUCY3MBAmRkAQJkZQQCYkQJAQJhRwAEAmRmCQCRAwIFAmJEBQF0BAJkZwkAkQMCBQJiRAUBdQQCYloJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBcgQCYkUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBdgQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBdwQCZGgJAQJiZQEFAmRmBAJkaQkBAmJlAQUCZGcEAmNmAwkAAAIIBQJkZQlvcmRlclR5cGUFA0J1eQkBAmJ1BAUCYkUFAmJGCQBkAgUCZGgIBQJkZQZhbW91bnQFAmRpCQECYnUEBQJiRQUCYkYJAGUCBQJkaAgFAmRlBmFtb3VudAUCZGkEAmNnCQEBRwIFAmNmBQFhAwMDCQECYUQABgkAAAIFAmJaBQFvBgkAAAIFAmJaBQFwCQACAQINQWRtaW4gYmxvY2tlZAQCZGoICAUCZGUJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BAJkawMJAAACBQJkagUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCZGoEAmRsCAgFAmRlCWFzc2V0UGFpcgpwcmljZUFzc2V0BAJkbQMJAAACBQJkbAUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCZGwDAwkBAiE9AgUCZGsFAmRmBgkBAiE9AgUCZG0FAmRnCQACAQIJV3IgYXNzZXRzBAJkbggFAmRlBXByaWNlBAJjRQkAawMFAWEFAmJGBQJiRQQCZG8JAQFKAwUCZG4FAWEFAmNFBAJkcAMJAAACCAUCZGUJb3JkZXJUeXBlBQNCdXkJAGcCBQJjZwUCZG8JAGcCBQJkbwUCY2cGAQJkcQECZHIDCQECIT0CCQCQAwEIBQJkcghwYXltZW50cwABCQACAQIKMSBwbW50IGV4cAQCZHMJAQV2YWx1ZQEJAJEDAggFAmRyCHBheW1lbnRzAAAEAmJSCQEFdmFsdWUBCAUCZHMHYXNzZXRJZAQCY3gIBQJkcwZhbW91bnQEAmNKCQECYlAECQDYBAEIBQJkcg10cmFuc2FjdGlvbklkCQDYBAEFAmJSBQJjeAgFAmRyBmNhbGxlcgQCY2wIBQJjSgJfMQQCY20IBQJjSgJfMgQCYloJAQ1wYXJzZUludFZhbHVlAQgFAmNKAl85BAJjbggFAmNKA18xMAMDCQECYUQABgkAAAIFAmJaBQFwCQACAQkArAICAg9BZG1pbiBibG9ja2VkOiAJAKQDAQUCYloJAJcKBQUCY2wFAmNtBQJjeAUCYlIFAmNuAQJkdAoCZHUBWQJkdgJkdwJibQJjdQJjdgJjdwJjeAJjeQQCY0oJAQJjbw0FAVkFAmJtCAkBBXZhbHVlAQUCZHYGYW1vdW50CAkBBXZhbHVlAQUCZHYHYXNzZXRJZAgJAQV2YWx1ZQEFAmR3BmFtb3VudAgJAQV2YWx1ZQEFAmR3B2Fzc2V0SWQFAmR1CQAAAgUBWQIABQJjdQUCY3YFAmN3BQJjeAUCY3kEAmJaCQENcGFyc2VJbnRWYWx1ZQEIBQJjSgJfOAMDAwkBAmFEAAYJAAACBQJiWgUBbgYJAAACBQJiWgUBcAkAAgEJAKwCAgIIQmxvY2tlZDoJAKQDAQUCYloFAmNKAQJkeAECZHkEAmR6BQFnBAJkQQkAkQMCBQJkeQAABAJkQgkAkQMCBQJkeQABBAJkQwkApwMBBQFpBAJkRAkAuQICCQCnAwEFAmFDBQJkQwQCZEUJALcCAgUCZEEFAmRCAwkAAAIFAmRFBQFlBQFlBAJkRgkAuQICBQJkRAUCZHoEAmRHCQC5AgIJALkCAgkAuQICBQJkQQUCZEIFAmR6BQJkegQCZEgJALoCAgkAuQICBQJkRgUCZEUFAmRDBAJkSQkAuAICBQJkRgUCZEMEAmRKCQC3AgIFAmR6BQFmCgECZEsCAmRMAmRNBAJkTgUCZEwEAmRPCAUCZE4CXzEEAmRQCAUCZE4CXzIDCQECIT0CBQJkUAUEdW5pdAUCZEwEAmRRCQC6AgIJALkCAgkAuQICBQJkTwUCZE8FAmRPBQJkRwQCZFIJALoCAgkAuQICCQC3AgIFAmRICQC5AgIFAmRRBQJkegUCZE8JALcCAgkAugICCQC5AgIFAmRJBQJkTwUCZEMJALkCAgUCZEoFAmRRBAJkUwkBAU8BCQC4AgIFAmRSCQEFdmFsdWUBBQJkTwMJAMACAgUBZgUCZFMJAJQKAgUCZFIFAmRNCQCUCgIFAmRSBQR1bml0BAJkVAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJkVQoAAmRWBQJkVAoAAmRXCQCQAwEFAmRWCgACZFgJAJQKAgUCZEUFBHVuaXQKAQJkWQICZFoCZWEDCQBnAgUCZWEFAmRXBQJkWgkBAmRLAgUCZFoJAJEDAgUCZFYFAmVhCgECZWICAmRaAmVhAwkAZwIFAmVhBQJkVwUCZFoJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmViAgkBAmRZAgkBAmRZAgkBAmRZAgkBAmRZAgkBAmRZAgkBAmRZAgkBAmRZAgkBAmRZAgkBAmRZAgkBAmRZAgkBAmRZAgkBAmRZAgkBAmRZAgkBAmRZAgkBAmRZAgUCZFgAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZE8IBQJkVQJfMQQCZFAIBQJkVQJfMgMJAQIhPQIFAmRQBQR1bml0BQJkTwkAAgEJAKwCAgIZRCBjYWxjdWxhdGlvbiBlcnJvciwgRCA9IAkApgMBBQJkTwECZWMDAmR5AmRyAmVkBAJkegUBZwQCZWUJAJEDAgUCZHkDCQAAAgUCZHIAAAABAAAEAmRDCQCnAwEFAWkEAmRECQC5AgIJAKcDAQUCYUMFAmRDBAJkRQUCZWUEAmRGCQC5AgIFAmREBQJkegQCZWYJALoCAgkAuQICCQC5AgIJALoCAgkAuQICBQJlZAUCZWQJALkCAgUCZWUFAmR6BQJlZAUCZEMJALkCAgUCZEYFAmR6BAJlZwkAuAICCQC3AgIFAmRFCQC6AgIJALkCAgUCZWQFAmRDBQJkRgUCZWQKAQJkSwICZEwCZE0EAmVoBQJkTAQCZWkIBQJlaAJfMQQCZFAIBQJlaAJfMgMJAQIhPQIFAmRQBQR1bml0BQJkTAQCZWoJALoCAgkAtwICCQC5AgIFAmVpBQJlaQUCZWYJALcCAgkAuQICBQFnBQJlaQUCZWcEAmVrCQEBTwEJALgCAgUCZWoJAQV2YWx1ZQEFAmVpAwkAwAICBQFmBQJlawkAlAoCBQJlagUCZE0JAJQKAgUCZWoFBHVuaXQEAmRUCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmVsCgACZFYFAmRUCgACZFcJAJADAQUCZFYKAAJkWAkAlAoCBQJlZAUEdW5pdAoBAmRZAgJkWgJlYQMJAGcCBQJlYQUCZFcFAmRaCQECZEsCBQJkWgkAkQMCBQJkVgUCZWEKAQJlYgICZFoCZWEDCQBnAgUCZWEFAmRXBQJkWgkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZWICCQECZFkCCQECZFkCCQECZFkCCQECZFkCCQECZFkCCQECZFkCCQECZFkCCQECZFkCCQECZFkCCQECZFkCCQECZFkCCQECZFkCCQECZFkCCQECZFkCCQECZFkCBQJkWAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJlaQgFAmVsAl8xBAJkUAgFAmVsAl8yAwkBAiE9AgUCZFAFBHVuaXQFAmVpCQACAQkArAICAhlZIGNhbGN1bGF0aW9uIGVycm9yLCBZID0gCQCmAwEFAmVpAQJlbQQCZW4CYlICYlQBWQQCZW8JAQJhRwAEAmJWCQCRAwIFAmVvBQF0BAJiVwkAkQMCBQJlbwUBdQQCYlUJAJEDAgUCZW8FAXMEAmNECQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZW8FAXYEAmNFCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZW8FAXcEAmNiCQECYmUBBQJiVgQCY2QJAQJiZQEFAmJXBAJlcAMJAAACBQFZAgAJAJQKAgUCY2IFAmNkAwkAAAIFAmJSBQJiVgMJAGYCBQJlbgUCY2IJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIJAGUCBQJjYgUCZW4FAmNkAwkAAAIFAmJSBQJiVwMJAGYCBQJlbgUCY2QJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIFAmNiCQBlAgUCY2QFAmVuCQACAQIQd3JvbmcgcG10QXNzZXRJZAQCZXEIBQJlcAJfMQQCZXIIBQJlcAJfMgQCZXMDCQAAAgUCYlIFAmJWCQCUCgIFAmVuAAADCQAAAgUCYlIFAmJXCQCUCgIAAAUCZW4JAAIBAg9pbnZhbGlkIHBheW1lbnQEAmV0CAUCZXMCXzEEAmV1CAUCZXMCXzIEAmV2CAkBAmJNAQUCZXQCXzEEAmV3CAkBAmJNAQUCZXUCXzEEAmJPCAkBAmJNAQUCZW4CXzIEAmV4CQBkAgUCZXEFAmV2BAJleQkAZAIFAmVyBQJldwQCYnIJAQJkeAEJAMwIAgkAtgIBBQJlcQkAzAgCCQC2AgEFAmVyBQNuaWwEAmJxCQECZHgBCQDMCAIJALYCAQUCZXgJAMwIAgkAtgIBBQJleQUDbmlsBAJlegMJAL8CAgUCYnEFAmJyBgkBBXRocm93AAMJAAACBQJlegUCZXoEAmVBCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJiVQIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCZUIDCQC/AgIFAmVBBQFlCQC8AgMFAmVBCQC4AgIFAmJxBQJicgUCYnIJAAIBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zBAJjZwkBAUcCCQECYmcCCQEBRAIFAmV5BQJjRQkBAUQCBQJleAUCY0QFAWEEAmRjCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwAFAmNnCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNnCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFXAgUCYlQFAVkJAQJhUAoFAmV0BQJldQkAoAMBBQJlQgUCY2cAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJlQwkAawMFAmVyBQFhBQJlcQQCZUQJAGsDBQJlbgUBYQkAZAIFAmVDBQFhBAJlRQkAZQIFAmVuBQJlRAQCZUYJALwCAwUCZUEJALYCAQUCZUUJALYCAQUCZXIEAmVHCQCgAwEJALwCAwkAuAICBQJlQgUCZUYFAWIFAmVGCQCWCgQJAKADAQUCZUIFAmRjBQJiTwUCZUcJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmVIBgJlSQJlSgJlSwJkdQJlTAJlTQMJAQIhPQIJAJADAQUCZUsAAQkAAgECCzEgcG1udCBleHBkBAJlbwkBAmFHAAQCYlUJAJEDAgUCZW8FAXMEAmJWCQCRAwIFAmVvBQF0BAJiVwkAkQMCBQJlbwUBdQQCZU4JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlbwUBdgQCZU8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlbwUBdwQCZVAJAJEDAgUCZW8FAXIEAmJUAwkAAAIFAmR1BQR0aGlzBQJlTAUCZHUEAmRzCQEFdmFsdWUBCQCRAwIFAmVLAAAEAmJSCQEFdmFsdWUBCAUCZHMHYXNzZXRJZAQCY3gIBQJkcwZhbW91bnQDCQBmAgCAlOvcAwUCY3gJAAIBAg1NaW4gcG10IDEwIExQBAJiUQkA2AQBBQJlTQMJAQIhPQIFAmJVCQDYBAEFAmJSCQACAQIIV3JvbmcgTFAEAmNiCQECYmUBBQJiVgQCY2QJAQJiZQEFAmJXBAJlUQoAAmVSCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZUkJAMwIAgUCY3gFA25pbAUDbmlsAwkAAQIFAmVSAgooSW50LCBJbnQpBQJlUgkAAgEJAKwCAgkAAwEFAmVSAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJlUwgFAmVRAl8xBAJiTwgFAmVRAl8yBAJlVAMDCQBmAgUCZUoAAAkAZgIFAmVKBQJlUwcJAAIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmVKBQNuaWwCAAUCZVMEAmVVAwkAAAIFAmVJBQJiVgkAlgoEBQJlVAAACQBlAgkAZQIFAmNiBQJlVAUCYk8FAmNkAwkAAAIFAmVJBQJiVwkAlgoEAAAFAmVUBQJjYgkAZQIJAGUCBQJjZAUCZVQFAmJPCQACAQIUaW52YWxpZCBvdXQgYXNzZXQgaWQEAmVWCAUCZVUCXzEEAmVXCAUCZVUCXzIEAmV4CAUCZVUCXzMEAmV5CAUCZVUCXzQEAmVYCQECYmcCCQEBRAIFAmV5BQJlTwkBAUQCBQJleAUCZU4EAmVZCQEBRwIFAmVYBQFhBAJlWgMJAAACBQJlSQIFV0FWRVMFBHVuaXQJANkEAQUCZUkEAmZhAwkAZgIFAmJPAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUYFAmJPBQJlWgUDbmlsBQNuaWwEAmNuCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYlQFAmVUBQJlWgkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIJAKUIAQUCYlQFAmJRCQECYmEGBQJlVgUCZVcFAmN4BQJlWQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJlWQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJlWQUDbmlsBQJmYQMJAAACBQJjbgUCY24EAmZiCQD8BwQFAmFCAgRidXJuCQDMCAIFAmN4BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJSBQJjeAUDbmlsAwkAAAIFAmZiBQJmYgkAlAoCBQJjbgUCZVQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZjAAQCYXYJAKIIAQkBAVEAAwkAAQIFAmF2AgZTdHJpbmcEAmRFBQJhdgkA2QQBBQJkRQMJAAECBQJhdgIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJmZAAEAmF2CQCiCAEJAQFSAAMJAAECBQJhdgIGU3RyaW5nBAJkRQUCYXYJANkEAQUCZEUDCQABAgUCYXYCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACZmUJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECZmYBAmRyBAJhdgkBAmZjAAMJAAECBQJhdgIKQnl0ZVZlY3RvcgQCZmcFAmF2AwkAAAIIBQJkcg9jYWxsZXJQdWJsaWNLZXkFAmZnBgUCZmUDCQABAgUCYXYCBFVuaXQDCQAAAggFAmRyBmNhbGxlcgUEdGhpcwYFAmZlCQACAQILTWF0Y2ggZXJyb3IaAmRyAQtjb25zdHJ1Y3RvcgEBUAQCZWYJAQJmZgEFAmRyAwkAAAIFAmVmBQJlZgkAzAgCCQELU3RyaW5nRW50cnkCCQEBUAAFAVAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcgEKc2V0TWFuYWdlcgECZmgEAmVmCQECZmYBBQJkcgMJAAACBQJlZgUCZWYEAmZpCQDZBAEFAmZoAwkAAAIFAmZpBQJmaQkAzAgCCQELU3RyaW5nRW50cnkCCQEBUgAFAmZoBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHIBDmNvbmZpcm1NYW5hZ2VyAAQCYkwJAQJmZAAEAmZqAwkBCWlzRGVmaW5lZAEFAmJMBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmagUCZmoEAmZrAwkAAAIIBQJkcg9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmJMBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmawUCZmsJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVEACQDYBAEJAQV2YWx1ZQEFAmJMCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFSAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRyAQNwdXQCAmZsAmZtBAJmbgkBAmFLAAQCZm8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmZuBQF6AgpXciBzdCBhZGRyBAJmcAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZm4FAUECCldyIHNsIGFkZHIDCQBmAgAABQJmbAkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUCZHIIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCZnEJAQJkdAoJAKUIAQgFAmRyBmNhbGxlcgkA2AQBCAUCZHINdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJkcghwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJkcghwYXltZW50cwAABmFtb3VudAkAkQMCCAUCZHIIcGF5bWVudHMAAQUCZmwGBwYAAAIABAJjVwgFAmZxAl8yBAJmcggFAmZxAl83BAJjbggFAmZxAl85BAJjWAgFAmZxA18xMAQCY1kIBQJmcQNfMTEEAmJWCAUCZnEDXzEyBAJiVwgFAmZxA18xMwQCY0oJAPwHBAUCYUICBGVtaXQJAMwIAgUCY1cFA25pbAUDbmlsAwkAAAIFAmNKBQJjSgQCZnMEAmF2BQJjSgMJAAECBQJhdgIHQWRkcmVzcwQCZnQFAmF2CQD8BwQFAmZ0AgRlbWl0CQDMCAIFAmNXBQNuaWwFA25pbAUEdW5pdAMJAAACBQJmcwUCZnMEAmZ1AwkAZgIFAmNYAAAJAPwHBAUCZnACA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiVgUCY1gFA25pbAUDbmlsAwkAAAIFAmZ1BQJmdQQCZnYDCQBmAgUCY1kAAAkA/AcEBQJmcAIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJXBQJjWQUDbmlsBQNuaWwDCQAAAgUCZnYFAmZ2BAJmdwMFAmZtBAJmeAkA/AcEBQJmbwIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZnIFAmNXBQNuaWwDCQAAAgUCZngFAmZ4BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRyBmNhbGxlcgUCY1cFAmZyBQNuaWwJAM4IAgUCY24FAmZ3CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRyAQtwdXRPbmVUa25WMgICZUoCZm0DCQECIT0CCQCQAwEIBQJkcghwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEAmVvCQECYUcABAJiVgkAkQMCBQJlbwUBdAQCYlcJAJEDAgUCZW8FAXUEAmJVCQDZBAEJAJEDAgUCZW8FAXMEAmVOCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZW8FAXYEAmVPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZW8FAXcEAmJUAwkAAAIIBQJkcgZjYWxsZXIFBHRoaXMIBQJkcgxvcmlnaW5DYWxsZXIIBQJkcgZjYWxsZXIEAmRzCQEFdmFsdWUBCQCRAwIIBQJkcghwYXltZW50cwAABAJiUgkA2AQBCQEFdmFsdWUBCAUCZHMHYXNzZXRJZAQCY3gIBQJkcwZhbW91bnQDCQBmAgCAreIEBQJjeAkAAgECDVdyb25nIHBtdCBhbXQEAmZ5CQECZW0EBQJjeAUCYlIJAKUIAQUCYlQJANgEAQgFAmRyDXRyYW5zYWN0aW9uSWQEAmZ6CAUCZnkCXzEEAmNuCAUCZnkCXzIEAmJPCAUCZnkCXzMEAmNXAwMJAGYCBQJlSgAACQBmAgUCZUoFAmZ6BwkAAgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZUoFA25pbAIABQJmegQCZnEJAPwHBAUCYUICBGVtaXQJAMwIAgUCY1cFA25pbAUDbmlsAwkAAAIFAmZxBQJmcQQCZnMEAmF2BQJmcQMJAAECBQJhdgIHQWRkcmVzcwQCZnQFAmF2CQD8BwQFAmZ0AgRlbWl0CQDMCAIFAmNXBQNuaWwFA25pbAUEdW5pdAMJAAACBQJmcwUCZnMEAmZ3AwUCZm0EAmZ4CQD8BwQFAmFNAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiVQUCY1cFA25pbAMJAAACBQJmeAUCZngFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZHIGY2FsbGVyBQJjVwUCYlUFA25pbAQCZmEDCQBmAgUCYk8AAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRgUCYk8JANkEAQUCYlIFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCBQJjbgUCZncFAmZhBQJjVwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcgEKcHV0Rm9yRnJlZQECZkEDCQBmAgAABQJmQQkAAgECCldyb25nIHNscGcDCQECIT0CCQCQAwEIBQJkcghwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJmQgkBAmR0CgkApQgBCAUCZHIGY2FsbGVyCQDYBAEIBQJkcg10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmRyCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmRyCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJkcghwYXltZW50cwABBQJmQQcHBgAAAgAIBQJmQgJfOQJkcgEDZ2V0AAQCY0oJAQJkcQEFAmRyBAJmQwgFAmNKAl8xBAJjbQgFAmNKAl8yBAJjeAgFAmNKAl8zBAJiUggFAmNKAl80BAJjbggFAmNKAl81BAJlZwkA/AcEBQJhQgIEYnVybgkAzAgCBQJjeAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiUgUCY3gFA25pbAMJAAACBQJlZwUCZWcFAmNuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRyAQtnZXRPbmVUa25WMgICZUkCZUoEAmZECQECZUgGBQJlSQUCZUoIBQJkcghwYXltZW50cwgFAmRyBmNhbGxlcggFAmRyDG9yaWdpbkNhbGxlcggFAmRyDXRyYW5zYWN0aW9uSWQEAmNuCAUCZkQCXzEEAmVUCAUCZkQCXzIJAJQKAgUCY24FAmVUAmRyARNnZXRPbmVUa25WMlJFQURPTkxZAgJlSQJmRQQCZW8JAQJhRwAEAmJWCQCRAwIFAmVvBQF0BAJiVwkAkQMCBQJlbwUBdQQCYlUJAJEDAgUCZW8FAXMEAmR5CQDMCAIJALYCAQkBAmJlAQUCYlYJAMwIAgkAtgIBCQECYmUBBQJiVwUDbmlsBAJmRgkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCYlUCEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmJyCQECZHgBBQJkeQQCYnEJALgCAgUCYnIJALwCAwkAtgIBBQJmRQUCYnIFAmZGBAJmRwMJAAACBQJlSQUCYlYAAAMJAAACBQJlSQUCYlcAAQkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJmSAkBAmVjAwUCZHkFAmZHBQJicQQCZkkJALgCAgkAkQMCBQJkeQUCZkcFAmZIBAJmSgkAoAMBCQC4AgIFAmZJBQFmBAJmSwkBAmJNAQUCZkoEAmVTCAUCZksCXzEEAmJPCAUCZksCXzIJAJQKAgUDbmlsCQCUCgIFAmVTBQJiTwJkcgEcZ2V0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICZUkCZkUEAmVvCQECYUcABAJiVgkAkQMCBQJlbwUBdAQCYlcJAJEDAgUCZW8FAXUEAmJVCQCRAwIFAmVvBQFzBAJjYgkBAmJlAQUCYlYEAmNkCQECYmUBBQJiVwQCZkwKAAJlUgkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmVJCQDMCAIFAmZFBQNuaWwFA25pbAMJAAECBQJlUgIKKEludCwgSW50KQUCZVIJAAIBCQCsAgIJAAMBBQJlUgIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZVMIBQJmTAJfMQQCYk8IBQJmTAJfMgQCY0oJAQJiUAQCAAUCYlUFAmZFBQR0aGlzBAJjbAgFAmNKAl8xBAJjbQgFAmNKAl8yBAJmTQkAZAIFAmNsBQJjbQQCZUcJAGsDCQBlAgUCZVMFAmZNBQFhBQJmTQkAlAoCBQNuaWwJAJUKAwUCZVMFAmJPBQJlRwJkcgEJZ2V0Tm9MZXNzAgJmTgJmTwQCY0oJAQJkcQEFAmRyBAJjbAgFAmNKAl8xBAJjbQgFAmNKAl8yBAJjeAgFAmNKAl8zBAJiUggFAmNKAl80BAJjbggFAmNKAl81AwkAZgIFAmZOBQJjbAkAAgEJAKwCAgkArAICCQCsAgICCUZhaWxlZDogIAkApAMBBQJjbAIDIDwgCQCkAwEFAmZOAwkAZgIFAmZPBQJjbQkAAgEJAKwCAgkArAICCQCsAgICCEZhaWxlZDogCQCkAwEFAmNtAgMgPCAJAKQDAQUCZk8EAmZQCQD8BwQFAmFCAgRidXJuCQDMCAIFAmN4BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJSBQJjeAUDbmlsAwkAAAIFAmZQBQJmUAUCY24JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHIBDXVuc3Rha2VBbmRHZXQBAmJOBAJmUQMJAQIhPQIJAJADAQgFAmRyCHBheW1lbnRzAAAJAAIBAg1ObyBwbW50cyBleHBkBgMJAAACBQJmUQUCZlEEAmJECQECYUcABAJmUgkBAmFLAAQCZnIJANkEAQkAkQMCBQJiRAUBcwQCZlMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmZSBQF6AgpXciBzdCBhZGRyBAJmVAkA/AcEBQJmUwIHdW5zdGFrZQkAzAgCCQDYBAEFAmZyCQDMCAIFAmJOBQNuaWwFA25pbAMJAAACBQJmVAUCZlQEAmNKCQECYlAECQDYBAEIBQJkcg10cmFuc2FjdGlvbklkCQDYBAEFAmZyBQJiTggFAmRyBmNhbGxlcgQCYloJAQ1wYXJzZUludFZhbHVlAQgFAmNKAl85BAJjbggFAmNKA18xMAQCZlUDAwkBAmFEAAYJAAACBQJiWgUBcAkAAgEJAKwCAgIJQmxvY2tlZDogCQCkAwEFAmJaBgMJAAACBQJmVQUCZlUEAmZWCQD8BwQFAmFCAgRidXJuCQDMCAIFAmJOBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZyBQJiTgUDbmlsAwkAAAIFAmZWBQJmVgUCY24JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHIBFXVuc3Rha2VBbmRHZXRPbmVUa25WMgMCZlcCZUkCZUoEAmZRAwkBAiE9AgkAkAMBCAUCZHIIcGF5bWVudHMAAAkAAgECDU5vIHBtbnRzIGV4cGQGAwkAAAIFAmZRBQJmUQQCYkQJAQJhRwAEAmZSCQECYUsABAJmcgkA2QQBCQCRAwIFAmJEBQFzBAJmUwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZlIFAXoCCldyIHN0IGFkZHIEAmZUCQD8BwQFAmZTAgd1bnN0YWtlCQDMCAIJANgEAQUCZnIJAMwIAgUCZlcFA25pbAUDbmlsAwkAAAIFAmZUBQJmVAQCZlgJAQJlSAYFAmVJBQJlSgkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZnIFAmZXBQNuaWwIBQJkcgZjYWxsZXIIBQJkcgxvcmlnaW5DYWxsZXIIBQJkcg10cmFuc2FjdGlvbklkBAJjbggFAmZYAl8xBAJlVAgFAmZYAl8yCQCUCgIFAmNuBQJlVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcgEccHV0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICZlkCZloEAmVvCQECYUcABAJiVgkAkQMCBQJlbwUBdAQCYlcJAJEDAgUCZW8FAXUEAmJVCQCRAwIFAmVvBQFzBAJnYQkBAmVtBAUCZlkFAmZaAgACAAQCZUIIBQJnYQJfMQQCY24IBQJnYQJfMgQCYk8IBQJnYQJfMwQCZUcIBQJnYQJfNAkAlAoCBQNuaWwJAJUKAwUCZUIFAmJPBQJlRwJkcgEIYWN0aXZhdGUCAmdiAmdjAwkBAiE9AgkApQgBCAUCZHIGY2FsbGVyCQClCAEFAmFCCQACAQIGZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAAUCZ2IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAAUCZ2MFA25pbAIHc3VjY2VzcwJkcgEEc2V0UwICZ2QCZlUDCQECIT0CCQClCAEIBQJkcgZjYWxsZXIJAQJheAIFBHRoaXMJAQJhZAAFAmZlCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmdkBQJmVQUDbmlsAmRyAQRzZXRJAgJnZAJmVQMJAQIhPQIJAKUIAQgFAmRyBmNhbGxlcgkBAmF4AgUEdGhpcwkBAmFkAAUCZmUJAMwIAgkBDEludGVnZXJFbnRyeQIFAmdkBQJmVQUDbmlsAmRyARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhRwACZHIBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJmCQCUCgIFA25pbAkBAmJlAQUCYmYCZHIBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJ4AmJ5AmJDBAJnZQkBAmJCAwUCYngFAmJ5BQJiQwkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmdlAAAJAMwIAgkApgMBCQCRAwIFAmdlAAEJAMwIAgkApgMBCQCRAwIFAmdlAAIFA25pbAJkcgEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBSAJnZgkAlAoCBQNuaWwJAQFHAgkApwMBBQFIBQJnZgJkcgEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUUBRgkAlAoCBQNuaWwJAKYDAQkBAUQCBQFFBQFGAmRyAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmJoAmJpCQCUCgIFA25pbAkApgMBCQECYmcCCQCnAwEFAmJoCQCnAwEFAmJpAmRyASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCYlECYm0CY3ACY3ECY3ICY3MCZ2cCY3QCY3UJAJQKAgUDbmlsCQECY28NBQJiUQUCYm0FAmNwBQJjcQUCY3IFAmNzBQJnZwUCY3QFAmN1BgcAAAIAAmRyASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCYlECZ2gCYlMCZ2cEAmNKCQECYlAEBQJiUQUCZ2gFAmJTCQERQGV4dHJOYXRpdmUoMTA2MikBBQJnZwkAlAoCBQNuaWwJAJwKCggFAmNKAl8xCAUCY0oCXzIIBQJjSgJfMwgFAmNKAl80CAUCY0oCXzUIBQJjSgJfNggFAmNKAl83CQCmAwEIBQJjSgJfOAgFAmNKAl85CAUCY0oDXzEwAmRyAQ5nZXRGZWVSRUFET05MWQAJAJQKAgUDbmlsBQJhZgECZ2kBAmdqAAQCZ2sEAmF2CQECZmMAAwkAAQIFAmF2AgpCeXRlVmVjdG9yBAJmZwUCYXYFAmZnAwkAAQIFAmF2AgRVbml0CAUCZ2kPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmF2BQJnaQMJAAECBQJhdgIFT3JkZXIEAmRlBQJhdgQCZ2wJAQJhRQAEAmdtCQECZGQBBQJkZQQCZ24JAPQDAwgFAmRlCWJvZHlCeXRlcwkAkQMCCAUCZGUGcHJvb2ZzAAAIBQJkZQ9zZW5kZXJQdWJsaWNLZXkEAmdvCQD0AwMIBQJkZQlib2R5Qnl0ZXMJAJEDAggFAmRlBnByb29mcwABBQJnbAMDAwUCZ20FAmduBwUCZ28HBgkBAmFxAwUCZ20FAmduBQJnbwMJAAECBQJhdgIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmRFBQJhdgQCZ3AJAPYDAQkBBXZhbHVlAQgFAmRFBnNjcmlwdAQCZ3EJANsEAQkBBXZhbHVlAQkAnQgCBQJhQgkBAmFvAAQCZ3IJAPEHAQUEdGhpcwMDCQAAAgUCZ3EFAmdwCQECIT0CBQJncgUCZ3AHBgkA9AMDCAUCZ2kJYm9keUJ5dGVzCQCRAwIIBQJnaQZwcm9vZnMAAAUCZ2sJAPQDAwgFAmdpCWJvZHlCeXRlcwkAkQMCCAUCZ2kGcHJvb2ZzAAAFAmdr9/U28Q==", "chainId": 84, "height": 2266073, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2M1F4FYuYAmRxF5umDT7fkao33akzWdcNdxQBRyX5Swc Next: FAQNjYjfntVp77j6RRzQMMvZEx8vSn7Kfgxx5N3PFpxZ Diff:
OldNewDifferences
611611 let eB = if ((eA > e))
612612 then fraction(eA, (bq - br), br)
613613 else throw("initial deposit requires all coins")
614- let cg = G(bg(D(cd, cE), D(cb, cD)), a)
614+ let cg = G(bg(D(ey, cE), D(ex, cD)), a)
615615 let dc = [IntegerEntry(S(), cg), IntegerEntry(T(height, lastBlock.timestamp), cg), StringEntry(W(bT, Y), aP(et, eu, toInt(eB), cg, 0, 0, height, lastBlock.timestamp, 0, 0))]
616616 let eC = fraction(er, a, eq)
617617 let eD = fraction(en, a, (eC + a))
663663 then throw(makeString(["amount to receive is less than ", toString(eJ)], ""))
664664 else eS
665665 let eU = if ((eI == bV))
666- then $Tuple2(eT, 0)
666+ then $Tuple4(eT, 0, ((cb - eT) - bO), cd)
667667 else if ((eI == bW))
668- then $Tuple2(0, eT)
668+ then $Tuple4(0, eT, cb, ((cd - eT) - bO))
669669 else throw("invalid out asset id")
670670 let eV = eU._1
671671 let eW = eU._2
672- let eX = bg(D(cd, eO), D(cb, eN))
672+ let ex = eU._3
673+ let ey = eU._4
674+ let eX = bg(D(ey, eO), D(ex, eN))
673675 let eY = G(eX, a)
674676 let eZ = if ((eI == "WAVES"))
675677 then unit
846848
847849
848850 @Callable(dr)
849-func putOneTkn (fy,fz,fA,bm,fm) = {
850- let bD = aK()
851- let fo = valueOrErrorMessage(addressFromString(bD[z]), "Wr st addr")
852- let fp = valueOrErrorMessage(addressFromString(bD[A]), "Wr sl addr")
853- let fB = valueOrErrorMessage(addressFromString(bD[B]), "Wr gwx addr")
854- let fC = aG()
855- let bV = fC[t]
856- let bW = fC[u]
857- let bX = parseIntValue(fC[v])
858- let bY = parseIntValue(fC[w])
859- let fD = valueOrElse(getString(this, ad()), "")
860- let bT = if ((fD == toString(dr.caller)))
861- then dr.originCaller
862- else dr.caller
863- if (if (if (if ((0 >= bm))
864- then true
865- else (0 >= fy))
866- then true
867- else (0 >= fz))
868- then true
869- else (0 >= fA))
870- then throw("Wrong params")
871- else if ((size(dr.payments) != 1))
872- then throw("1 pmnt expd")
873- else {
874- let ds = value(dr.payments[0])
875- let bR = toBase58String(value(ds.assetId))
876- let fE = ds.amount
877- let fF = bM(fE)
878- let cx = fF._1
879- let bO = fF._2
880- if ((10000000 > fE))
881- then throw("Wrong pmt amt")
882- else {
883- let cb = be(bV)
884- let cd = be(bW)
885- let fG = if ((bR == bV))
886- then if (if ((fE > cb))
887- then true
888- else (fy > cx))
889- then throw("invalid payment amount")
890- else $Tuple6((cb - fE), cd, (cx - fy), fz, 0, 0)
891- else if ((bR == bW))
892- then if (if ((fE > cd))
893- then true
894- else (fz > cx))
895- then throw("invalid payment amount")
896- else $Tuple6(cb, (cd - fE), 0, 0, (cx - fz), fy)
897- else throw("wrong pmtAssetId")
898- let fH = fG._1
899- let fI = fG._2
900- let fJ = fG._3
901- let fK = fG._4
902- let fL = fG._5
903- let fM = fG._6
904- let br = invoke(fB, "calcD", [toString(fH), toString(fI), aC, i, j], nil)
905- let bq = invoke(fB, "calcD", [toString(toBigInt(((fH + fJ) - fM))), toString(toBigInt(((fI + fL) - fK))), aC, i, j], nil)
906- let fN = bp(parseBigIntValue(au(bq)), parseBigIntValue(au(br)), h)
907- if ((fN == fN))
908- then {
909- let fO = dt(toString(dr.caller), toBase58String(dr.transactionId), AttachedPayment(fromBase58String(bV), fy), AttachedPayment(fromBase58String(bW), fz), bm, true, true, true, cx, bR)
910- let fP = fO._2
911- let fr = fO._7
912- let cn = fO._9
913- let cX = fO._10
914- let cY = fO._11
915- let fQ = bj(toBigInt(fP), toBigInt(fA), toBigInt(bm))
916- let cW = toInt(fQ._2)
917- let fq = invoke(aB, "emit", [cW], nil)
918- if ((fq == fq))
919- then {
920- let fs = {
921- let av = fq
922- if ($isInstanceOf(av, "Address"))
923- then {
924- let ft = av
925- invoke(ft, "emit", [cW], nil)
926- }
927- else unit
928- }
929- if ((fs == fs))
930- then {
931- let fu = if ((cX > 0))
932- then invoke(fp, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
933- else nil
934- if ((fu == fu))
935- then {
936- let fv = if ((cY > 0))
937- then invoke(fp, "put", nil, [AttachedPayment(fromBase58String(bW), cY)])
938- else nil
939- if ((fv == fv))
940- then {
941- let fw = if (fm)
942- then {
943- let fx = invoke(fo, "stake", nil, [AttachedPayment(fr, cW)])
944- if ((fx == fx))
945- then nil
946- else throw("Strict value is not equal to itself.")
947- }
948- else [ScriptTransfer(dr.caller, cW, fr)]
949- let fa = if ((bO > 0))
950- then [ScriptTransfer(aF, bO, fromBase58String(bR))]
951- else nil
952- ((cn ++ fw) ++ fa)
953- }
954- else throw("Strict value is not equal to itself.")
955- }
956- else throw("Strict value is not equal to itself.")
957- }
958- else throw("Strict value is not equal to itself.")
959- }
960- else throw("Strict value is not equal to itself.")
961- }
962- else throw("Strict value is not equal to itself.")
963- }
964- }
965- }
966-
967-
968-
969-@Callable(dr)
970851 func putOneTknV2 (eJ,fm) = if ((size(dr.payments) != 1))
971852 then throw("1 pmnt expd")
972853 else {
985866 if ((10000000 > cx))
986867 then throw("Wrong pmt amt")
987868 else {
988- let fR = em(cx, bR, toString(bT), toBase58String(dr.transactionId))
989- let fP = fR._1
990- let cn = fR._2
991- let bO = fR._3
869+ let fy = em(cx, bR, toString(bT), toBase58String(dr.transactionId))
870+ let fz = fy._1
871+ let cn = fy._2
872+ let bO = fy._3
992873 let cW = if (if ((eJ > 0))
993- then (eJ > fP)
874+ then (eJ > fz)
994875 else false)
995876 then throw(makeString(["amount to receive is less than ", toString(eJ)], ""))
996- else fP
877+ else fz
997878 let fq = invoke(aB, "emit", [cW], nil)
998879 if ((fq == fq))
999880 then {
1030911
1031912
1032913 @Callable(dr)
1033-func putForFree (fS) = if ((0 > fS))
914+func putForFree (fA) = if ((0 > fA))
1034915 then throw("Wrong slpg")
1035916 else if ((size(dr.payments) != 2))
1036917 then throw("2 pmnts expd")
1037918 else {
1038- let fO = dt(toString(dr.caller), toBase58String(dr.transactionId), AttachedPayment(value(dr.payments[0]).assetId, value(dr.payments[0]).amount), dr.payments[1], fS, false, false, true, 0, "")
1039- fO._9
919+ let fB = dt(toString(dr.caller), toBase58String(dr.transactionId), AttachedPayment(value(dr.payments[0]).assetId, value(dr.payments[0]).amount), dr.payments[1], fA, false, false, true, 0, "")
920+ fB._9
1040921 }
1041922
1042923
1044925 @Callable(dr)
1045926 func get () = {
1046927 let cJ = dq(dr)
1047- let fT = cJ._1
928+ let fC = cJ._1
1048929 let cm = cJ._2
1049930 let cx = cJ._3
1050931 let bR = cJ._4
1058939
1059940
1060941 @Callable(dr)
1061-func getOneTkn (fU,fV,fW,eI,bm) = if ((size(dr.payments) != 1))
1062- then throw("1 pmnt expd")
1063- else {
1064- let bD = aG()
1065- let bU = bD[s]
1066- let bV = bD[t]
1067- let bW = bD[u]
1068- let bX = parseIntValue(bD[v])
1069- let bY = parseIntValue(bD[w])
1070- let bZ = bD[r]
1071- let fn = aK()
1072- let fB = valueOrErrorMessage(addressFromString(fn[B]), "Wr sl addr")
1073- let ds = value(dr.payments[0])
1074- let fD = valueOrElse(getString(this, ad()), "")
1075- let bT = if ((fD == toString(dr.caller)))
1076- then dr.originCaller
1077- else dr.caller
1078- let bQ = toBase58String(dr.transactionId)
1079- let bR = value(ds.assetId)
1080- let cx = ds.amount
1081- if ((1000000000 > cx))
1082- then throw("Min pmt 10 LP")
1083- else if (if (if ((0 > bm))
1084- then true
1085- else (0 > fU))
1086- then true
1087- else (0 > fW))
1088- then throw("Wrong params")
1089- else if ((bU != toBase58String(bR)))
1090- then throw("Wrong LP")
1091- else {
1092- let cJ = bP(toBase58String(dr.transactionId), toBase58String(bR), cx, dr.caller)
1093- let fX = cJ._1
1094- let fY = cJ._2
1095- let cb = be(bV)
1096- let cd = be(bW)
1097- let fZ = if ((eI == bV))
1098- then $Tuple7((cb - fX), (cd - fY), fU, fY, 0, 0, (fX + fU))
1099- else if ((eI == bW))
1100- then $Tuple7((cb - fX), (cd - fY), 0, 0, fU, fX, (fY + fU))
1101- else throw("wrong outAssetId")
1102- let fH = fZ._1
1103- let fI = fZ._2
1104- let fJ = fZ._3
1105- let fK = fZ._4
1106- let fL = fZ._5
1107- let fM = fZ._6
1108- let ga = fZ._7
1109- if (if ((0 > fJ))
1110- then true
1111- else (0 > fL))
1112- then throw("Wrong calc")
1113- else {
1114- let br = invoke(fB, "calcD", [toString(fH), toString(fI), aC, i, j], nil)
1115- let bq = invoke(fB, "calcD", [toString(((fH - fJ) + fM)), toString(((fI + fK) - fL)), aC, i, j], nil)
1116- let fN = bp(parseBigIntValue(au(bq)), parseBigIntValue(au(br)), h)
1117- if ((fN == fN))
1118- then {
1119- let eS = bM(ga)._1
1120- let gb = bj(toBigInt(eS), toBigInt(fW), toBigInt(bm))
1121- if ((gb == gb))
1122- then {
1123- let gc = if ((eI == bV))
1124- then $Tuple2(toInt(gb._2), 0)
1125- else $Tuple2(0, toInt(gb._2))
1126- let eV = gc._1
1127- let eW = gc._2
1128- let eT = (eV + eW)
1129- let bO = (ga - eS)
1130- let eZ = if ((eI == "WAVES"))
1131- then unit
1132- else fromBase58String(eI)
1133- let fa = if ((bO > 0))
1134- then [ScriptTransfer(aF, bO, eZ)]
1135- else nil
1136- let eX = bg(D(cd, bY), D(cb, bX))
1137- let eY = G(eX, a)
1138- let cn = [ScriptTransfer(bT, eT, eZ), StringEntry(Z(toString(bT), bQ), ba(eV, eW, cx, eY, height, lastBlock.timestamp)), IntegerEntry(S(), eY), IntegerEntry(T(height, lastBlock.timestamp), eY)]
1139- if ((cn == cn))
1140- then {
1141- let fb = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
1142- if ((fb == fb))
1143- then (cn ++ fa)
1144- else throw("Strict value is not equal to itself.")
1145- }
1146- else throw("Strict value is not equal to itself.")
1147- }
1148- else throw("Strict value is not equal to itself.")
1149- }
1150- else throw("Strict value is not equal to itself.")
1151- }
1152- }
1153- }
1154-
1155-
1156-
1157-@Callable(dr)
1158942 func getOneTknV2 (eI,eJ) = {
1159- let gd = eH(eI, eJ, dr.payments, dr.caller, dr.originCaller, dr.transactionId)
1160- let cn = gd._1
1161- let eT = gd._2
943+ let fD = eH(eI, eJ, dr.payments, dr.caller, dr.originCaller, dr.transactionId)
944+ let cn = fD._1
945+ let eT = fD._2
1162946 $Tuple2(cn, eT)
1163947 }
1164948
1165949
1166950
1167951 @Callable(dr)
1168-func getOneTknV2READONLY (eI,ge) = {
952+func getOneTknV2READONLY (eI,fE) = {
1169953 let eo = aG()
1170954 let bV = eo[t]
1171955 let bW = eo[u]
1172956 let bU = eo[s]
1173957 let dy = [toBigInt(be(bV)), toBigInt(be(bW))]
1174- let gf = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bU)), "invalid lp asset").quantity)
958+ let fF = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bU)), "invalid lp asset").quantity)
1175959 let br = dx(dy)
1176- let bq = (br - fraction(toBigInt(ge), br, gf))
1177- let gg = if ((eI == bV))
960+ let bq = (br - fraction(toBigInt(fE), br, fF))
961+ let fG = if ((eI == bV))
1178962 then 0
1179963 else if ((eI == bW))
1180964 then 1
1181965 else throw("invalid out asset id")
1182- let gh = ec(dy, gg, bq)
1183- let gi = (dy[gg] - gh)
1184- let ga = toInt((gi - f))
1185- let gj = bM(ga)
1186- let eS = gj._1
1187- let bO = gj._2
966+ let fH = ec(dy, fG, bq)
967+ let fI = (dy[fG] - fH)
968+ let fJ = toInt((fI - f))
969+ let fK = bM(fJ)
970+ let eS = fK._1
971+ let bO = fK._2
1188972 $Tuple2(nil, $Tuple2(eS, bO))
1189973 }
1190974
1191975
1192976
1193977 @Callable(dr)
1194-func getOneTknV2WithBonusREADONLY (eI,ge) = {
978+func getOneTknV2WithBonusREADONLY (eI,fE) = {
1195979 let eo = aG()
1196980 let bV = eo[t]
1197981 let bW = eo[u]
1198982 let bU = eo[s]
1199983 let cb = be(bV)
1200984 let cd = be(bW)
1201- let gk = {
1202- let eR = invoke(this, "getOneTknV2READONLY", [eI, ge], nil)
985+ let fL = {
986+ let eR = invoke(this, "getOneTknV2READONLY", [eI, fE], nil)
1203987 if ($isInstanceOf(eR, "(Int, Int)"))
1204988 then eR
1205989 else throw(($getType(eR) + " couldn't be cast to (Int, Int)"))
1206990 }
1207- let eS = gk._1
1208- let bO = gk._2
1209- let cJ = bP("", bU, ge, this)
991+ let eS = fL._1
992+ let bO = fL._2
993+ let cJ = bP("", bU, fE, this)
1210994 let cl = cJ._1
1211995 let cm = cJ._2
1212- let gl = (cl + cm)
1213- let eG = fraction((eS - gl), a, gl)
996+ let fM = (cl + cm)
997+ let eG = fraction((eS - fM), a, fM)
1214998 $Tuple2(nil, $Tuple3(eS, bO, eG))
1215999 }
12161000
12171001
12181002
12191003 @Callable(dr)
1220-func getNoLess (gm,gn) = {
1004+func getNoLess (fN,fO) = {
12211005 let cJ = dq(dr)
12221006 let cl = cJ._1
12231007 let cm = cJ._2
12241008 let cx = cJ._3
12251009 let bR = cJ._4
12261010 let cn = cJ._5
1227- if ((gm > cl))
1228- then throw(((("Failed: " + toString(cl)) + " < ") + toString(gm)))
1229- else if ((gn > cm))
1230- then throw(((("Failed: " + toString(cm)) + " < ") + toString(gn)))
1011+ if ((fN > cl))
1012+ then throw(((("Failed: " + toString(cl)) + " < ") + toString(fN)))
1013+ else if ((fO > cm))
1014+ then throw(((("Failed: " + toString(cm)) + " < ") + toString(fO)))
12311015 else {
1232- let go = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
1233- if ((go == go))
1016+ let fP = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
1017+ if ((fP == fP))
12341018 then cn
12351019 else throw("Strict value is not equal to itself.")
12361020 }
12401024
12411025 @Callable(dr)
12421026 func unstakeAndGet (bN) = {
1243- let gp = if ((size(dr.payments) != 0))
1027+ let fQ = if ((size(dr.payments) != 0))
12441028 then throw("No pmnts expd")
12451029 else true
1246- if ((gp == gp))
1030+ if ((fQ == fQ))
12471031 then {
12481032 let bD = aG()
1249- let gq = aK()
1033+ let fR = aK()
12501034 let fr = fromBase58String(bD[s])
1251- let gr = valueOrErrorMessage(addressFromString(gq[z]), "Wr st addr")
1252- let gs = invoke(gr, "unstake", [toBase58String(fr), bN], nil)
1253- if ((gs == gs))
1035+ let fS = valueOrErrorMessage(addressFromString(fR[z]), "Wr st addr")
1036+ let fT = invoke(fS, "unstake", [toBase58String(fr), bN], nil)
1037+ if ((fT == fT))
12541038 then {
12551039 let cJ = bP(toBase58String(dr.transactionId), toBase58String(fr), bN, dr.caller)
12561040 let bZ = parseIntValue(cJ._9)
12571041 let cn = cJ._10
1258- let gt = if (if (aD())
1042+ let fU = if (if (aD())
12591043 then true
12601044 else (bZ == p))
12611045 then throw(("Blocked: " + toString(bZ)))
12621046 else true
1263- if ((gt == gt))
1047+ if ((fU == fU))
12641048 then {
1265- let gu = invoke(aB, "burn", [bN], [AttachedPayment(fr, bN)])
1266- if ((gu == gu))
1049+ let fV = invoke(aB, "burn", [bN], [AttachedPayment(fr, bN)])
1050+ if ((fV == fV))
12671051 then cn
12681052 else throw("Strict value is not equal to itself.")
12691053 }
12771061
12781062
12791063 @Callable(dr)
1280-func unstakeAndGetOneTkn (gv,eI,eJ) = {
1281- let gp = if ((size(dr.payments) != 0))
1064+func unstakeAndGetOneTknV2 (fW,eI,eJ) = {
1065+ let fQ = if ((size(dr.payments) != 0))
12821066 then throw("No pmnts expd")
12831067 else true
1284- if ((gp == gp))
1068+ if ((fQ == fQ))
12851069 then {
12861070 let bD = aG()
1287- let gq = aK()
1071+ let fR = aK()
12881072 let fr = fromBase58String(bD[s])
1289- let gr = valueOrErrorMessage(addressFromString(gq[z]), "Wr st addr")
1290- let gs = invoke(gr, "unstake", [toBase58String(fr), gv], nil)
1291- if ((gs == gs))
1073+ let fS = valueOrErrorMessage(addressFromString(fR[z]), "Wr st addr")
1074+ let fT = invoke(fS, "unstake", [toBase58String(fr), fW], nil)
1075+ if ((fT == fT))
12921076 then {
1293- let gw = eH(eI, eJ, [AttachedPayment(fr, gv)], dr.caller, dr.originCaller, dr.transactionId)
1294- let cn = gw._1
1295- let eT = gw._2
1077+ let fX = eH(eI, eJ, [AttachedPayment(fr, fW)], dr.caller, dr.originCaller, dr.transactionId)
1078+ let cn = fX._1
1079+ let eT = fX._2
12961080 $Tuple2(cn, eT)
12971081 }
12981082 else throw("Strict value is not equal to itself.")
13031087
13041088
13051089 @Callable(dr)
1306-func putOneTknV2WithBonusREADONLY (fE,gx) = {
1090+func putOneTknV2WithBonusREADONLY (fY,fZ) = {
13071091 let eo = aG()
13081092 let bV = eo[t]
13091093 let bW = eo[u]
13101094 let bU = eo[s]
1311- let gy = em(fE, gx, "", "")
1312- let eB = gy._1
1313- let cn = gy._2
1314- let bO = gy._3
1315- let eG = gy._4
1095+ let ga = em(fY, fZ, "", "")
1096+ let eB = ga._1
1097+ let cn = ga._2
1098+ let bO = ga._3
1099+ let eG = ga._4
13161100 $Tuple2(nil, $Tuple3(eB, bO, eG))
13171101 }
13181102
13191103
13201104
13211105 @Callable(dr)
1322-func activate (gz,gA) = if ((toString(dr.caller) != toString(aB)))
1106+func activate (gb,gc) = if ((toString(dr.caller) != toString(aB)))
13231107 then throw("denied")
1324- else $Tuple2([StringEntry(aa(), gz), StringEntry(ab(), gA)], "success")
1108+ else $Tuple2([StringEntry(aa(), gb), StringEntry(ab(), gc)], "success")
13251109
13261110
13271111
13281112 @Callable(dr)
1329-func setS (gB,gt) = if ((toString(dr.caller) != ax(this, ad())))
1113+func setS (gd,fU) = if ((toString(dr.caller) != ax(this, ad())))
13301114 then fe
1331- else [StringEntry(gB, gt)]
1115+ else [StringEntry(gd, fU)]
13321116
13331117
13341118
13351119 @Callable(dr)
1336-func setI (gB,gt) = if ((toString(dr.caller) != ax(this, ad())))
1120+func setI (gd,fU) = if ((toString(dr.caller) != ax(this, ad())))
13371121 then fe
1338- else [IntegerEntry(gB, gt)]
1122+ else [IntegerEntry(gd, fU)]
13391123
13401124
13411125
13511135
13521136 @Callable(dr)
13531137 func calcPricesWrapperREADONLY (bx,by,bC) = {
1354- let gC = bB(bx, by, bC)
1355- $Tuple2(nil, [toString(gC[0]), toString(gC[1]), toString(gC[2])])
1138+ let ge = bB(bx, by, bC)
1139+ $Tuple2(nil, [toString(ge[0]), toString(ge[1]), toString(ge[2])])
13561140 }
13571141
13581142
13591143
13601144 @Callable(dr)
1361-func fromX18WrapperREADONLY (H,gD) = $Tuple2(nil, G(parseBigIntValue(H), gD))
1145+func fromX18WrapperREADONLY (H,gf) = $Tuple2(nil, G(parseBigIntValue(H), gf))
13621146
13631147
13641148
13731157
13741158
13751159 @Callable(dr)
1376-func estimatePutOperationWrapperREADONLY (bQ,bm,cp,cq,cr,cs,gE,ct,cu) = $Tuple2(nil, co(bQ, bm, cp, cq, cr, cs, gE, ct, cu, true, false, 0, ""))
1160+func estimatePutOperationWrapperREADONLY (bQ,bm,cp,cq,cr,cs,gg,ct,cu) = $Tuple2(nil, co(bQ, bm, cp, cq, cr, cs, gg, ct, cu, true, false, 0, ""))
13771161
13781162
13791163
13801164 @Callable(dr)
1381-func estimateGetOperationWrapperREADONLY (bQ,gF,bS,gE) = {
1382- let cJ = bP(bQ, gF, bS, addressFromStringValue(gE))
1165+func estimateGetOperationWrapperREADONLY (bQ,gh,bS,gg) = {
1166+ let cJ = bP(bQ, gh, bS, addressFromStringValue(gg))
13831167 $Tuple2(nil, $Tuple10(cJ._1, cJ._2, cJ._3, cJ._4, cJ._5, cJ._6, cJ._7, toString(cJ._8), cJ._9, cJ._10))
13841168 }
13851169
13891173 func getFeeREADONLY () = $Tuple2(nil, af)
13901174
13911175
1392-@Verifier(gG)
1393-func gH () = {
1394- let gI = {
1176+@Verifier(gi)
1177+func gj () = {
1178+ let gk = {
13951179 let av = fc()
13961180 if ($isInstanceOf(av, "ByteVector"))
13971181 then {
13991183 fg
14001184 }
14011185 else if ($isInstanceOf(av, "Unit"))
1402- then gG.senderPublicKey
1186+ then gi.senderPublicKey
14031187 else throw("Match error")
14041188 }
1405- let av = gG
1189+ let av = gi
14061190 if ($isInstanceOf(av, "Order"))
14071191 then {
14081192 let de = av
1409- let gJ = aE()
1410- let gK = dd(de)
1411- let gL = sigVerify(de.bodyBytes, de.proofs[0], de.senderPublicKey)
1412- let gM = sigVerify(de.bodyBytes, de.proofs[1], gJ)
1413- if (if (if (gK)
1414- then gL
1193+ let gl = aE()
1194+ let gm = dd(de)
1195+ let gn = sigVerify(de.bodyBytes, de.proofs[0], de.senderPublicKey)
1196+ let go = sigVerify(de.bodyBytes, de.proofs[1], gl)
1197+ if (if (if (gm)
1198+ then gn
14151199 else false)
1416- then gM
1200+ then go
14171201 else false)
14181202 then true
1419- else aq(gK, gL, gM)
1203+ else aq(gm, gn, go)
14201204 }
14211205 else if ($isInstanceOf(av, "SetScriptTransaction"))
14221206 then {
14231207 let dE = av
1424- let gN = blake2b256(value(dE.script))
1425- let gO = fromBase64String(value(getString(aB, ao())))
1426- let gP = scriptHash(this)
1427- if (if ((gO == gN))
1428- then (gP != gN)
1208+ let gp = blake2b256(value(dE.script))
1209+ let gq = fromBase64String(value(getString(aB, ao())))
1210+ let gr = scriptHash(this)
1211+ if (if ((gq == gp))
1212+ then (gr != gp)
14291213 else false)
14301214 then true
1431- else sigVerify(gG.bodyBytes, gG.proofs[0], gI)
1215+ else sigVerify(gi.bodyBytes, gi.proofs[0], gk)
14321216 }
1433- else sigVerify(gG.bodyBytes, gG.proofs[0], gI)
1217+ else sigVerify(gi.bodyBytes, gi.proofs[0], gk)
14341218 }
14351219
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 = "100"
2121
2222 let j = "1"
2323
2424 let k = "__"
2525
2626 let l = ""
2727
2828 let m = 1
2929
3030 let n = 2
3131
3232 let o = 3
3333
3434 let p = 4
3535
3636 let q = 1
3737
3838 let r = 2
3939
4040 let s = 3
4141
4242 let t = 4
4343
4444 let u = 5
4545
4646 let v = 6
4747
4848 let w = 7
4949
5050 let x = 8
5151
5252 let y = 9
5353
5454 let z = 1
5555
5656 let A = 7
5757
5858 let B = 10
5959
6060 let C = fraction(5, a, 10000)
6161
6262 func D (E,F) = fraction(toBigInt(E), c, toBigInt(F))
6363
6464
6565 func G (H,I) = toInt(fraction(H, toBigInt(I), c))
6666
6767
6868 func J (K,L,M) = fraction(K, L, M)
6969
7070
7171 func N (H) = if ((d > H))
7272 then -(H)
7373 else H
7474
7575
7676 func O (H) = if ((d > H))
7777 then -(H)
7878 else H
7979
8080
8181 func P () = "%s__factoryContract"
8282
8383
8484 func Q () = "%s__managerPublicKey"
8585
8686
8787 func R () = "%s__pendingManagerPublicKey"
8888
8989
9090 func S () = "%s%s__price__last"
9191
9292
9393 func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], k)
9494
9595
9696 func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
9797
9898
9999 func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
100100
101101
102102 func aa () = "%s__amountAsset"
103103
104104
105105 func ab () = "%s__priceAsset"
106106
107107
108108 func ac () = "%s__amp"
109109
110110
111111 func ad () = "%s__addonAddr"
112112
113113
114114 let ae = "%s__fee"
115115
116116 let af = valueOrElse(getInteger(this, ae), C)
117117
118118 func ag () = "%s__factoryConfig"
119119
120120
121121 func ah () = "%s%s__matcher__publicKey"
122122
123123
124124 func ai (aj,ak) = (((("%d%d%s__" + aj) + "__") + ak) + "__config")
125125
126126
127127 func al (am) = ("%s%s%s__mappings__baseAsset2internalId__" + am)
128128
129129
130130 func an () = "%s__shutdown"
131131
132132
133133 func ao () = "%s__allowedLpStableScriptHash"
134134
135135
136136 func ap () = "%s__feeCollectorAddress"
137137
138138
139139 func aq (ar,as,at) = throw(((((("Failed: ordValid=" + toString(ar)) + " sndrValid=") + toString(as)) + " mtchrValid=") + toString(at)))
140140
141141
142142 func au (H) = {
143143 let av = H
144144 if ($isInstanceOf(av, "String"))
145145 then {
146146 let aw = av
147147 aw
148148 }
149149 else throw("fail cast to String")
150150 }
151151
152152
153153 func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
154154
155155
156156 func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
157157
158158
159159 let aB = addressFromStringValue(ax(this, P()))
160160
161161 let aC = ax(this, ac())
162162
163163 func aD () = valueOrElse(getBoolean(aB, an()), false)
164164
165165
166166 func aE () = fromBase58String(ax(aB, ah()))
167167
168168
169169 let aF = addressFromStringValue(ax(aB, ap()))
170170
171171 func aG () = {
172172 let aH = ax(this, aa())
173173 let aI = ax(this, ab())
174174 let aJ = aA(aB, al(aI))
175175 let aj = aA(aB, al(aH))
176176 split(ax(aB, ai(toString(aj), toString(aJ))), k)
177177 }
178178
179179
180180 func aK () = split(ax(aB, ag()), k)
181181
182182
183183 let aL = aK()
184184
185185 let aM = valueOrErrorMessage(addressFromString(aL[z]), "Invalid staking contract address")
186186
187187 let aN = valueOrErrorMessage(addressFromString(aL[A]), "Invalid slipage contract address")
188188
189189 let aO = valueOrErrorMessage(addressFromString(aL[B]), "Invalid gwx contract address")
190190
191191 func aP (aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(aW), toString(aX), toString(aY), toString(aZ)], k)
192192
193193
194194 func ba (bb,bc,bd,aT,aW,aX) = makeString(["%d%d%d%d%d%d", toString(bb), toString(bc), toString(bd), toString(aT), toString(aW), toString(aX)], k)
195195
196196
197197 func be (bf) = if ((bf == "WAVES"))
198198 then wavesBalance(this).available
199199 else assetBalance(this, fromBase58String(bf))
200200
201201
202202 func bg (bh,bi) = fraction(bh, c, bi)
203203
204204
205205 func bj (bk,bl,bm) = {
206206 let bn = fraction((bk - bl), b, bl)
207207 let bo = ((bm - N(bn)) > d)
208208 if (!(bo))
209209 then throw(("Big slpg: " + toString(bn)))
210210 else $Tuple2(bo, min([bk, bl]))
211211 }
212212
213213
214214 func bp (bq,br,bs) = {
215215 let bn = fraction(br, b, bq)
216216 let bt = (bs > bn)
217217 if (if (bt)
218218 then true
219219 else (br > bq))
220220 then throw(((((((toString(br) + " ") + toString(bq)) + " ") + toString(bn)) + " ") + toString(bs)))
221221 else bt
222222 }
223223
224224
225225 func bu (bv,bw,bx,by) = {
226226 let bz = D(bx, bv)
227227 let bA = D(by, bw)
228228 bg(bA, bz)
229229 }
230230
231231
232232 func bB (bx,by,bC) = {
233233 let bD = aG()
234234 let bE = parseIntValue(bD[v])
235235 let bF = parseIntValue(bD[w])
236236 let bG = bu(bE, bF, bx, by)
237237 let bi = D(bx, bE)
238238 let bh = D(by, bF)
239239 let bH = D(bC, a)
240240 let bI = bg(bi, bH)
241241 let bJ = bg(bh, bH)
242242 [bG, bI, bJ]
243243 }
244244
245245
246246 func bK (bx,by,bC) = {
247247 let bL = bB(bx, by, bC)
248248 [G(bL[0], a), G(bL[1], a), G(bL[2], a)]
249249 }
250250
251251
252252 func bM (bN) = {
253253 let bO = fraction(bN, af, a)
254254 $Tuple2((bN - bO), bO)
255255 }
256256
257257
258258 func bP (bQ,bR,bS,bT) = {
259259 let bD = aG()
260260 let bU = bD[s]
261261 let bV = bD[t]
262262 let bW = bD[u]
263263 let bX = parseIntValue(bD[v])
264264 let bY = parseIntValue(bD[w])
265265 let bZ = bD[r]
266266 let ca = valueOrErrorMessage(assetInfo(fromBase58String(bU)), "Wrong LP id").quantity
267267 if ((bU != bR))
268268 then throw("Wrong pmt asset")
269269 else {
270270 let cb = be(bV)
271271 let cc = D(cb, bX)
272272 let cd = be(bW)
273273 let ce = D(cd, bY)
274274 let cf = bg(ce, cc)
275275 let cg = G(cf, a)
276276 let ch = D(bS, a)
277277 let ci = D(ca, a)
278278 let cj = fraction(cc, ch, ci)
279279 let ck = fraction(ce, ch, ci)
280280 let cl = G(cj, bX)
281281 let cm = G(ck, bY)
282282 let cn = if ((bQ == ""))
283283 then nil
284284 else [ScriptTransfer(bT, cl, if ((bV == "WAVES"))
285285 then unit
286286 else fromBase58String(bV)), ScriptTransfer(bT, cm, if ((bW == "WAVES"))
287287 then unit
288288 else fromBase58String(bW)), StringEntry(Z(toString(bT), bQ), ba(cl, cm, bS, cg, height, lastBlock.timestamp)), IntegerEntry(S(), cg), IntegerEntry(T(height, lastBlock.timestamp), cg)]
289289 $Tuple10(cl, cm, bV, bW, cb, cd, ca, cf, bZ, cn)
290290 }
291291 }
292292
293293
294294 func co (bQ,bm,cp,cq,cr,cs,bT,ct,cu,cv,cw,cx,cy) = {
295295 let bD = aG()
296296 let bU = fromBase58String(bD[s])
297297 let cz = bD[t]
298298 let cA = bD[u]
299299 let cB = bD[x]
300300 let cC = bD[y]
301301 let cD = parseIntValue(bD[v])
302302 let cE = parseIntValue(bD[w])
303303 let bZ = bD[r]
304304 let cF = valueOrErrorMessage(assetInfo(bU), "Wr lp as").quantity
305305 let cb = if (ct)
306306 then be(cz)
307307 else if (if (cv)
308308 then (cy == cz)
309309 else false)
310310 then (be(cz) - cx)
311311 else if (cv)
312312 then be(cz)
313313 else (be(cz) - cp)
314314 let cd = if (ct)
315315 then be(cA)
316316 else if (if (cv)
317317 then (cy == cA)
318318 else false)
319319 then (be(cA) - cx)
320320 else if (cv)
321321 then be(cA)
322322 else (be(cA) - cr)
323323 let cG = D(cp, cD)
324324 let cH = D(cr, cE)
325325 let cI = bg(cH, cG)
326326 let cc = D(cb, cD)
327327 let ce = D(cd, cE)
328328 let cJ = if ((cF == 0))
329329 then {
330330 let cf = d
331331 let cK = d
332332 let bH = pow((cG * cH), 0, toBigInt(5), 1, 0, DOWN)
333333 $Tuple5(G(bH, a), G(cG, cD), G(cH, cE), bg((ce + cH), (cc + cG)), cK)
334334 }
335335 else {
336336 let cf = bg(ce, cc)
337337 let cL = fraction(N((cf - cI)), c, cf)
338338 let cK = D(bm, a)
339339 if (if (if (cw)
340340 then (cf != d)
341341 else false)
342342 then (cL > cK)
343343 else false)
344344 then throw(((("Price slippage " + toString(cL)) + " > ") + toString(cK)))
345345 else {
346346 let cM = D(cF, a)
347347 let cN = fraction(cG, cf, c)
348348 let cO = fraction(cH, c, cf)
349349 let cP = if ((cN > cH))
350350 then $Tuple2(cO, cH)
351351 else $Tuple2(cG, cN)
352352 let cQ = cP._1
353353 let cR = cP._2
354354 let bH = fraction(cM, cR, ce)
355355 $Tuple5(G(bH, a), G(cQ, cD), G(cR, cE), cf, cK)
356356 }
357357 }
358358 let cS = cJ._1
359359 let cT = cJ._2
360360 let cU = cJ._3
361361 let cg = G(cJ._4, a)
362362 let cV = G(cJ._5, a)
363363 if ((0 >= cS))
364364 then throw("LP <= 0")
365365 else {
366366 let cW = if (!(cu))
367367 then 0
368368 else cS
369369 let cX = (cp - cT)
370370 let cY = (cr - cU)
371371 let cZ = if (if (cv)
372372 then (cy == cz)
373373 else false)
374374 then $Tuple2(cx, 0)
375375 else if (if (cv)
376376 then (cy == cA)
377377 else false)
378378 then $Tuple2(0, cx)
379379 else $Tuple2(cT, cU)
380380 let da = cZ._1
381381 let db = cZ._2
382382 let dc = [IntegerEntry(S(), cg), IntegerEntry(T(height, lastBlock.timestamp), cg), StringEntry(W(bT, bQ), aP(da, db, cW, cg, bm, cV, height, lastBlock.timestamp, cX, cY))]
383383 $Tuple13(cS, cW, cg, cb, cd, cF, bU, bZ, dc, cX, cY, cq, cs)
384384 }
385385 }
386386
387387
388388 func dd (de) = {
389389 let bD = aG()
390390 let df = bD[t]
391391 let dg = bD[u]
392392 let bZ = parseIntValue(bD[r])
393393 let bE = parseIntValue(bD[v])
394394 let bF = parseIntValue(bD[w])
395395 let dh = be(df)
396396 let di = be(dg)
397397 let cf = if ((de.orderType == Buy))
398398 then bu(bE, bF, (dh + de.amount), di)
399399 else bu(bE, bF, (dh - de.amount), di)
400400 let cg = G(cf, a)
401401 if (if (if (aD())
402402 then true
403403 else (bZ == o))
404404 then true
405405 else (bZ == p))
406406 then throw("Admin blocked")
407407 else {
408408 let dj = de.assetPair.amountAsset
409409 let dk = if ((dj == unit))
410410 then "WAVES"
411411 else toBase58String(value(dj))
412412 let dl = de.assetPair.priceAsset
413413 let dm = if ((dl == unit))
414414 then "WAVES"
415415 else toBase58String(value(dl))
416416 if (if ((dk != df))
417417 then true
418418 else (dm != dg))
419419 then throw("Wr assets")
420420 else {
421421 let dn = de.price
422422 let cE = fraction(a, bF, bE)
423423 let do = J(dn, a, cE)
424424 let dp = if ((de.orderType == Buy))
425425 then (cg >= do)
426426 else (do >= cg)
427427 true
428428 }
429429 }
430430 }
431431
432432
433433 func dq (dr) = if ((size(dr.payments) != 1))
434434 then throw("1 pmnt exp")
435435 else {
436436 let ds = value(dr.payments[0])
437437 let bR = value(ds.assetId)
438438 let cx = ds.amount
439439 let cJ = bP(toBase58String(dr.transactionId), toBase58String(bR), cx, dr.caller)
440440 let cl = cJ._1
441441 let cm = cJ._2
442442 let bZ = parseIntValue(cJ._9)
443443 let cn = cJ._10
444444 if (if (aD())
445445 then true
446446 else (bZ == p))
447447 then throw(("Admin blocked: " + toString(bZ)))
448448 else $Tuple5(cl, cm, cx, bR, cn)
449449 }
450450
451451
452452 func dt (du,Y,dv,dw,bm,cu,cv,cw,cx,cy) = {
453453 let cJ = co(Y, bm, value(dv).amount, value(dv).assetId, value(dw).amount, value(dw).assetId, du, (Y == ""), cu, cv, cw, cx, cy)
454454 let bZ = parseIntValue(cJ._8)
455455 if (if (if (aD())
456456 then true
457457 else (bZ == n))
458458 then true
459459 else (bZ == p))
460460 then throw(("Blocked:" + toString(bZ)))
461461 else cJ
462462 }
463463
464464
465465 func dx (dy) = {
466466 let dz = g
467467 let dA = dy[0]
468468 let dB = dy[1]
469469 let dC = parseBigIntValue(i)
470470 let dD = (parseBigIntValue(aC) * dC)
471471 let dE = (dA + dB)
472472 if ((dE == e))
473473 then e
474474 else {
475475 let dF = (dD * dz)
476476 let dG = (((dA * dB) * dz) * dz)
477477 let dH = ((dF * dE) / dC)
478478 let dI = (dF - dC)
479479 let dJ = (dz + f)
480480 func dK (dL,dM) = {
481481 let dN = dL
482482 let dO = dN._1
483483 let dP = dN._2
484484 if ((dP != unit))
485485 then dL
486486 else {
487487 let dQ = (((dO * dO) * dO) / dG)
488488 let dR = (((dH + (dQ * dz)) * dO) / (((dI * dO) / dC) + (dJ * dQ)))
489489 let dS = O((dR - value(dO)))
490490 if ((f >= dS))
491491 then $Tuple2(dR, dM)
492492 else $Tuple2(dR, unit)
493493 }
494494 }
495495
496496 let dT = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
497497 let dU = {
498498 let dV = dT
499499 let dW = size(dV)
500500 let dX = $Tuple2(dE, unit)
501501 func dY (dZ,ea) = if ((ea >= dW))
502502 then dZ
503503 else dK(dZ, dV[ea])
504504
505505 func eb (dZ,ea) = if ((ea >= dW))
506506 then dZ
507507 else throw("List size exceeds 15")
508508
509509 eb(dY(dY(dY(dY(dY(dY(dY(dY(dY(dY(dY(dY(dY(dY(dY(dX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
510510 }
511511 let dO = dU._1
512512 let dP = dU._2
513513 if ((dP != unit))
514514 then dO
515515 else throw(("D calculation error, D = " + toString(dO)))
516516 }
517517 }
518518
519519
520520 func ec (dy,dr,ed) = {
521521 let dz = g
522522 let ee = dy[if ((dr == 0))
523523 then 1
524524 else 0]
525525 let dC = parseBigIntValue(i)
526526 let dD = (parseBigIntValue(aC) * dC)
527527 let dE = ee
528528 let dF = (dD * dz)
529529 let ef = (((((ed * ed) / (ee * dz)) * ed) * dC) / (dF * dz))
530530 let eg = ((dE + ((ed * dC) / dF)) - ed)
531531 func dK (dL,dM) = {
532532 let eh = dL
533533 let ei = eh._1
534534 let dP = eh._2
535535 if ((dP != unit))
536536 then dL
537537 else {
538538 let ej = (((ei * ei) + ef) / ((g * ei) + eg))
539539 let ek = O((ej - value(ei)))
540540 if ((f >= ek))
541541 then $Tuple2(ej, dM)
542542 else $Tuple2(ej, unit)
543543 }
544544 }
545545
546546 let dT = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
547547 let el = {
548548 let dV = dT
549549 let dW = size(dV)
550550 let dX = $Tuple2(ed, unit)
551551 func dY (dZ,ea) = if ((ea >= dW))
552552 then dZ
553553 else dK(dZ, dV[ea])
554554
555555 func eb (dZ,ea) = if ((ea >= dW))
556556 then dZ
557557 else throw("List size exceeds 15")
558558
559559 eb(dY(dY(dY(dY(dY(dY(dY(dY(dY(dY(dY(dY(dY(dY(dY(dX, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
560560 }
561561 let ei = el._1
562562 let dP = el._2
563563 if ((dP != unit))
564564 then ei
565565 else throw(("Y calculation error, Y = " + toString(ei)))
566566 }
567567
568568
569569 func em (en,bR,bT,Y) = {
570570 let eo = aG()
571571 let bV = eo[t]
572572 let bW = eo[u]
573573 let bU = eo[s]
574574 let cD = parseIntValue(eo[v])
575575 let cE = parseIntValue(eo[w])
576576 let cb = be(bV)
577577 let cd = be(bW)
578578 let ep = if ((Y == ""))
579579 then $Tuple2(cb, cd)
580580 else if ((bR == bV))
581581 then if ((en > cb))
582582 then throw("invalid payment amount")
583583 else $Tuple2((cb - en), cd)
584584 else if ((bR == bW))
585585 then if ((en > cd))
586586 then throw("invalid payment amount")
587587 else $Tuple2(cb, (cd - en))
588588 else throw("wrong pmtAssetId")
589589 let eq = ep._1
590590 let er = ep._2
591591 let es = if ((bR == bV))
592592 then $Tuple2(en, 0)
593593 else if ((bR == bW))
594594 then $Tuple2(0, en)
595595 else throw("invalid payment")
596596 let et = es._1
597597 let eu = es._2
598598 let ev = bM(et)._1
599599 let ew = bM(eu)._1
600600 let bO = bM(en)._2
601601 let ex = (eq + ev)
602602 let ey = (er + ew)
603603 let br = dx([toBigInt(eq), toBigInt(er)])
604604 let bq = dx([toBigInt(ex), toBigInt(ey)])
605605 let ez = if ((bq > br))
606606 then true
607607 else throw()
608608 if ((ez == ez))
609609 then {
610610 let eA = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bU)), "invalid lp asset").quantity)
611611 let eB = if ((eA > e))
612612 then fraction(eA, (bq - br), br)
613613 else throw("initial deposit requires all coins")
614- let cg = G(bg(D(cd, cE), D(cb, cD)), a)
614+ let cg = G(bg(D(ey, cE), D(ex, cD)), a)
615615 let dc = [IntegerEntry(S(), cg), IntegerEntry(T(height, lastBlock.timestamp), cg), StringEntry(W(bT, Y), aP(et, eu, toInt(eB), cg, 0, 0, height, lastBlock.timestamp, 0, 0))]
616616 let eC = fraction(er, a, eq)
617617 let eD = fraction(en, a, (eC + a))
618618 let eE = (en - eD)
619619 let eF = fraction(eA, toBigInt(eE), toBigInt(er))
620620 let eG = toInt(fraction((eB - eF), b, eF))
621621 $Tuple4(toInt(eB), dc, bO, eG)
622622 }
623623 else throw("Strict value is not equal to itself.")
624624 }
625625
626626
627627 func eH (eI,eJ,eK,du,eL,eM) = if ((size(eK) != 1))
628628 then throw("1 pmnt expd")
629629 else {
630630 let eo = aG()
631631 let bU = eo[s]
632632 let bV = eo[t]
633633 let bW = eo[u]
634634 let eN = parseIntValue(eo[v])
635635 let eO = parseIntValue(eo[w])
636636 let eP = eo[r]
637637 let bT = if ((du == this))
638638 then eL
639639 else du
640640 let ds = value(eK[0])
641641 let bR = value(ds.assetId)
642642 let cx = ds.amount
643643 if ((1000000000 > cx))
644644 then throw("Min pmt 10 LP")
645645 else {
646646 let bQ = toBase58String(eM)
647647 if ((bU != toBase58String(bR)))
648648 then throw("Wrong LP")
649649 else {
650650 let cb = be(bV)
651651 let cd = be(bW)
652652 let eQ = {
653653 let eR = invoke(this, "getOneTknV2READONLY", [eI, cx], nil)
654654 if ($isInstanceOf(eR, "(Int, Int)"))
655655 then eR
656656 else throw(($getType(eR) + " couldn't be cast to (Int, Int)"))
657657 }
658658 let eS = eQ._1
659659 let bO = eQ._2
660660 let eT = if (if ((eJ > 0))
661661 then (eJ > eS)
662662 else false)
663663 then throw(makeString(["amount to receive is less than ", toString(eJ)], ""))
664664 else eS
665665 let eU = if ((eI == bV))
666- then $Tuple2(eT, 0)
666+ then $Tuple4(eT, 0, ((cb - eT) - bO), cd)
667667 else if ((eI == bW))
668- then $Tuple2(0, eT)
668+ then $Tuple4(0, eT, cb, ((cd - eT) - bO))
669669 else throw("invalid out asset id")
670670 let eV = eU._1
671671 let eW = eU._2
672- let eX = bg(D(cd, eO), D(cb, eN))
672+ let ex = eU._3
673+ let ey = eU._4
674+ let eX = bg(D(ey, eO), D(ex, eN))
673675 let eY = G(eX, a)
674676 let eZ = if ((eI == "WAVES"))
675677 then unit
676678 else fromBase58String(eI)
677679 let fa = if ((bO > 0))
678680 then [ScriptTransfer(aF, bO, eZ)]
679681 else nil
680682 let cn = ([ScriptTransfer(bT, eT, eZ), StringEntry(Z(toString(bT), bQ), ba(eV, eW, cx, eY, height, lastBlock.timestamp)), IntegerEntry(S(), eY), IntegerEntry(T(height, lastBlock.timestamp), eY)] ++ fa)
681683 if ((cn == cn))
682684 then {
683685 let fb = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
684686 if ((fb == fb))
685687 then $Tuple2(cn, eT)
686688 else throw("Strict value is not equal to itself.")
687689 }
688690 else throw("Strict value is not equal to itself.")
689691 }
690692 }
691693 }
692694
693695
694696 func fc () = {
695697 let av = getString(Q())
696698 if ($isInstanceOf(av, "String"))
697699 then {
698700 let dE = av
699701 fromBase58String(dE)
700702 }
701703 else if ($isInstanceOf(av, "Unit"))
702704 then unit
703705 else throw("Match error")
704706 }
705707
706708
707709 func fd () = {
708710 let av = getString(R())
709711 if ($isInstanceOf(av, "String"))
710712 then {
711713 let dE = av
712714 fromBase58String(dE)
713715 }
714716 else if ($isInstanceOf(av, "Unit"))
715717 then unit
716718 else throw("Match error")
717719 }
718720
719721
720722 let fe = throw("Permission denied")
721723
722724 func ff (dr) = {
723725 let av = fc()
724726 if ($isInstanceOf(av, "ByteVector"))
725727 then {
726728 let fg = av
727729 if ((dr.callerPublicKey == fg))
728730 then true
729731 else fe
730732 }
731733 else if ($isInstanceOf(av, "Unit"))
732734 then if ((dr.caller == this))
733735 then true
734736 else fe
735737 else throw("Match error")
736738 }
737739
738740
739741 @Callable(dr)
740742 func constructor (P) = {
741743 let ef = ff(dr)
742744 if ((ef == ef))
743745 then [StringEntry(P(), P)]
744746 else throw("Strict value is not equal to itself.")
745747 }
746748
747749
748750
749751 @Callable(dr)
750752 func setManager (fh) = {
751753 let ef = ff(dr)
752754 if ((ef == ef))
753755 then {
754756 let fi = fromBase58String(fh)
755757 if ((fi == fi))
756758 then [StringEntry(R(), fh)]
757759 else throw("Strict value is not equal to itself.")
758760 }
759761 else throw("Strict value is not equal to itself.")
760762 }
761763
762764
763765
764766 @Callable(dr)
765767 func confirmManager () = {
766768 let bL = fd()
767769 let fj = if (isDefined(bL))
768770 then true
769771 else throw("No pending manager")
770772 if ((fj == fj))
771773 then {
772774 let fk = if ((dr.callerPublicKey == value(bL)))
773775 then true
774776 else throw("You are not pending manager")
775777 if ((fk == fk))
776778 then [StringEntry(Q(), toBase58String(value(bL))), DeleteEntry(R())]
777779 else throw("Strict value is not equal to itself.")
778780 }
779781 else throw("Strict value is not equal to itself.")
780782 }
781783
782784
783785
784786 @Callable(dr)
785787 func put (fl,fm) = {
786788 let fn = aK()
787789 let fo = valueOrErrorMessage(addressFromString(fn[z]), "Wr st addr")
788790 let fp = valueOrErrorMessage(addressFromString(fn[A]), "Wr sl addr")
789791 if ((0 > fl))
790792 then throw("Wrong slippage")
791793 else if ((size(dr.payments) != 2))
792794 then throw("2 pmnts expd")
793795 else {
794796 let fq = dt(toString(dr.caller), toBase58String(dr.transactionId), AttachedPayment(value(dr.payments[0]).assetId, value(dr.payments[0]).amount), dr.payments[1], fl, true, false, true, 0, "")
795797 let cW = fq._2
796798 let fr = fq._7
797799 let cn = fq._9
798800 let cX = fq._10
799801 let cY = fq._11
800802 let bV = fq._12
801803 let bW = fq._13
802804 let cJ = invoke(aB, "emit", [cW], nil)
803805 if ((cJ == cJ))
804806 then {
805807 let fs = {
806808 let av = cJ
807809 if ($isInstanceOf(av, "Address"))
808810 then {
809811 let ft = av
810812 invoke(ft, "emit", [cW], nil)
811813 }
812814 else unit
813815 }
814816 if ((fs == fs))
815817 then {
816818 let fu = if ((cX > 0))
817819 then invoke(fp, "put", nil, [AttachedPayment(bV, cX)])
818820 else nil
819821 if ((fu == fu))
820822 then {
821823 let fv = if ((cY > 0))
822824 then invoke(fp, "put", nil, [AttachedPayment(bW, cY)])
823825 else nil
824826 if ((fv == fv))
825827 then {
826828 let fw = if (fm)
827829 then {
828830 let fx = invoke(fo, "stake", nil, [AttachedPayment(fr, cW)])
829831 if ((fx == fx))
830832 then nil
831833 else throw("Strict value is not equal to itself.")
832834 }
833835 else [ScriptTransfer(dr.caller, cW, fr)]
834836 (cn ++ fw)
835837 }
836838 else throw("Strict value is not equal to itself.")
837839 }
838840 else throw("Strict value is not equal to itself.")
839841 }
840842 else throw("Strict value is not equal to itself.")
841843 }
842844 else throw("Strict value is not equal to itself.")
843845 }
844846 }
845847
846848
847849
848850 @Callable(dr)
849-func putOneTkn (fy,fz,fA,bm,fm) = {
850- let bD = aK()
851- let fo = valueOrErrorMessage(addressFromString(bD[z]), "Wr st addr")
852- let fp = valueOrErrorMessage(addressFromString(bD[A]), "Wr sl addr")
853- let fB = valueOrErrorMessage(addressFromString(bD[B]), "Wr gwx addr")
854- let fC = aG()
855- let bV = fC[t]
856- let bW = fC[u]
857- let bX = parseIntValue(fC[v])
858- let bY = parseIntValue(fC[w])
859- let fD = valueOrElse(getString(this, ad()), "")
860- let bT = if ((fD == toString(dr.caller)))
861- then dr.originCaller
862- else dr.caller
863- if (if (if (if ((0 >= bm))
864- then true
865- else (0 >= fy))
866- then true
867- else (0 >= fz))
868- then true
869- else (0 >= fA))
870- then throw("Wrong params")
871- else if ((size(dr.payments) != 1))
872- then throw("1 pmnt expd")
873- else {
874- let ds = value(dr.payments[0])
875- let bR = toBase58String(value(ds.assetId))
876- let fE = ds.amount
877- let fF = bM(fE)
878- let cx = fF._1
879- let bO = fF._2
880- if ((10000000 > fE))
881- then throw("Wrong pmt amt")
882- else {
883- let cb = be(bV)
884- let cd = be(bW)
885- let fG = if ((bR == bV))
886- then if (if ((fE > cb))
887- then true
888- else (fy > cx))
889- then throw("invalid payment amount")
890- else $Tuple6((cb - fE), cd, (cx - fy), fz, 0, 0)
891- else if ((bR == bW))
892- then if (if ((fE > cd))
893- then true
894- else (fz > cx))
895- then throw("invalid payment amount")
896- else $Tuple6(cb, (cd - fE), 0, 0, (cx - fz), fy)
897- else throw("wrong pmtAssetId")
898- let fH = fG._1
899- let fI = fG._2
900- let fJ = fG._3
901- let fK = fG._4
902- let fL = fG._5
903- let fM = fG._6
904- let br = invoke(fB, "calcD", [toString(fH), toString(fI), aC, i, j], nil)
905- let bq = invoke(fB, "calcD", [toString(toBigInt(((fH + fJ) - fM))), toString(toBigInt(((fI + fL) - fK))), aC, i, j], nil)
906- let fN = bp(parseBigIntValue(au(bq)), parseBigIntValue(au(br)), h)
907- if ((fN == fN))
908- then {
909- let fO = dt(toString(dr.caller), toBase58String(dr.transactionId), AttachedPayment(fromBase58String(bV), fy), AttachedPayment(fromBase58String(bW), fz), bm, true, true, true, cx, bR)
910- let fP = fO._2
911- let fr = fO._7
912- let cn = fO._9
913- let cX = fO._10
914- let cY = fO._11
915- let fQ = bj(toBigInt(fP), toBigInt(fA), toBigInt(bm))
916- let cW = toInt(fQ._2)
917- let fq = invoke(aB, "emit", [cW], nil)
918- if ((fq == fq))
919- then {
920- let fs = {
921- let av = fq
922- if ($isInstanceOf(av, "Address"))
923- then {
924- let ft = av
925- invoke(ft, "emit", [cW], nil)
926- }
927- else unit
928- }
929- if ((fs == fs))
930- then {
931- let fu = if ((cX > 0))
932- then invoke(fp, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
933- else nil
934- if ((fu == fu))
935- then {
936- let fv = if ((cY > 0))
937- then invoke(fp, "put", nil, [AttachedPayment(fromBase58String(bW), cY)])
938- else nil
939- if ((fv == fv))
940- then {
941- let fw = if (fm)
942- then {
943- let fx = invoke(fo, "stake", nil, [AttachedPayment(fr, cW)])
944- if ((fx == fx))
945- then nil
946- else throw("Strict value is not equal to itself.")
947- }
948- else [ScriptTransfer(dr.caller, cW, fr)]
949- let fa = if ((bO > 0))
950- then [ScriptTransfer(aF, bO, fromBase58String(bR))]
951- else nil
952- ((cn ++ fw) ++ fa)
953- }
954- else throw("Strict value is not equal to itself.")
955- }
956- else throw("Strict value is not equal to itself.")
957- }
958- else throw("Strict value is not equal to itself.")
959- }
960- else throw("Strict value is not equal to itself.")
961- }
962- else throw("Strict value is not equal to itself.")
963- }
964- }
965- }
966-
967-
968-
969-@Callable(dr)
970851 func putOneTknV2 (eJ,fm) = if ((size(dr.payments) != 1))
971852 then throw("1 pmnt expd")
972853 else {
973854 let eo = aG()
974855 let bV = eo[t]
975856 let bW = eo[u]
976857 let bU = fromBase58String(eo[s])
977858 let eN = parseIntValue(eo[v])
978859 let eO = parseIntValue(eo[w])
979860 let bT = if ((dr.caller == this))
980861 then dr.originCaller
981862 else dr.caller
982863 let ds = value(dr.payments[0])
983864 let bR = toBase58String(value(ds.assetId))
984865 let cx = ds.amount
985866 if ((10000000 > cx))
986867 then throw("Wrong pmt amt")
987868 else {
988- let fR = em(cx, bR, toString(bT), toBase58String(dr.transactionId))
989- let fP = fR._1
990- let cn = fR._2
991- let bO = fR._3
869+ let fy = em(cx, bR, toString(bT), toBase58String(dr.transactionId))
870+ let fz = fy._1
871+ let cn = fy._2
872+ let bO = fy._3
992873 let cW = if (if ((eJ > 0))
993- then (eJ > fP)
874+ then (eJ > fz)
994875 else false)
995876 then throw(makeString(["amount to receive is less than ", toString(eJ)], ""))
996- else fP
877+ else fz
997878 let fq = invoke(aB, "emit", [cW], nil)
998879 if ((fq == fq))
999880 then {
1000881 let fs = {
1001882 let av = fq
1002883 if ($isInstanceOf(av, "Address"))
1003884 then {
1004885 let ft = av
1005886 invoke(ft, "emit", [cW], nil)
1006887 }
1007888 else unit
1008889 }
1009890 if ((fs == fs))
1010891 then {
1011892 let fw = if (fm)
1012893 then {
1013894 let fx = invoke(aM, "stake", nil, [AttachedPayment(bU, cW)])
1014895 if ((fx == fx))
1015896 then nil
1016897 else throw("Strict value is not equal to itself.")
1017898 }
1018899 else [ScriptTransfer(dr.caller, cW, bU)]
1019900 let fa = if ((bO > 0))
1020901 then [ScriptTransfer(aF, bO, fromBase58String(bR))]
1021902 else nil
1022903 $Tuple2(((cn ++ fw) ++ fa), cW)
1023904 }
1024905 else throw("Strict value is not equal to itself.")
1025906 }
1026907 else throw("Strict value is not equal to itself.")
1027908 }
1028909 }
1029910
1030911
1031912
1032913 @Callable(dr)
1033-func putForFree (fS) = if ((0 > fS))
914+func putForFree (fA) = if ((0 > fA))
1034915 then throw("Wrong slpg")
1035916 else if ((size(dr.payments) != 2))
1036917 then throw("2 pmnts expd")
1037918 else {
1038- let fO = dt(toString(dr.caller), toBase58String(dr.transactionId), AttachedPayment(value(dr.payments[0]).assetId, value(dr.payments[0]).amount), dr.payments[1], fS, false, false, true, 0, "")
1039- fO._9
919+ let fB = dt(toString(dr.caller), toBase58String(dr.transactionId), AttachedPayment(value(dr.payments[0]).assetId, value(dr.payments[0]).amount), dr.payments[1], fA, false, false, true, 0, "")
920+ fB._9
1040921 }
1041922
1042923
1043924
1044925 @Callable(dr)
1045926 func get () = {
1046927 let cJ = dq(dr)
1047- let fT = cJ._1
928+ let fC = cJ._1
1048929 let cm = cJ._2
1049930 let cx = cJ._3
1050931 let bR = cJ._4
1051932 let cn = cJ._5
1052933 let eg = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
1053934 if ((eg == eg))
1054935 then cn
1055936 else throw("Strict value is not equal to itself.")
1056937 }
1057938
1058939
1059940
1060941 @Callable(dr)
1061-func getOneTkn (fU,fV,fW,eI,bm) = if ((size(dr.payments) != 1))
1062- then throw("1 pmnt expd")
1063- else {
1064- let bD = aG()
1065- let bU = bD[s]
1066- let bV = bD[t]
1067- let bW = bD[u]
1068- let bX = parseIntValue(bD[v])
1069- let bY = parseIntValue(bD[w])
1070- let bZ = bD[r]
1071- let fn = aK()
1072- let fB = valueOrErrorMessage(addressFromString(fn[B]), "Wr sl addr")
1073- let ds = value(dr.payments[0])
1074- let fD = valueOrElse(getString(this, ad()), "")
1075- let bT = if ((fD == toString(dr.caller)))
1076- then dr.originCaller
1077- else dr.caller
1078- let bQ = toBase58String(dr.transactionId)
1079- let bR = value(ds.assetId)
1080- let cx = ds.amount
1081- if ((1000000000 > cx))
1082- then throw("Min pmt 10 LP")
1083- else if (if (if ((0 > bm))
1084- then true
1085- else (0 > fU))
1086- then true
1087- else (0 > fW))
1088- then throw("Wrong params")
1089- else if ((bU != toBase58String(bR)))
1090- then throw("Wrong LP")
1091- else {
1092- let cJ = bP(toBase58String(dr.transactionId), toBase58String(bR), cx, dr.caller)
1093- let fX = cJ._1
1094- let fY = cJ._2
1095- let cb = be(bV)
1096- let cd = be(bW)
1097- let fZ = if ((eI == bV))
1098- then $Tuple7((cb - fX), (cd - fY), fU, fY, 0, 0, (fX + fU))
1099- else if ((eI == bW))
1100- then $Tuple7((cb - fX), (cd - fY), 0, 0, fU, fX, (fY + fU))
1101- else throw("wrong outAssetId")
1102- let fH = fZ._1
1103- let fI = fZ._2
1104- let fJ = fZ._3
1105- let fK = fZ._4
1106- let fL = fZ._5
1107- let fM = fZ._6
1108- let ga = fZ._7
1109- if (if ((0 > fJ))
1110- then true
1111- else (0 > fL))
1112- then throw("Wrong calc")
1113- else {
1114- let br = invoke(fB, "calcD", [toString(fH), toString(fI), aC, i, j], nil)
1115- let bq = invoke(fB, "calcD", [toString(((fH - fJ) + fM)), toString(((fI + fK) - fL)), aC, i, j], nil)
1116- let fN = bp(parseBigIntValue(au(bq)), parseBigIntValue(au(br)), h)
1117- if ((fN == fN))
1118- then {
1119- let eS = bM(ga)._1
1120- let gb = bj(toBigInt(eS), toBigInt(fW), toBigInt(bm))
1121- if ((gb == gb))
1122- then {
1123- let gc = if ((eI == bV))
1124- then $Tuple2(toInt(gb._2), 0)
1125- else $Tuple2(0, toInt(gb._2))
1126- let eV = gc._1
1127- let eW = gc._2
1128- let eT = (eV + eW)
1129- let bO = (ga - eS)
1130- let eZ = if ((eI == "WAVES"))
1131- then unit
1132- else fromBase58String(eI)
1133- let fa = if ((bO > 0))
1134- then [ScriptTransfer(aF, bO, eZ)]
1135- else nil
1136- let eX = bg(D(cd, bY), D(cb, bX))
1137- let eY = G(eX, a)
1138- let cn = [ScriptTransfer(bT, eT, eZ), StringEntry(Z(toString(bT), bQ), ba(eV, eW, cx, eY, height, lastBlock.timestamp)), IntegerEntry(S(), eY), IntegerEntry(T(height, lastBlock.timestamp), eY)]
1139- if ((cn == cn))
1140- then {
1141- let fb = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
1142- if ((fb == fb))
1143- then (cn ++ fa)
1144- else throw("Strict value is not equal to itself.")
1145- }
1146- else throw("Strict value is not equal to itself.")
1147- }
1148- else throw("Strict value is not equal to itself.")
1149- }
1150- else throw("Strict value is not equal to itself.")
1151- }
1152- }
1153- }
1154-
1155-
1156-
1157-@Callable(dr)
1158942 func getOneTknV2 (eI,eJ) = {
1159- let gd = eH(eI, eJ, dr.payments, dr.caller, dr.originCaller, dr.transactionId)
1160- let cn = gd._1
1161- let eT = gd._2
943+ let fD = eH(eI, eJ, dr.payments, dr.caller, dr.originCaller, dr.transactionId)
944+ let cn = fD._1
945+ let eT = fD._2
1162946 $Tuple2(cn, eT)
1163947 }
1164948
1165949
1166950
1167951 @Callable(dr)
1168-func getOneTknV2READONLY (eI,ge) = {
952+func getOneTknV2READONLY (eI,fE) = {
1169953 let eo = aG()
1170954 let bV = eo[t]
1171955 let bW = eo[u]
1172956 let bU = eo[s]
1173957 let dy = [toBigInt(be(bV)), toBigInt(be(bW))]
1174- let gf = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bU)), "invalid lp asset").quantity)
958+ let fF = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bU)), "invalid lp asset").quantity)
1175959 let br = dx(dy)
1176- let bq = (br - fraction(toBigInt(ge), br, gf))
1177- let gg = if ((eI == bV))
960+ let bq = (br - fraction(toBigInt(fE), br, fF))
961+ let fG = if ((eI == bV))
1178962 then 0
1179963 else if ((eI == bW))
1180964 then 1
1181965 else throw("invalid out asset id")
1182- let gh = ec(dy, gg, bq)
1183- let gi = (dy[gg] - gh)
1184- let ga = toInt((gi - f))
1185- let gj = bM(ga)
1186- let eS = gj._1
1187- let bO = gj._2
966+ let fH = ec(dy, fG, bq)
967+ let fI = (dy[fG] - fH)
968+ let fJ = toInt((fI - f))
969+ let fK = bM(fJ)
970+ let eS = fK._1
971+ let bO = fK._2
1188972 $Tuple2(nil, $Tuple2(eS, bO))
1189973 }
1190974
1191975
1192976
1193977 @Callable(dr)
1194-func getOneTknV2WithBonusREADONLY (eI,ge) = {
978+func getOneTknV2WithBonusREADONLY (eI,fE) = {
1195979 let eo = aG()
1196980 let bV = eo[t]
1197981 let bW = eo[u]
1198982 let bU = eo[s]
1199983 let cb = be(bV)
1200984 let cd = be(bW)
1201- let gk = {
1202- let eR = invoke(this, "getOneTknV2READONLY", [eI, ge], nil)
985+ let fL = {
986+ let eR = invoke(this, "getOneTknV2READONLY", [eI, fE], nil)
1203987 if ($isInstanceOf(eR, "(Int, Int)"))
1204988 then eR
1205989 else throw(($getType(eR) + " couldn't be cast to (Int, Int)"))
1206990 }
1207- let eS = gk._1
1208- let bO = gk._2
1209- let cJ = bP("", bU, ge, this)
991+ let eS = fL._1
992+ let bO = fL._2
993+ let cJ = bP("", bU, fE, this)
1210994 let cl = cJ._1
1211995 let cm = cJ._2
1212- let gl = (cl + cm)
1213- let eG = fraction((eS - gl), a, gl)
996+ let fM = (cl + cm)
997+ let eG = fraction((eS - fM), a, fM)
1214998 $Tuple2(nil, $Tuple3(eS, bO, eG))
1215999 }
12161000
12171001
12181002
12191003 @Callable(dr)
1220-func getNoLess (gm,gn) = {
1004+func getNoLess (fN,fO) = {
12211005 let cJ = dq(dr)
12221006 let cl = cJ._1
12231007 let cm = cJ._2
12241008 let cx = cJ._3
12251009 let bR = cJ._4
12261010 let cn = cJ._5
1227- if ((gm > cl))
1228- then throw(((("Failed: " + toString(cl)) + " < ") + toString(gm)))
1229- else if ((gn > cm))
1230- then throw(((("Failed: " + toString(cm)) + " < ") + toString(gn)))
1011+ if ((fN > cl))
1012+ then throw(((("Failed: " + toString(cl)) + " < ") + toString(fN)))
1013+ else if ((fO > cm))
1014+ then throw(((("Failed: " + toString(cm)) + " < ") + toString(fO)))
12311015 else {
1232- let go = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
1233- if ((go == go))
1016+ let fP = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
1017+ if ((fP == fP))
12341018 then cn
12351019 else throw("Strict value is not equal to itself.")
12361020 }
12371021 }
12381022
12391023
12401024
12411025 @Callable(dr)
12421026 func unstakeAndGet (bN) = {
1243- let gp = if ((size(dr.payments) != 0))
1027+ let fQ = if ((size(dr.payments) != 0))
12441028 then throw("No pmnts expd")
12451029 else true
1246- if ((gp == gp))
1030+ if ((fQ == fQ))
12471031 then {
12481032 let bD = aG()
1249- let gq = aK()
1033+ let fR = aK()
12501034 let fr = fromBase58String(bD[s])
1251- let gr = valueOrErrorMessage(addressFromString(gq[z]), "Wr st addr")
1252- let gs = invoke(gr, "unstake", [toBase58String(fr), bN], nil)
1253- if ((gs == gs))
1035+ let fS = valueOrErrorMessage(addressFromString(fR[z]), "Wr st addr")
1036+ let fT = invoke(fS, "unstake", [toBase58String(fr), bN], nil)
1037+ if ((fT == fT))
12541038 then {
12551039 let cJ = bP(toBase58String(dr.transactionId), toBase58String(fr), bN, dr.caller)
12561040 let bZ = parseIntValue(cJ._9)
12571041 let cn = cJ._10
1258- let gt = if (if (aD())
1042+ let fU = if (if (aD())
12591043 then true
12601044 else (bZ == p))
12611045 then throw(("Blocked: " + toString(bZ)))
12621046 else true
1263- if ((gt == gt))
1047+ if ((fU == fU))
12641048 then {
1265- let gu = invoke(aB, "burn", [bN], [AttachedPayment(fr, bN)])
1266- if ((gu == gu))
1049+ let fV = invoke(aB, "burn", [bN], [AttachedPayment(fr, bN)])
1050+ if ((fV == fV))
12671051 then cn
12681052 else throw("Strict value is not equal to itself.")
12691053 }
12701054 else throw("Strict value is not equal to itself.")
12711055 }
12721056 else throw("Strict value is not equal to itself.")
12731057 }
12741058 else throw("Strict value is not equal to itself.")
12751059 }
12761060
12771061
12781062
12791063 @Callable(dr)
1280-func unstakeAndGetOneTkn (gv,eI,eJ) = {
1281- let gp = if ((size(dr.payments) != 0))
1064+func unstakeAndGetOneTknV2 (fW,eI,eJ) = {
1065+ let fQ = if ((size(dr.payments) != 0))
12821066 then throw("No pmnts expd")
12831067 else true
1284- if ((gp == gp))
1068+ if ((fQ == fQ))
12851069 then {
12861070 let bD = aG()
1287- let gq = aK()
1071+ let fR = aK()
12881072 let fr = fromBase58String(bD[s])
1289- let gr = valueOrErrorMessage(addressFromString(gq[z]), "Wr st addr")
1290- let gs = invoke(gr, "unstake", [toBase58String(fr), gv], nil)
1291- if ((gs == gs))
1073+ let fS = valueOrErrorMessage(addressFromString(fR[z]), "Wr st addr")
1074+ let fT = invoke(fS, "unstake", [toBase58String(fr), fW], nil)
1075+ if ((fT == fT))
12921076 then {
1293- let gw = eH(eI, eJ, [AttachedPayment(fr, gv)], dr.caller, dr.originCaller, dr.transactionId)
1294- let cn = gw._1
1295- let eT = gw._2
1077+ let fX = eH(eI, eJ, [AttachedPayment(fr, fW)], dr.caller, dr.originCaller, dr.transactionId)
1078+ let cn = fX._1
1079+ let eT = fX._2
12961080 $Tuple2(cn, eT)
12971081 }
12981082 else throw("Strict value is not equal to itself.")
12991083 }
13001084 else throw("Strict value is not equal to itself.")
13011085 }
13021086
13031087
13041088
13051089 @Callable(dr)
1306-func putOneTknV2WithBonusREADONLY (fE,gx) = {
1090+func putOneTknV2WithBonusREADONLY (fY,fZ) = {
13071091 let eo = aG()
13081092 let bV = eo[t]
13091093 let bW = eo[u]
13101094 let bU = eo[s]
1311- let gy = em(fE, gx, "", "")
1312- let eB = gy._1
1313- let cn = gy._2
1314- let bO = gy._3
1315- let eG = gy._4
1095+ let ga = em(fY, fZ, "", "")
1096+ let eB = ga._1
1097+ let cn = ga._2
1098+ let bO = ga._3
1099+ let eG = ga._4
13161100 $Tuple2(nil, $Tuple3(eB, bO, eG))
13171101 }
13181102
13191103
13201104
13211105 @Callable(dr)
1322-func activate (gz,gA) = if ((toString(dr.caller) != toString(aB)))
1106+func activate (gb,gc) = if ((toString(dr.caller) != toString(aB)))
13231107 then throw("denied")
1324- else $Tuple2([StringEntry(aa(), gz), StringEntry(ab(), gA)], "success")
1108+ else $Tuple2([StringEntry(aa(), gb), StringEntry(ab(), gc)], "success")
13251109
13261110
13271111
13281112 @Callable(dr)
1329-func setS (gB,gt) = if ((toString(dr.caller) != ax(this, ad())))
1113+func setS (gd,fU) = if ((toString(dr.caller) != ax(this, ad())))
13301114 then fe
1331- else [StringEntry(gB, gt)]
1115+ else [StringEntry(gd, fU)]
13321116
13331117
13341118
13351119 @Callable(dr)
1336-func setI (gB,gt) = if ((toString(dr.caller) != ax(this, ad())))
1120+func setI (gd,fU) = if ((toString(dr.caller) != ax(this, ad())))
13371121 then fe
1338- else [IntegerEntry(gB, gt)]
1122+ else [IntegerEntry(gd, fU)]
13391123
13401124
13411125
13421126 @Callable(dr)
13431127 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aG())
13441128
13451129
13461130
13471131 @Callable(dr)
13481132 func getAccBalanceWrapperREADONLY (bf) = $Tuple2(nil, be(bf))
13491133
13501134
13511135
13521136 @Callable(dr)
13531137 func calcPricesWrapperREADONLY (bx,by,bC) = {
1354- let gC = bB(bx, by, bC)
1355- $Tuple2(nil, [toString(gC[0]), toString(gC[1]), toString(gC[2])])
1138+ let ge = bB(bx, by, bC)
1139+ $Tuple2(nil, [toString(ge[0]), toString(ge[1]), toString(ge[2])])
13561140 }
13571141
13581142
13591143
13601144 @Callable(dr)
1361-func fromX18WrapperREADONLY (H,gD) = $Tuple2(nil, G(parseBigIntValue(H), gD))
1145+func fromX18WrapperREADONLY (H,gf) = $Tuple2(nil, G(parseBigIntValue(H), gf))
13621146
13631147
13641148
13651149 @Callable(dr)
13661150 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
13671151
13681152
13691153
13701154 @Callable(dr)
13711155 func calcPriceBigIntWrapperREADONLY (bh,bi) = $Tuple2(nil, toString(bg(parseBigIntValue(bh), parseBigIntValue(bi))))
13721156
13731157
13741158
13751159 @Callable(dr)
1376-func estimatePutOperationWrapperREADONLY (bQ,bm,cp,cq,cr,cs,gE,ct,cu) = $Tuple2(nil, co(bQ, bm, cp, cq, cr, cs, gE, ct, cu, true, false, 0, ""))
1160+func estimatePutOperationWrapperREADONLY (bQ,bm,cp,cq,cr,cs,gg,ct,cu) = $Tuple2(nil, co(bQ, bm, cp, cq, cr, cs, gg, ct, cu, true, false, 0, ""))
13771161
13781162
13791163
13801164 @Callable(dr)
1381-func estimateGetOperationWrapperREADONLY (bQ,gF,bS,gE) = {
1382- let cJ = bP(bQ, gF, bS, addressFromStringValue(gE))
1165+func estimateGetOperationWrapperREADONLY (bQ,gh,bS,gg) = {
1166+ let cJ = bP(bQ, gh, bS, addressFromStringValue(gg))
13831167 $Tuple2(nil, $Tuple10(cJ._1, cJ._2, cJ._3, cJ._4, cJ._5, cJ._6, cJ._7, toString(cJ._8), cJ._9, cJ._10))
13841168 }
13851169
13861170
13871171
13881172 @Callable(dr)
13891173 func getFeeREADONLY () = $Tuple2(nil, af)
13901174
13911175
1392-@Verifier(gG)
1393-func gH () = {
1394- let gI = {
1176+@Verifier(gi)
1177+func gj () = {
1178+ let gk = {
13951179 let av = fc()
13961180 if ($isInstanceOf(av, "ByteVector"))
13971181 then {
13981182 let fg = av
13991183 fg
14001184 }
14011185 else if ($isInstanceOf(av, "Unit"))
1402- then gG.senderPublicKey
1186+ then gi.senderPublicKey
14031187 else throw("Match error")
14041188 }
1405- let av = gG
1189+ let av = gi
14061190 if ($isInstanceOf(av, "Order"))
14071191 then {
14081192 let de = av
1409- let gJ = aE()
1410- let gK = dd(de)
1411- let gL = sigVerify(de.bodyBytes, de.proofs[0], de.senderPublicKey)
1412- let gM = sigVerify(de.bodyBytes, de.proofs[1], gJ)
1413- if (if (if (gK)
1414- then gL
1193+ let gl = aE()
1194+ let gm = dd(de)
1195+ let gn = sigVerify(de.bodyBytes, de.proofs[0], de.senderPublicKey)
1196+ let go = sigVerify(de.bodyBytes, de.proofs[1], gl)
1197+ if (if (if (gm)
1198+ then gn
14151199 else false)
1416- then gM
1200+ then go
14171201 else false)
14181202 then true
1419- else aq(gK, gL, gM)
1203+ else aq(gm, gn, go)
14201204 }
14211205 else if ($isInstanceOf(av, "SetScriptTransaction"))
14221206 then {
14231207 let dE = av
1424- let gN = blake2b256(value(dE.script))
1425- let gO = fromBase64String(value(getString(aB, ao())))
1426- let gP = scriptHash(this)
1427- if (if ((gO == gN))
1428- then (gP != gN)
1208+ let gp = blake2b256(value(dE.script))
1209+ let gq = fromBase64String(value(getString(aB, ao())))
1210+ let gr = scriptHash(this)
1211+ if (if ((gq == gp))
1212+ then (gr != gp)
14291213 else false)
14301214 then true
1431- else sigVerify(gG.bodyBytes, gG.proofs[0], gI)
1215+ else sigVerify(gi.bodyBytes, gi.proofs[0], gk)
14321216 }
1433- else sigVerify(gG.bodyBytes, gG.proofs[0], gI)
1217+ else sigVerify(gi.bodyBytes, gi.proofs[0], gk)
14341218 }
14351219

github/deemru/w8io/03bedc9 
159.25 ms