tx · HGGF8stZzrhte9PJ4VXgDxyrZEH7syhvdfaFr53tjfat

3N8iNNRC4UfDK4aJctSvHajiZ81fzSumCeP:  -0.04300000 Waves

2023.04.04 17:36 [2519942] smart account 3N8iNNRC4UfDK4aJctSvHajiZ81fzSumCeP > SELF 0.00000000 Waves

{ "type": 13, "id": "HGGF8stZzrhte9PJ4VXgDxyrZEH7syhvdfaFr53tjfat", "fee": 4300000, "feeAssetId": null, "timestamp": 1680619043165, "version": 2, "chainId": 84, "sender": "3N8iNNRC4UfDK4aJctSvHajiZ81fzSumCeP", "senderPublicKey": "F7NZd812aXMUyDcj1XaB3wgMJXJfUsq3RhPhrEZ9b6ND", "proofs": [ "4tZmH1g1DXcZc2Dx2V26UWwRRUpZn7bvk8QGyYys1FAcz3QxKWjqv3CtSwfEQ6idWysGHH51iHoht5N1DFavyUqd" ], "script": "base64:BgLGNwgCEgASBQoDAQQBEgcKBQEEAQgBEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiC3RvWDE4QmlnSW50Igdmcm9tWDE4IgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIMZnJvbVgxOFJvdW5kIgVyb3VuZCIHdG9TY2FsZSIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50Igxzd2FwQ29udHJhY3QiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIQa2V5U1dhdmVzQXNzZXRJZCIVa2V5U1dhdmVzUHJveHlBZGRyZXNzIhRrZXlBZGRpdGlvbmFsQmFsYW5jZSIHYXNzZXRJZCIWa2V5U3Rha2luZ0Fzc2V0QmFsYW5jZSIaZ2V0QWRkaXRpb25hbEJhbGFuY2VPclplcm8iHGdldFN0YWtpbmdBc3NldEJhbGFuY2VPclplcm8iEGtleUZhY3RvcnlDb25maWciDWtleU1hdGNoZXJQdWIiKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzIhNwb29sQ29udHJhY3RBZGRyZXNzIg1rZXlQb29sQ29uZmlnIglpQW10QXNzZXQiC2lQcmljZUFzc2V0Ih9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkIgxiYXNlQXNzZXRTdHIiE2tleUFsbFBvb2xzU2h1dGRvd24iDWtleVBvb2xXZWlnaHQiD2NvbnRyYWN0QWRkcmVzcyIWa2V5QWxsb3dlZExwU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIPdGhyb3dPcmRlckVycm9yIgpvcmRlclZhbGlkIg5vcmRlclZhbGlkSW5mbyILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIPZ2V0U3RyaW5nT3JGYWlsIgdhZGRyZXNzIgNrZXkiDGdldEludE9yRmFpbCIIdGhyb3dFcnIiA21zZyIGZm10RXJyIg9mYWN0b3J5Q29udHJhY3QiE2ZlZUNvbGxlY3RvckFkZHJlc3MiBWluRmVlIgFAIgZvdXRGZWUiCHNXYXZlc0lkIgtzV2F2ZXNQcm94eSIQaXNHbG9iYWxTaHV0ZG93biITZ2V0TWF0Y2hlclB1Yk9yRmFpbCINZ2V0UG9vbENvbmZpZyIIYW10QXNzZXQiCnByaWNlQXNzZXQiDHBhcnNlQXNzZXRJZCIFaW5wdXQiD2Fzc2V0SWRUb1N0cmluZyIPcGFyc2VQb29sQ29uZmlnIgpwb29sQ29uZmlnIhBwb29sQ29uZmlnUGFyc2VkIgskdDA5Mjk3OTQ2MyIOY2ZnUG9vbEFkZHJlc3MiDWNmZ1Bvb2xTdGF0dXMiDGNmZ0xwQXNzZXRJZCIQY2ZnQW1vdW50QXNzZXRJZCIPY2ZnUHJpY2VBc3NldElkIhZjZmdBbW91bnRBc3NldERlY2ltYWxzIhVjZmdQcmljZUFzc2V0RGVjaW1hbHMiEGdldEZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIQc2xpcHBhZ2VDb250cmFjdCIRZGF0YVB1dEFjdGlvbkluZm8iDWluQW10QXNzZXRBbXQiD2luUHJpY2VBc3NldEFtdCIIb3V0THBBbXQiBXByaWNlIh1zbGlwcGFnZVRvbGVyYW5jZVBhc3NlZEJ5VXNlciIVc2xpcHBhZ2VUb2xlcmFuY2VSZWFsIgh0eEhlaWdodCILdHhUaW1lc3RhbXAiEnNsaXBhZ2VBbXRBc3NldEFtdCIUc2xpcGFnZVByaWNlQXNzZXRBbXQiEWRhdGFHZXRBY3Rpb25JbmZvIg5vdXRBbXRBc3NldEFtdCIQb3V0UHJpY2VBc3NldEFtdCIHaW5McEFtdCINZ2V0QWNjQmFsYW5jZSINYmFsYW5jZU9uUG9vbCIMdG90YWxCYWxhbmNlIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIUY2FsY1ByaWNlQmlnSW50Um91bmQiB2dldFJhdGUiBXByb3h5IgNpbnYiByRtYXRjaDAiAXIiB2RlcG9zaXQiBmFtb3VudCIOc3Rha2luZ0Fzc2V0SWQiGGN1cnJlbnRBZGRpdGlvbmFsQmFsYW5jZSIaY3VycmVudFN0YWtpbmdBc3NldEJhbGFuY2UiBWFzc2V0Ig1kZXBvc2l0SW52b2tlIhRyZWNlaXZlZFN0YWtpbmdBc3NldCIUbmV3QWRkaXRpb25hbEJhbGFuY2UiFm5ld1N0YWtpbmdBc3NldEJhbGFuY2UiCHdpdGhkcmF3Igxwcm94eVJhdGVNdWwiDXByb2ZpdEFkZHJlc3MiEGN1cnJlbnRQcm94eVJhdGUiB29sZFJhdGUiDHN0YWtpbmdBc3NldCIUb2xkU2VuZFN0YWtpbmdBbW91bnQiFnNlbmRTdGFraW5nQXNzZXRBbW91bnQiDHByb2ZpdEFtb3VudCIOd2l0aGRyYXdJbnZva2UiDnJlY2VpdmVkQXNzZXRzIhNnZXRMZWFzZVByb3h5Q29uZmlnIhFyZWJhbGFuY2VJbnRlcm5hbCILdGFyZ2V0UmF0aW8iCm1pbkJhbGFuY2UiEGF2YWlsYWJsZUJhbGFuY2UiAWIiAXUiDHdob2xlQmFsYW5jZSIXdGFyZ2V0QWRkaXRpb25hbEJhbGFuY2UiBGRpZmYiD3NlbmRBc3NldEFtb3VudCIOZ2V0QXNzZXRBbW91bnQiDnJlYmFsYW5jZUFzc2V0IgFhIg0kdDAxNTgxNDE1OTIzIgppc0xlYXNhYmxlIgtsZWFzZWRSYXRpbyIMcHJveHlBZGRyZXNzIgxwcm94eUFzc2V0SWQiFHN0YWtpbmdQcm9maXRBZGRyZXNzIhR3aXRoZHJhd0Fzc2V0V3JhcHBlciINJHQwMTY0NTMxNjU2MiIVZ2V0V2l0aGRyYXdBc3NldFN0YXRlIgthc3NldE9uUG9vbCIBdyIKYW1vdW50RGlmZiIQcHJpdmF0ZUNhbGNQcmljZSIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10Ig5hbXRBc3NldEFtdFgxOCIQcHJpY2VBc3NldEFtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyILYW10QXNzZXREY20iDXByaWNlQXNzZXREY20iCHByaWNlWDE4IghscEFtdFgxOCITbHBQcmljZUluQW1Bc3NldFgxOCITbHBQcmljZUluUHJBc3NldFgxOCIPY2FsY3VsYXRlUHJpY2VzIgZwcmljZXMiFGVzdGltYXRlR2V0T3BlcmF0aW9uIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10IglscEFzc2V0SWQiCWFtQXNzZXRJZCIJcHJBc3NldElkIgpwb29sU3RhdHVzIgpscEVtaXNzaW9uIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiDWxwRW1pc3Npb25YMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IhJBbUFtdFdpdGhkcmF3U3RhdGUiElByQW10V2l0aGRyYXdTdGF0ZSIDcmViIgVzdGF0ZSIUZXN0aW1hdGVQdXRPcGVyYXRpb24iEXNsaXBwYWdlVG9sZXJhbmNlIgxpbkFtQXNzZXRBbXQiC2luQW1Bc3NldElkIgxpblByQXNzZXRBbXQiC2luUHJBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiDGFtQXNzZXRJZFN0ciIMcHJBc3NldElkU3RyIgtpQW10QXNzZXRJZCINaVByaWNlQXNzZXRJZCIOaW5BbUFzc2V0SWRTdHIiDmluUHJBc3NldElkU3RyIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgNyZXMiC3NsaXBwYWdlWDE4IhRzbGlwcGFnZVRvbGVyYW5jZVgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiILY29tbW9uU3RhdGUiB2NhbGNLTHAiDWFtb3VudEJhbGFuY2UiDHByaWNlQmFsYW5jZSIQYW1vdW50QmFsYW5jZVgxOCIPcHJpY2VCYWxhbmNlWDE4Igp1cGRhdGVkS0xwIg5jYWxjQ3VycmVudEtMcCIQYW1vdW50QXNzZXREZWx0YSIPcHJpY2VBc3NldERlbHRhIhRscEFzc2V0RW1pc3Npb25EZWx0YSISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIPbHBBc3NldEVtaXNzaW9uIgpjdXJyZW50S0xwIhJyZWZyZXNoS0xwSW50ZXJuYWwiF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhIhZwcmljZUFzc2V0QmFsYW5jZURlbHRhIgdhY3Rpb25zIhJ2YWxpZGF0ZVVwZGF0ZWRLTHAiBm9sZEtMcCIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDI4ODAwMjkwMTIiA2tMcCINJHQwMjk0NTIyOTU1MiINdW51c2VkQWN0aW9ucyIGa0xwTmV3Igxpc09yZGVyVmFsaWQiBGluZm8iCWNvbW1vbkdldCIBaSIDcG10IgZwbXRBbXQiCWNvbW1vblB1dCIKYW1Bc3NldFBtdCIKcHJBc3NldFBtdCIGZXN0UHV0IgRlbWl0IgdlbWl0SW52Ig1lbWl0SW52TGVnYWN5IhVsZWdhY3lGYWN0b3J5Q29udHJhY3QiB3Rha2VGZWUiCWZlZUFtb3VudCIPY2FsY1B1dE9uZVRva2VuIhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCIGaXNFdmFsIhBhbW91bnRCYWxhbmNlUmF3Ig9wcmljZUJhbGFuY2VSYXciFHBheW1lbnRJbkFtb3VudEFzc2V0Ig0kdDAzMjY2NTMyOTU4IhBhbW91bnRCYWxhbmNlT2xkIg9wcmljZUJhbGFuY2VPbGQiDSR0MDMyOTYyMzMxMTEiFGFtb3VudEFzc2V0QW1vdW50UmF3IhNwcmljZUFzc2V0QW1vdW50UmF3Ig0kdDAzMzI0MzMzMzA3Ig1wYXltZW50QW1vdW50IhBhbW91bnRCYWxhbmNlTmV3Ig9wcmljZUJhbGFuY2VOZXciC3ByaWNlTmV3WDE4IghwcmljZU5ldyIOcGF5bWVudEJhbGFuY2UiFHBheW1lbnRCYWxhbmNlQmlnSW50IgxzdXBwbHlCaWdJbnQiC2NoZWNoU3VwcGx5Ig1kZXBvc2l0QmlnSW50Igtpc3N1ZUFtb3VudCILcHJpY2VPbGRYMTgiCHByaWNlT2xkIgRsb3NzIg0kdDAzNDk4ODM1MTU1IgdiYWxhbmNlIg9pc3N1ZUFtb3VudEJvdGgiD2NhbGNHZXRPbmVUb2tlbiIKb3V0QXNzZXRJZCIGY2hlY2tzIhBvdXRJbkFtb3VudEFzc2V0Ig1iYWxhbmNlQmlnSW50IhhvdXRJbkFtb3VudEFzc2V0RGVjaW1hbHMiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIgpvdXRCYWxhbmNlIhBvdXRCYWxhbmNlQmlnSW50Ig5yZWRlZW1lZEJpZ0ludCIJYW1vdW50UmF3Ig0kdDAzNzIzMzM3Mjg5Igt0b3RhbEFtb3VudCINJHQwMzcyOTMzNzUxOSILb3V0QW1BbW91bnQiC291dFByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIYYW1vdW50Qm90aEluUGF5bWVudEFzc2V0IhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IgFzIh1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdCIJaXNNYW5hZ2VyIgJwayILbXVzdE1hbmFnZXIiAnBkIg1jbGVhbkFtb3VudEluIglpc1JldmVyc2UiDWZlZVBvb2xBbW91bnQiDSR0MDM5NDA1Mzk3MTAiCGFzc2V0T3V0Igdhc3NldEluIhJwb29sQXNzZXRJbkJhbGFuY2UiE3Bvb2xBc3NldE91dEJhbGFuY2UiCWFtb3VudE91dCIEb2xkSyIEbmV3SyIGY2hlY2tLIgxhbW91bnRPdXRNaW4iCWFkZHJlc3NUbyILc3dhcENvbnRhY3QiCGNoZWNrTWluIgZsc0NvbmYiDXdpdGhkcmF3U3RhdGUiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgtjaGVja0NhbGxlciIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iD3Nob3VsZEF1dG9TdGFrZSIEYW1JZCIEcHJJZCIMc2xpcHBhZ2VBSW52IgxzbGlwcGFnZVBJbnYiCmxwVHJhbnNmZXIiC3NscFN0YWtlSW52Ig0kdDA0NDkxMTQ1MzczIhFyZWZyZXNoS0xwQWN0aW9ucyIRaXNVcGRhdGVkS0xwVmFsaWQiC21heFNsaXBwYWdlIg0kdDA0NTk4NTQ2MDUwIgxtaW5PdXRBbW91bnQiCWF1dG9TdGFrZSIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiB3BheW1lbnQiDSR0MDQ3MjM4NDczOTAiBWJvbnVzIhNlbWl0QW1vdW50RXN0aW1hdGVkIgplbWl0QW1vdW50IghzdGFrZUludiIHc2VuZEZlZSINJHQwNDc5NzY0ODE3MyINJHQwNDgxNzY0ODI4NCINJHQwNDg2Mzk0ODc5NiINb3V0QXNzZXRJZFN0ciINaXNHZXREaXNhYmxlZCINJHQwNDk2ODE0OTgzNCIPYW1vdW50RXN0aW1hdGVkIgdidXJuSW52Ig1hc3NldFRyYW5zZmVyIg0kdDA1MDU5MDUwODM3IhBmZWVBbW91bnRGb3JDYWxjIg0kdDA1MDg0MDUwOTQ4Ig0kdDA1MTI3NDUxNDMwIg11bnN0YWtlQW1vdW50Igp1bnN0YWtlSW52Ig0kdDA1MjMzNTUyNDg2Ig0kdDA1MzA1MTUzMjk4Ig0kdDA1MzMwMTUzNDA5IglvdXRBbXRBbXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5Ig0kdDA1NDQyMzU0NTA1IhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0Ig0kdDA1NTQ1NDU1NTM1Ig1jaGVja1BheW1lbnRzIg9jaGVja1Bvb2xTdGF0dXMiDSR0MDU2NjYxNTY3NDIiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIMY2hlY2tBbW91bnRzIg0kdDA1ODAzNzU4MTE4IgthbXRBc3NldFN0ciINcHJpY2VBc3NldFN0ciIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINJHQwNTkzMDU1OTM2OSIQa0xwVXBkYXRlQWN0aW9ucyIKYW10QXNzZXRJZCIMcHJpY2VBc3NldElkIg1wb29sTFBCYWxhbmNlIhJhY2NBbXRBc3NldEJhbGFuY2UiFGFjY1ByaWNlQXNzZXRCYWxhbmNlIgpwcmljZXNMaXN0Ig9scEFtdEFzc2V0U2hhcmUiEWxwUHJpY2VBc3NldFNoYXJlIgpwb29sV2VpZ2h0IgxjdXJQcmljZUNhbGMiDGFtQmFsYW5jZVJhdyIMcHJCYWxhbmNlUmF3Ig9hbUJhbGFuY2VSYXdYMTgiD3ByQmFsYW5jZVJhd1gxOCIQcGF5bWVudExwQXNzZXRJZCIMcGF5bWVudExwQW10IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiDSR0MDY4MDMxNjgxMDAiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaIMBAAFhAAgAAWIAgMLXLwABYwkAtgIBAIDC1y8AAWQJALYCAQCAgJC7utat8A0AAWUJALYCAQAAAAFmCQC2AgEAAAABZwkAtgIBAAEAAWgJALYCAQACAAFpAgVXQVZFUwABagICX18AAWsAAQABbAACAAFtAAMAAW4ABAABbwABAAFwAAIAAXEAAwABcgAEAAFzAAUAAXQABgABdQAHAAF2AAgAAXcACQABeAAKAAF5AAEAAXoAAgABQQADAAFCAAEAAUMABwEBRAIBRQFGCQC8AgMJALYCAQUBRQUBZAkAtgIBBQFGAQFHAgFFAUYJALwCAwUBRQUBZAUBRgEBSAIBSQFKCQCgAwEJALwCAwUBSQkAtgIBBQFKBQFkAQFLAwFJAUoBTAkAoAMBCQC9AgQFAUkJALYCAQUBSgUBZAUBTAEBTQMBTgFPAVAJAGsDBQFOBQFPBQFQAQFRAQFJAwkAZgIAAAUBSQkBAS0BBQFJBQFJAQFSAQFJAwkAvwICBQFlBQFJCQC+AgEFAUkFAUkBAVMAAhAlc19fc3dhcENvbnRyYWN0AQFUAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBVQACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFWAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFXAAIRJXMlc19fcHJpY2VfX2xhc3QBAVgCAVkBWgkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVkJAMwIAgkApAMBBQFaBQNuaWwFAWoBAmFhAgJhYgJhYwkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAmFiAgJfXwUCYWMBAmFkAgJhYgJhYwkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAmFiAgJfXwUCYWMBAmFlAAIPJXNfX2Ftb3VudEFzc2V0AQJhZgACDiVzX19wcmljZUFzc2V0AAJhZwIHJXNfX2ZlZQACYWgJAGsDAAoFAWIAkE4AAmFpCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFnBQJhaAACYWoJALkJAgkAzAgCAgIlcwkAzAgCAgNrTHAFA25pbAUBagACYWsJALkJAgkAzAgCAgIlcwkAzAgCAhJrTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBagACYWwJALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoS0xwRGVsYXkFA25pbAUBagACYW0AHgACYW4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWwFAmFtAQJhbwACESVzX19zV2F2ZXNBc3NldElkAQJhcAACFiVzX19zV2F2ZXNQcm94eUFkZHJlc3MBAmFxAQJhcgkAuQkCCQDMCAICBCVzJXMJAMwIAgIRYWRkaXRpb25hbEJhbGFuY2UJAMwIAgUCYXIFA25pbAUBagECYXMBAmFyCQC5CQIJAMwIAgIEJXMlcwkAzAgCAhNzdGFraW5nQXNzZXRCYWxhbmNlCQDMCAIFAmFyBQNuaWwFAWoBAmF0AQJhcgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYXEBBQJhcgAAAQJhdQECYXIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmFzAQUCYXIAAAECYXYAAhElc19fZmFjdG9yeUNvbmZpZwECYXcAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmF4AQJheQkArAICCQCsAgICCCVzJXMlc19fBQJheQIgX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MkxwQXNzZXQBAmF6AgJhQQJhQgkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYUECAl9fBQJhQgIIX19jb25maWcBAmFDAQJhRAkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhRAECYUUAAgwlc19fc2h1dGRvd24BAmFGAQJhRwkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FAmFHAQJhSAACFyVzX19hbGxvd2VkTHBTY3JpcHRIYXNoAAJhSQIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmFKBAJhSwJhTAJhTQJhTgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiRvcmRlciB2YWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAKUDAQUCYUsCAiAoBQJhTAIBKQINIHNlbmRlclZhbGlkPQkApQMBBQJhTQIOIG1hdGNoZXJWYWxpZD0JAKUDAQUCYU4BAmFPAgJhUAJhUQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFQBQJhUQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhUAkAzAgCAgEuCQDMCAIFAmFRCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFSAgJhUAJhUQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFQBQJhUQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhUAkAzAgCAgEuCQDMCAIFAmFRCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFTAQJhVAkAAgEJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhVAUDbmlsAgEgAQJhVQECYVQJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhVAUDbmlsAgEgAAJhVgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFPAgUEdGhpcwkBAVQAAAJhVwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFPAgUCYVYFAmFJAAJhWAoAAmFZCQD8BwQFAmFWAhBnZXRJbkZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVkCA0ludAUCYVkJAAIBCQCsAgIJAAMBBQJhWQIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJhWgoAAmFZCQD8BwQFAmFWAhFnZXRPdXRGZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFZAgNJbnQFAmFZCQACAQkArAICCQADAQUCYVkCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAECYmEACQECYU8CBQJhVgkBAmFvAAECYmIACQECYU8CBQJhVgkBAmFwAAECYmMACQELdmFsdWVPckVsc2UCCQCbCAIFAmFWCQECYUUABwECYmQACQDZBAEJAQJhTwIFAmFWCQECYXcAAQJiZQAEAmJmCQECYU8CBQR0aGlzCQECYWUABAJiZwkBAmFPAgUEdGhpcwkBAmFmAAQCYUIJAQJhUgIFAmFWCQECYUMBBQJiZwQCYUEJAQJhUgIFAmFWCQECYUMBBQJiZgkAtQkCCQECYU8CBQJhVgkBAmF6AgkApAMBBQJhQQkApAMBBQJhQgUBagECYmgBAmJpAwkAAAIFAmJpBQFpBQR1bml0CQDZBAEFAmJpAQJiagECYmkDCQAAAgUCYmkFBHVuaXQFAWkJANgEAQkBBXZhbHVlAQUCYmkBAmJrAQJibAkAmQoHCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmJsBQFvCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmwFAXAJANkEAQkAkQMCBQJibAUBcQkBAmJoAQkAkQMCBQJibAUBcgkBAmJoAQkAkQMCBQJibAUBcwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJsBQF0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmwFAXUAAmJtCQECYmsBCQECYmUAAAJibgUCYm0AAmJvCAUCYm4CXzEAAmJwCAUCYm4CXzIAAmJxCAUCYm4CXzMAAmJyCAUCYm4CXzQAAmJzCAUCYm4CXzUAAmJ0CAUCYm4CXzYAAmJ1CAUCYm4CXzcBAmJ2AAkAtQkCCQECYU8CBQJhVgkBAmF2AAUBagACYncJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJidgAFAUICGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MAAmJ4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYnYABQFDAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAQJieQoCYnoCYkECYkICYkMCYkQCYkUCYkYCYkcCYkgCYkkJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJ6CQDMCAIJAKQDAQUCYkEJAMwIAgkApAMBBQJiQgkAzAgCCQCkAwEFAmJDCQDMCAIJAKQDAQUCYkQJAMwIAgkApAMBBQJiRQkAzAgCCQCkAwEFAmJGCQDMCAIJAKQDAQUCYkcJAMwIAgkApAMBBQJiSAkAzAgCCQCkAwEFAmJJBQNuaWwFAWoBAmJKBgJiSwJiTAJiTQJiQwJiRgJiRwkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJLCQDMCAIJAKQDAQUCYkwJAMwIAgkApAMBBQJiTQkAzAgCCQCkAwEFAmJDCQDMCAIJAKQDAQUCYkYJAMwIAgkApAMBBQJiRwUDbmlsBQFqAQJiTgECYXIEAmJPAwkAAAIFAmFyAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJhcgQCYlAJAGUCCQBkAgUCYk8JAQJhdAEFAmFyCQECYXUBBQJhcgkAlgMBCQDMCAIAAAkAzAgCBQJiUAUDbmlsAQJiUQICYlICYlMJALwCAwUCYlIFAWQFAmJTAQJiVAMCYlICYlMBTAkAvQIEBQJiUgUBZAUCYlMFAUwBAmJVAQJiVgQCYlcJAPwHBAUCYlYCB2dldFJhdGUFA25pbAUDbmlsAwkAAAIFAmJXBQJiVwQCYlgFAmJXAwkAAQIFAmJYAgNJbnQEAmJZBQJiWAUCYlkJAQJhUwECIHByb3h5LmdldFJhdGUoKSB1bmV4cGVjdGVkIHZhbHVlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJiWgQCYXICY2ECY2ICYlYEAmNjCQECYXQBBQJhcgMJAAACBQJjYwUCY2MEAmNkCQECYXUBBQJjYgMJAAACBQJjZAUCY2QEAmNlCQECYmgBBQJhcgMJAGYCBQJjYQAABAJjZgkA/AcEBQJiVgIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjZQUCY2EFA25pbAMJAAACBQJjZgUCY2YEAmJYBQJjZgMJAAECBQJiWAIDSW50BAJjZwUCYlgEAmNoCQBkAgUCY2MFAmNhBAJjaQkAZAIFAmNkBQJjZwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFxAQUCYXIFAmNoCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXMBBQJjYgUCY2kFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNqBgJhcgJjYQJjYgJiVgJjawJjbAQCY2MJAQJhdAEFAmFyAwkAAAIFAmNjBQJjYwQCY2QJAQJhdQEFAmNiAwkAAAIFAmNkBQJjZAQCY20JAQJiVQEFAmJWAwkAAAIFAmNtBQJjbQQCY24JAGsDBQJjawUCY2MFAmNkBAJjbwkBAmJoAQUCY2IEAmNwCQBrAwUCY2sFAmNhBQJjbgQCY3EJAGsDBQJjawUCY2EFAmNtBAJjcgkAlgMBCQDMCAIAAAkAzAgCCQBlAgUCY3AFAmNxBQNuaWwDCQBmAgUCY3EAAAQCY3MJAPwHBAUCYlYCCHdpdGhkcmF3BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNvBQJjcQUDbmlsAwkAAAIFAmNzBQJjcwQCYlgFAmNzAwkAAQIFAmJYAgNJbnQEAmN0BQJiWAQCY2gJAGUCBQJjYwUCY3QEAmNpCQBlAgkAZQIFAmNkBQJjcQUCY3IJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhcQEFAmFyBQJjaAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFzAQUCY2IFAmNpCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmNsBQJjcgkBAmJoAQUCY2IFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmN1AQJhcgkA/AcEBQJhVgIaZ2V0UG9vbExlYXNlQ29uZmlnUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzCQDMCAIFAmFyBQNuaWwFA25pbAECY3YHAmN3AmFyAmNiAmN4AmJWAmNrAmNsBAJjYwkBAmF0AQUCYXIDCQAAAgUCY2MFAmNjBAJjZAkBAmF1AQUCY2IDCQAAAgUCY2QFAmNkBAJjeQQCYlgJAQJiaAEFAmFyAwkAAQIFAmJYAgpCeXRlVmVjdG9yBAJjegUCYlgJAPAHAgUEdGhpcwUCY3oDCQABAgUCYlgCBFVuaXQEAmNBBQJiWAgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAAIBAgtNYXRjaCBlcnJvcgMJAAACBQJjeQUCY3kEAmNCCQCWAwEJAMwIAgAACQDMCAIJAGUCCQBkAgUCY3kFAmNjBQJjeAUDbmlsBAJjQwkAawMFAmN3BQJjQgBkBAJjRAkAZQIFAmNjBQJjQwMJAAACBQJjRAAABQNuaWwDCQBmAgAABQJjRAQCY0UJAQEtAQUCY0QJAQJiWgQFAmFyBQJjRQUCY2IFAmJWBAJjRgUCY0QJAQJjagYFAmFyBQJjRgUCY2IFAmJWBQJjawUCY2wJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNHAQJhcgQCYlgJAQJjdQEFAmFyAwkAAQIFAmJYAjAoQm9vbGVhbiwgSW50LCBJbnQsIFN0cmluZywgU3RyaW5nLCBJbnQsIFN0cmluZykEAmNIBQJiWAQCY0kFAmNIBAJjSggFAmNJAl8xBAJjSwgFAmNJAl8yBAJjeAgFAmNJAl8zBAJjTAgFAmNJAl80BAJjTQgFAmNJAl81BAJjawgFAmNJAl82BAJjTggFAmNJAl83AwUCY0oJAQJjdgcFAmNLBQJhcgUCY00FAmN4CQERQGV4dHJOYXRpdmUoMTA2MikBBQJjTAUCY2sJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmNOBQNuaWwJAQJhUwEJAKwCAgkArAICAgFbBQJhcgIRXSBSZWJhbGFuY2UgZXJyb3IBAmNPAgJhcgJjYQQCYlgJAQJjdQEFAmFyAwkAAQIFAmJYAjAoQm9vbGVhbiwgSW50LCBJbnQsIFN0cmluZywgU3RyaW5nLCBJbnQsIFN0cmluZykEAmNIBQJiWAQCY1AFAmNIBAJjSggFAmNQAl8xBAJjSwgFAmNQAl8yBAJjeAgFAmNQAl8zBAJjTAgFAmNQAl80BAJjTQgFAmNQAl81BAJjawgFAmNQAl82BAJjTggFAmNQAl83AwUCY0oJAQJjagYFAmFyBQJjYQUCY00JARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmNMBQJjawkBEUBleHRyTmF0aXZlKDEwNjIpAQUCY04FA25pbAkBAmFTAQkArAICCQCsAgICAVsFAmFyAh5dIHdpdGhkcmF3QXNzZXRXcmFwcGVyKCkgZXJyb3IBAmNRAgJhcgJjYQQCY1IEAmJYCQECYmgBBQJhcgMJAAECBQJiWAIKQnl0ZVZlY3RvcgQCY3oFAmJYCQDwBwIFBHRoaXMFAmN6AwkAAQIFAmJYAgRVbml0BAJjUwUCYlgICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQACAQILTWF0Y2ggZXJyb3IDCQBmAgUCY2EFAmNSBAJjVAkAZQIFAmNhBQJjUgkBAmNPAgUCYXIFAmNUBQNuaWwBAmNVBAJjVgJjVwJjWAJjWQQCY1oJAQFEAgUCY1gFAmNWBAJkYQkBAUQCBQJjWQUCY1cJAQJiUQIFAmRhBQJjWgECZGIDAmNYAmNZAmRjBAJkZAkBAmJlAAQCZGUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkZAUBdAQCZGYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkZAUBdQQCZGcJAQJjVQQFAmRlBQJkZgUCY1gFAmNZBAJiUwkBAUQCBQJjWAUCZGUEAmJSCQEBRAIFAmNZBQJkZgQCZGgJAQFEAgUCZGMFAWIEAmRpCQECYlECBQJiUwUCZGgEAmRqCQECYlECBQJiUgUCZGgJAMwIAgUCZGcJAMwIAgUCZGkJAMwIAgUCZGoFA25pbAECZGsDAmNYAmNZAmRjBAJkbAkBAmRiAwUCY1gFAmNZBQJkYwkAzAgCCQEBSAIJAJEDAgUCZGwAAAUBYgkAzAgCCQEBSAIJAJEDAgUCZGwAAQUBYgkAzAgCCQEBSAIJAJEDAgUCZGwAAgUBYgUDbmlsAQJkbQQCZG4CZG8CZHACYWIEAmRkCQECYmUABAJkcQkAkQMCBQJkZAUBcQQCZHIJAJEDAgUCZGQFAXIEAmRzCQCRAwIFAmRkBQFzBAJjVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRkBQF0BAJjVwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRkBQF1BAJkdAkAkQMCBQJkZAUBcAQCZHUICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJkcQkArAICCQCsAgICBkFzc2V0IAUCZHECDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5AwkBAiE9AgUCZHEFAmRvCQACAQIVSW52YWxpZCBhc3NldCBwYXNzZWQuBAJkdgkBAmJOAQUCZHIEAmR3CQEBRAIFAmR2BQJjVgQCZHgJAQJiTgEFAmRzBAJkeQkBAUQCBQJkeAUCY1cEAmR6CQECYlECBQJkeQUCZHcEAmRBCQEBSAIFAmR6BQFiBAJkQgkBAUQCBQJkcAUBYgQCZEMJAQFEAgUCZHUFAWIEAmRECQC8AgMFAmR3BQJkQgUCZEMEAmRFCQC8AgMFAmR5BQJkQgUCZEMEAmRGCQEBSwMFAmREBQJjVgUFRkxPT1IEAmRHCQEBSwMFAmRFBQJjVwUFRkxPT1IEAmRICQECY1ECBQJkcgUCZEYDCQAAAgUCZEgFAmRIBAJkSQkBAmNRAgUCZHMFAmRHAwkAAAIFAmRJBQJkSQQCZEoJAPwHBAUEdGhpcwIJcmViYWxhbmNlBQNuaWwFA25pbAMJAAACBQJkSgUCZEoEAmRLAwkAAAIFAmRuAgAFA25pbAkAzggCCQDOCAIFAmRIBQJkSQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCZEYDCQAAAgUCZHICBVdBVkVTBQR1bml0CQDZBAEFAmRyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFiBQJkRwMJAAACBQJkcwIFV0FWRVMFBHVuaXQJANkEAQUCZHMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAgkApQgBBQJhYgUCZG4JAQJiSgYFAmRGBQJkRwUCZHAFAmRBBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmRBCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRBBQNuaWwJAJwKCgUCZEYFAmRHBQJkcgUCZHMFAmR2BQJkeAUCZHUFAmR6BQJkdAUCZEsJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmRMCQJkbgJkTQJkTgJkTwJkUAJkUQJhYgJkUgJkUwQCZGQJAQJiZQAEAmRxCQDZBAEJAJEDAgUCZGQFAXEEAmRUCQCRAwIFAmRkBQFyBAJkVQkAkQMCBQJkZAUBcwQCZFYJAJEDAgUCZGQFAXYEAmRXCQCRAwIFAmRkBQF3BAJkZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRkBQF0BAJkZgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRkBQF1BAJkdAkAkQMCBQJkZAUBcAQCZHUICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZHEJAKwCAgkArAICAgZBc3NldCAJANgEAQUCZHECDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJkWAkA2AQBCQELdmFsdWVPckVsc2UCBQJkTwkA2QQBAgVXQVZFUwQCZFkJANgEAQkBC3ZhbHVlT3JFbHNlAgUCZFEJANkEAQIFV0FWRVMDAwkBAiE9AgUCZFQFAmRYBgkBAiE9AgUCZFUFAmRZCQACAQIiSW52YWxpZCBhbXQgb3IgcHJpY2UgYXNzZXQgcGFzc2VkLgQCZHYDBQJkUgkBAmJOAQUCZFQJAGUCCQECYk4BBQJkVAUCZE4EAmR4AwUCZFIJAQJiTgEFAmRVCQBlAgkBAmJOAQUCZFUFAmRQBAJkWgkBAUQCBQJkTgUCZGUEAmVhCQEBRAIFAmRQBQJkZgQCZWIJAQJiUQIFAmVhBQJkWgQCZHcJAQFEAgUCZHYFAmRlBAJkeQkBAUQCBQJkeAUCZGYEAmVjAwkAAAIFAmR1AAAEAmR6BQFlBAJlZAUBZQQCZGgJAHYGCQC5AgIFAmRaBQJlYQAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUgCBQJkaAUBYgkBAUgCBQJkWgUCZGUJAQFIAgUCZWEFAmRmCQECYlECCQC3AgIFAmR5BQJlYQkAtwICBQJkdwUCZFoFAmVkBAJkegkBAmJRAgUCZHkFAmR3BAJlZAkAvAIDCQEBUgEJALgCAgUCZHoFAmViBQFkBQJkegQCZWUJAQFEAgUCZE0FAWIDAwkBAiE9AgUCZHoFAWUJAL8CAgUCZWQFAmVlBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJlZAIeIGV4Y2VlZGVkIHRoZSBwYXNzZWQgbGltaXQgb2YgCQCmAwEFAmVlBAJkQwkBAUQCBQJkdQUBYgQCZWYJAL0CBAUCZFoJAQJiVAMFAmR5BQJkdwUHQ0VJTElORwUBZAUHQ0VJTElORwQCZWcJAL0CBAUCZWEFAWQJAQJiVAMFAmR5BQJkdwUFRkxPT1IFB0NFSUxJTkcEAmVoAwkAvwICBQJlZgUCZWEJAJQKAgUCZWcFAmVhCQCUCgIFAmRaBQJlZgQCZWkIBQJlaAJfMQQCZWoIBQJlaAJfMgQCZGgJAL0CBAUCZEMFAmVqBQJkeQUFRkxPT1IJAJcKBQkBAUsDBQJkaAUBYgUFRkxPT1IJAQFLAwUCZWkFAmRlBQdDRUlMSU5HCQEBSwMFAmVqBQJkZgUHQ0VJTElORwUCZHoFAmVkBAJlawgFAmVjAl8xBAJlbAgFAmVjAl8yBAJlbQgFAmVjAl8zBAJkQQkBAUgCCAUCZWMCXzQFAWIEAmVuCQEBSAIIBQJlYwJfNQUBYgMJAGcCAAAFAmVrCQACAQI2SW52YWxpZCBjYWxjdWxhdGlvbnMuIExQIGNhbGN1bGF0ZWQgaXMgbGVzcyB0aGFuIHplcm8uBAJlbwMJAQEhAQUCZFMAAAUCZWsEAmVwCQBlAgUCZE4FAmVsBAJlcQkAZQIFAmRQBQJlbQQCZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZEEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZEEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgUCYWIFAmRuCQECYnkKBQJlbAUCZW0FAmVvBQJkQQUCZE0FAmVuBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJlcAUCZXEFA25pbAkAnwoNBQJlawUCZW8FAmRBBQJkdgUCZHgFAmR1BQJkcQUCZHQFAmVyBQJlcAUCZXEFAmRPBQJkUQECZXMDAmV0AmV1AmR1BAJldgkBAUcCBQJldAkAtgIBBQJidAQCZXcJAQFHAgUCZXUJALYCAQUCYnUEAmV4CQC8AgMJAHYGCQC5AgIFAmV2BQJldwAACQC2AgEABQABABIFBERPV04FAWcFAmR1AwkAAAIFAmR1BQFmBQFmBQJleAECZXkDAmV6AmVBAmVCBAJlQwkAuAICCQC2AgEJAQJiTgEJAQJiagEFAmJyBQJlegQCZUQJALgCAgkAtgIBCQECYk4BCQECYmoBBQJicwUCZUEEAmVFCQC4AgIJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYnEIcXVhbnRpdHkFAmVCBAJlRgkBAmVzAwUCZUMFAmVEBQJlRQUCZUYBAmVHAwJlSAJlSQJlQgQCZUMJAGQCCQECYk4BCQECYmoBBQJicgUCZUgEAmVECQBkAgkBAmJOAQkBAmJqAQUCYnMFAmVJBAJlRQkAZAIICQEFdmFsdWUBCQDsBwEFAmJxCHF1YW50aXR5BQJlQgQCZXgJAQJlcwMJALYCAQUCZUMJALYCAQUCZUQJALYCAQUCZUUEAmVKCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJhawUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFAmFqCQCmAwEFAmV4BQNuaWwJAJQKAgUCZUoFAmV4AQJlSwICZUwCZXgDCQDAAgIFAmV4BQJlTAYJAQJhUwEJALkJAgkAzAgCAiJ1cGRhdGVkIEtMcCBsb3dlciB0aGFuIGN1cnJlbnQgS0xwCQDMCAIJAKYDAQUCZUwJAMwIAgkApgMBBQJleAUDbmlsAgEgAQJlTQECZU4EAmVDCQECYk4BCQECYmoBBQJicgQCZUQJAQJiTgEJAQJiagEFAmJzBAJlTwgFAmVOBmFtb3VudAQCZVAJAG4ECAUCZU4GYW1vdW50CAUCZU4FcHJpY2UFAWIFBUZMT09SBAJlUQMJAAACCAUCZU4Jb3JkZXJUeXBlBQNCdXkJAJQKAgUCZU8JAQEtAQUCZVAJAJQKAgkBAS0BBQJlTwUCZVAEAmVICAUCZVECXzEEAmVJCAUCZVECXzIDAwMJAQJiYwAGCQAAAgUCYnAFAW0GCQAAAgUCYnAFAW4JAAIBAhxFeGNoYW5nZSBvcGVyYXRpb25zIGRpc2FibGVkAwMJAQIhPQIICAUCZU4JYXNzZXRQYWlyC2Ftb3VudEFzc2V0BQJicgYJAQIhPQIICAUCZU4JYXNzZXRQYWlyCnByaWNlQXNzZXQFAmJzCQACAQITV3Jvbmcgb3JkZXIgYXNzZXRzLgQCZVIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFqAgEwCQECYVUBAgtpbnZhbGlkIGtMcAQCZVMJAQJlRwMFAmVIBQJlSQAABAJlVAgFAmVTAl8xBAJlVQgFAmVTAl8yBAJlVgkAwAICBQJlVQUCZVIEAmVXCQC5CQIJAMwIAgIEa0xwPQkAzAgCCQCmAwEFAmVSCQDMCAICCCBrTHBOZXc9CQDMCAIJAKYDAQUCZVUJAMwIAgIUIGFtb3VudEFzc2V0QmFsYW5jZT0JAMwIAgkApAMBBQJlQwkAzAgCAhMgcHJpY2VBc3NldEJhbGFuY2U9CQDMCAIJAKQDAQUCZUQJAMwIAgIZIGFtb3VudEFzc2V0QmFsYW5jZURlbHRhPQkAzAgCCQCkAwEFAmVICQDMCAICGCBwcmljZUFzc2V0QmFsYW5jZURlbHRhPQkAzAgCCQCkAwEFAmVJCQDMCAICCCBoZWlnaHQ9CQDMCAIJAKQDAQUGaGVpZ2h0BQNuaWwCAAkAlAoCBQJlVgUCZVcBAmVYAQJlWQMJAQIhPQIJAJADAQgFAmVZCHBheW1lbnRzAAEJAAIBAh1leGFjdGx5IDEgcGF5bWVudCBpcyBleHBlY3RlZAQCZVoJAQV2YWx1ZQEJAJEDAggFAmVZCHBheW1lbnRzAAAEAmRvCQEFdmFsdWUBCAUCZVoHYXNzZXRJZAQCZmEIBQJlWgZhbW91bnQEAmVjCQECZG0ECQDYBAEIBQJlWQ10cmFuc2FjdGlvbklkCQDYBAEFAmRvBQJmYQgFAmVZBmNhbGxlcgQCZEYIBQJlYwJfMQQCZEcIBQJlYwJfMgQCZHQJAQ1wYXJzZUludFZhbHVlAQgFAmVjAl85BAJkSwgFAmVjA18xMAMDCQECYmMABgkAAAIFAmR0BQFuCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJkdAkAlwoFBQJkRgUCZEcFAmZhBQJkbwUCZEsBAmZiAwJlWQJkTQJkUwMJAQIhPQIJAJADAQgFAmVZCHBheW1lbnRzAAIJAAIBAh9leGFjdGx5IDIgcGF5bWVudHMgYXJlIGV4cGVjdGVkBAJmYwkBBXZhbHVlAQkAkQMCCAUCZVkIcGF5bWVudHMAAAQCZmQJAQV2YWx1ZQEJAJEDAggFAmVZCHBheW1lbnRzAAEEAmZlCQECZEwJCQDYBAEIBQJlWQ10cmFuc2FjdGlvbklkBQJkTQgFAmZjBmFtb3VudAgFAmZjB2Fzc2V0SWQIBQJmZAZhbW91bnQIBQJmZAdhc3NldElkCQClCAEIBQJlWQZjYWxsZXIHBQJkUwQCZHQJAQ1wYXJzZUludFZhbHVlAQgFAmZlAl84AwMDCQECYmMABgkAAAIFAmR0BQFsBgkAAAIFAmR0BQFuCQACAQkArAICAixQdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJkdAUCZmUBAmZmAQJjYQQCZmcJAPwHBAUCYVYCBGVtaXQJAMwIAgUCY2EFA25pbAUDbmlsAwkAAAIFAmZnBQJmZwQCZmgEAmJYBQJmZwMJAAECBQJiWAIHQWRkcmVzcwQCZmkFAmJYCQD8BwQFAmZpAgRlbWl0CQDMCAIFAmNhBQNuaWwFA25pbAUEdW5pdAMJAAACBQJmaAUCZmgFAmNhCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmagICY2ECYWkEAmZrAwkAAAIFAmFpAAAAAAkAawMFAmNhBQJhaQUBYgkAlAoCCQBlAgUCY2EFAmZrBQJmawECZmwEAmZtAmZuAmFiAmFjBAJmbwkAAAIFAmFjBQR1bml0BAJmcAkBAmJOAQkBAmJqAQUCYnIEAmZxCQECYk4BCQECYmoBBQJicwQCZnIDCQAAAgUCZm4FAmJyBgMJAAACBQJmbgUCYnMHCQECYVMBAg1pbnZhbGlkIGFzc2V0BAJmcwMFAmZvCQCUCgIFAmZwBQJmcQMFAmZyCQCUCgIJAGUCBQJmcAUCZm0FAmZxCQCUCgIFAmZwCQBlAgUCZnEFAmZtBAJmdAgFAmZzAl8xBAJmdQgFAmZzAl8yBAJmdgMFAmZyCQCUCgIFAmZtAAAJAJQKAgAABQJmbQQCZncIBQJmdgJfMQQCZngIBQJmdgJfMgQCZU8ICQECZmoCBQJmdwUCYVgCXzEEAmVQCAkBAmZqAgUCZngFAmFYAl8xBAJmeQkBAmZqAgUCZm0FAmFYBAJmeggFAmZ5Al8xBAJmawgFAmZ5Al8yBAJmQQkAZAIFAmZ0BQJlTwQCZkIJAGQCBQJmdQUCZVAEAmZDCQECYlECCQEBRAIFAmZCBQJidQkBAUQCBQJmQQUCYnQEAmZECQEBSAIFAmZDBQFiBAJmRQMFAmZyBQJmdAUCZnUEAmZGCQC2AgEFAmZFBAJmRwkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJxCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmJxAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZkgDCQC/AgIFAmZHBQFmBgkBAmFTAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJmSAUCZkgEAmZJCQC2AgEFAmZ6BAJmSgkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJmRwkAuAICCQEKc3FydEJpZ0ludAQJALcCAgUBZAkAugICCQC5AgIFAmZJBQFkBQJmRgASABIFBERPV04FAWQFAWQFA25pbAQCZXIDBQJmbwUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmZECQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmZECQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIJAKUIAQkBBXZhbHVlAQUCYWIJANgEAQkBBXZhbHVlAQUCYWMJAQJieQoFAmZ3BQJmeAUCZkoFAmZEAAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZksJAQJiUQIJAQFEAgUCZnUFAmJ1CQEBRAIFAmZ0BQJidAQCZkwJAQFIAgUCZksFAWIEAmZNBAJmTgMFAmZyCQCUCgIFAmZ3BQJmdAkAlAoCBQJmeAUCZnUEAmNhCAUCZk4CXzEEAmZPCAUCZk4CXzIEAmZQCQCgAwEJALwCAwUCZkcJALYCAQkAaQIFAmNhAAIJALYCAQUCZk8JAGsDCQBlAgUCZkoFAmZQBQFiBQJmUAkAlwoFBQJmSgUCZXIFAmZrBQJmTQUCZnIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZRBQJmUgJmegJmbgJhYgJhYwQCZm8JAAACBQJhYwUEdW5pdAQCZGQJAQJiZQAEAmRlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGQFAXQEAmRmCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGQFAXUEAmZTCQDMCAIDCQAAAgUCZm4FAmJxBgkBAmFTAQIQaW52YWxpZCBscCBhc3NldAUDbmlsAwkAAAIFAmZTBQJmUwQCZlQDCQAAAgUCZlIFAmJyBgMJAAACBQJmUgUCYnMHCQECYVMBAg1pbnZhbGlkIGFzc2V0BAJmVQMFAmZUCQC2AgEJAQJiTgEJAQJiagEFAmJyCQC2AgEJAQJiTgEJAQJiagEFAmJzBAJmVgMFAmZUBQJkZQUCZGYEAmZXCQECYk4BCQECYmoBBQJicgQCZlgJAQJiTgEJAQJiagEFAmJzBAJmWQMFAmZUBQJmVwUCZlgEAmZaCQC2AgEFAmZZBAJmRwkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJxCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmJxAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZ2EJALYCAQUCZnoEAmdiCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmZVCQC4AgIFAWQJAHYGCQC4AgIFAWQJALoCAgkAuQICBQJnYQUBZAUCZkcAEgUBaAAAABIFBERPV04FAWQFA25pbAQCZ2MJAQJmagIFAmdiBQJhWgQCZ2QIBQJnYwJfMQQCZmsIBQJnYwJfMgQCZ2UDBQJmVAkAlgoEBQJnZAAACQBlAgUCZlcFAmdiBQJmWAkAlgoEAAAFAmdkBQJmVwkAZQIFAmZYBQJnYgQCZ2YIBQJnZQJfMQQCZ2cIBQJnZQJfMgQCZ2gIBQJnZQJfMwQCZ2kIBQJnZQJfNAQCZkMJAQJiUQIJAQFEAgUCZ2kFAmJ1CQEBRAIFAmdoBQJidAQCZkQJAQFIAgUCZkMFAWIEAmVyAwUCZm8FA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQCCQClCAEJAQV2YWx1ZQEFAmFiCQDYBAEJAQV2YWx1ZQEFAmFjCQECYkoGBQJnZgUCZ2cFAmZ6BQJmRAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJmRAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJmRAUDbmlsBAJmSwkBAmJRAgkBAUQCBQJmWAUCYnUJAQFEAgUCZlcFAmJ0BAJmTAkBAUgCBQJmSwUBYgQCZk0EAmdqCQBoAgkAoAMBCQC8AgMFAmZVBQJnYQUCZkcAAgkAawMJAGUCBQJnZAUCZ2oFAWIFAmdqCQCXCgUFAmdkBQJlcgUCZmsFAmZNBQJmVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZ2sABAJiWAkAoggBCQEBVQADCQABAgUCYlgCBlN0cmluZwQCZ2wFAmJYCQDZBAEFAmdsAwkAAQIFAmJYAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmdtAAQCYlgJAKIIAQkBAVYAAwkAAQIFAmJYAgZTdHJpbmcEAmdsBQJiWAkA2QQBBQJnbAMJAAECBQJiWAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJnbgECZVkEAmJYCQECZ2sAAwkAAQIFAmJYAgpCeXRlVmVjdG9yBAJnbwUCYlgJAAACCAUCZVkPY2FsbGVyUHVibGljS2V5BQJnbwMJAAECBQJiWAIEVW5pdAkAAAIIBQJlWQZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZ3ABAmVZBAJncQkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAJiWAkBAmdrAAMJAAECBQJiWAIKQnl0ZVZlY3RvcgQCZ28FAmJYAwkAAAIIBQJlWQ9jYWxsZXJQdWJsaWNLZXkFAmdvBgUCZ3EDCQABAgUCYlgCBFVuaXQDCQAAAggFAmVZBmNhbGxlcgUEdGhpcwYFAmdxCQACAQILTWF0Y2ggZXJyb3IeAmVZAQlyZWJhbGFuY2UACQDOCAIJAQJjRwEJAQJhTwIFBHRoaXMJAQJhZQAJAQJjRwEJAQJhTwIFBHRoaXMJAQJhZgACZVkBIWNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBSRUFET05MWQMCZ3ICZ3MCZ3QEAmd1AwkAAAIFAmdzBwQCZ3YJAQJhTwIFBHRoaXMJAQJhZgAEAmd3CQECYU8CBQR0aGlzCQECYWUACQCUCgIFAmd2BQJndwQCZ3YJAQJhTwIFBHRoaXMJAQJhZQAEAmd3CQECYU8CBQR0aGlzCQECYWYACQCUCgIFAmd2BQJndwQCZ3YIBQJndQJfMQQCZ3cIBQJndQJfMgQCZ3gJAQJiTgEFAmd3BAJneQkBAmJOAQUCZ3YEAmd6CQBrAwUCZ3kFAmdyCQBkAgUCZ3gFAmdyBAJnQQkAuQICCQC2AgEFAmd4CQC2AgEFAmd5BAJnQgkAuQICCQC3AgIJALcCAgkAtgIBCQECYk4BBQJndwkAtgIBBQJncgkAtgIBBQJndAkAuAICCQC2AgEJAQJiTgEFAmd2CQC2AgEFAmd6BAJnQwMJAMACAgUCZ0IFAmdBBgkAAgECFG5ldyBLIGlzIGZld2VyIGVycm9yAwkAAAIFAmdDBQJnQwkAlAoCBQNuaWwFAmd6CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVZASZjYWxjdWxhdGVBbW91bnRPdXRGb3JTd2FwQW5kU2VuZFRva2VucwUCZ3ICZ3MCZ0QCZ0UCZ3QEAmdGCgACYVkJAPwHBAUCYVYCF2dldFN3YXBDb250cmFjdFJFQURPTkxZBQNuaWwFA25pbAMJAAECBQJhWQIGU3RyaW5nBQJhWQkAAgEJAKwCAgkAAwEFAmFZAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcEAmZTCQDMCAIDCQBnAggJAQV2YWx1ZQEJAJEDAggFAmVZCHBheW1lbnRzAAAGYW1vdW50BQJncgYJAQJhUwECDFdyb25nIGFtb3VudAkAzAgCAwkAAAIIBQJlWQZjYWxsZXIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmdGBgkBAmFTAQIRUGVybWlzc2lvbiBkZW5pZWQFA25pbAMJAAACBQJmUwUCZlMEAmVaCQEFdmFsdWUBCQCRAwIIBQJlWQhwYXltZW50cwAABAJndwkBAmJqAQgFAmVaB2Fzc2V0SWQEAmd2AwkAAAIFAmdzBwkBAmFPAgUEdGhpcwkBAmFmAAkBAmFPAgUEdGhpcwkBAmFlAAQCZ3gJAGUCCQECYk4BBQJndwgJAQV2YWx1ZQEJAJEDAggFAmVZCHBheW1lbnRzAAAGYW1vdW50BAJneQkBAmJOAQUCZ3YEAmd6CQBrAwUCZ3kFAmdyCQBkAgUCZ3gFAmdyBAJnQQkAuQICCQC2AgEFAmd4CQC2AgEFAmd5BAJnQgkAuQICCQC3AgIJALYCAQkBAmJOAQUCZ3cJALYCAQUCZ3QJALgCAgkAtgIBCQECYk4BBQJndgkAtgIBBQJnegQCZ0MDCQDAAgIFAmdCBQJnQQYJAAIBAhRuZXcgSyBpcyBmZXdlciBlcnJvcgMJAAACBQJnQwUCZ0MEAmdHAwkAZwIFAmd6BQJnRAYJAAIBAixFeGNoYW5nZSByZXN1bHQgaXMgZmV3ZXIgY29pbnMgdGhhbiBleHBlY3RlZAMJAAACBQJnRwUCZ0cEAmdIBAJiWAkBAmN1AQUCZ3YDCQABAgUCYlgCMChCb29sZWFuLCBJbnQsIEludCwgU3RyaW5nLCBTdHJpbmcsIEludCwgU3RyaW5nKQQCY0gFAmJYBQJjSAkAAgECEmVycm9yIGxlYXNlIGNvbmZpZwQCZ0kJAQJjUQIFAmd2BQJnegMJAAACBQJnSQUCZ0kEAmRKCQD8BwQFBHRoaXMCCXJlYmFsYW5jZQUDbmlsBQNuaWwDCQAAAgUCZEoFAmRKCQCUCgIJAM4IAgUCZ0kJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ0UFAmd6CQECYmgBBQJndgUDbmlsBQJnegkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlWQEKc2V0TWFuYWdlcgECZ0oEAmdLCQECZ3ABBQJlWQMJAAACBQJnSwUCZ0sEAmdMCQDZBAEFAmdKAwkAAAIFAmdMBQJnTAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVgAFAmdKBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVkBDmNvbmZpcm1NYW5hZ2VyAAQCZ00JAQJnbQAEAmdOAwkBCWlzRGVmaW5lZAEFAmdNBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJnTgUCZ04EAmdPAwkAAAIIBQJlWQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmdNBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJnTwUCZ08JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVUACQDYBAEJAQV2YWx1ZQEFAmdNCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFWAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVZAQNwdXQCAmRNAmdQAwkAZgIAAAUCZE0JAAIBAiBJbnZhbGlkIHNsaXBwYWdlVG9sZXJhbmNlIHBhc3NlZAQCZmUJAQJmYgMFAmVZBQJkTQYEAmVvCAUCZmUCXzIEAmRxCAUCZmUCXzcEAmRLCAUCZmUCXzkEAmVwCAUCZmUDXzEwBAJlcQgFAmZlA18xMQQCZ1EIBQJmZQNfMTIEAmdSCAUCZmUDXzEzBAJmYwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZVkIcGF5bWVudHMAAAZhbW91bnQEAmZkCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJlWQhwYXltZW50cwABBmFtb3VudAQCZUYJAQJleQMFAmZjBQJmZAkAtgIBAAADCQAAAgUCZUYFAmVGBAJmZwkA/AcEBQJhVgIEZW1pdAkAzAgCBQJlbwUDbmlsBQNuaWwDCQAAAgUCZmcFAmZnBAJmaAQCYlgFAmZnAwkAAQIFAmJYAgdBZGRyZXNzBAJmaQUCYlgJAPwHBAUCZmkCBGVtaXQJAMwIAgUCZW8FA25pbAUDbmlsBQR1bml0AwkAAAIFAmZoBQJmaAQCZ1MDCQBmAgUCZXAAAAkA/AcEBQJieAIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdRBQJlcAUDbmlsBQNuaWwDCQAAAgUCZ1MFAmdTBAJnVAMJAGYCBQJlcQAACQD8BwQFAmJ4AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ1IFAmVxBQNuaWwFA25pbAMJAAACBQJnVAUCZ1QEAmdVAwUCZ1AEAmdWCQD8BwQFAmJ3AgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkcQUCZW8FA25pbAMJAAACBQJnVgUCZ1YFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZVkGY2FsbGVyBQJlbwUCZHEFA25pbAQCZ1cJAQJlRwMAAAAAAAADCQAAAgUCZ1cFAmdXBAJleAgFAmdXAl8yBAJnWAgFAmdXAl8xBAJnWQkBAmVLAgUCZUYFAmV4AwkAAAIFAmdZBQJnWQQCZEoJAPwHBAUEdGhpcwIJcmViYWxhbmNlBQNuaWwFA25pbAMJAAACBQJkSgUCZEoJAM4IAgkAzggCBQJkSwUCZ1UFAmdYCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVZAQpwdXRGb3JGcmVlAQJnWgMJAGYCAAAFAmdaCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEAmZlCQECZmIDBQJlWQUCZ1oHBAJkSwgFAmZlAl85BAJmYwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZVkIcGF5bWVudHMAAAZhbW91bnQEAmZkCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJlWQhwYXltZW50cwABBmFtb3VudAQCZUYJAQJleQMFAmZjBQJmZAkAtgIBAAADCQAAAgUCZUYFAmVGBAJoYQkBAmVHAwAAAAAAAAQCZ1gIBQJoYQJfMQQCZXgIBQJoYQJfMgQCZ1kJAQJlSwIFAmVGBQJleAMJAAACBQJnWQUCZ1kJAM4IAgUCZEsFAmdYCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVZAQlwdXRPbmVUa24CAmhiAmhjBAJoZAoAAmFZCQD8BwQFAmFWAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVkCB0Jvb2xlYW4FAmFZCQACAQkArAICCQADAQUCYVkCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmhlAwMDCQECYmMABgkAAAIFAmJwBQFsBgkAAAIFAmJwBQFuBgUCaGQEAmZTCQDMCAIDAwkBASEBBQJoZQYJAQJnbgEFAmVZBgkBAmFTAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZVkIcGF5bWVudHMAAQYJAQJhUwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZTBQJmUwQCaGYJAJEDAggFAmVZCHBheW1lbnRzAAAEAmZuCAUCaGYHYXNzZXRJZAQCZm0IBQJoZgZhbW91bnQEAmVGAwkAAAIFAmZuBQJicgkBAmV5AwkAtgIBBQJmbQkAtgIBAAAJALYCAQAAAwkAAAIFAmZuBQJicwkBAmV5AwkAtgIBAAAJALYCAQUCZm0JALYCAQAACQECYVMBAh5wYXltZW50IGFzc2V0IGlzIG5vdCBzdXBwb3J0ZWQDCQAAAgUCZUYFAmVGBAJhYggFAmVZBmNhbGxlcgQCYWMIBQJlWQ10cmFuc2FjdGlvbklkBAJoZwkBAmZsBAUCZm0FAmZuBQJhYgUCYWMDCQAAAgUCaGcFAmhnBAJmcggFAmhnAl81BAJoaAgFAmhnAl80BAJmawgFAmhnAl8zBAJlcggFAmhnAl8yBAJoaQgFAmhnAl8xBAJoagMDCQBmAgUCaGIAAAkAZgIFAmhiBQJoaQcJAQJhUwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaGIFA25pbAIABQJoaQQCZmcJAQJmZgEFAmhqAwkAAAIFAmZnBQJmZwQCZ1UDBQJoYwQCaGsJAPwHBAUCYncCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJxBQJoagUDbmlsAwkAAAIFAmhrBQJoawUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJlWQZjYWxsZXIFAmhqBQJicQUDbmlsBAJobAMJAGYCBQJmawAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFXBQJmawUCZm4FA25pbAUDbmlsBAJobQMJAAACBQR0aGlzBQJhVwkAlAoCAAAAAAMFAmZyCQCUCgIJAQEtAQUCZmsAAAkAlAoCAAAJAQEtAQUCZmsEAmVICAUCaG0CXzEEAmVJCAUCaG0CXzIEAmhuCQECZUcDBQJlSAUCZUkAAAQCZ1gIBQJobgJfMQQCZXgIBQJobgJfMgQCZVIJAQV2YWx1ZQEJAKIIAQUCYWoEAmdZCQECZUsCBQJlRgUCZXgDCQAAAgUCZ1kFAmdZBAJkSgkA/AcEBQR0aGlzAglyZWJhbGFuY2UFA25pbAUDbmlsAwkAAAIFAmRKBQJkSgkAlAoCCQDOCAIJAM4IAgkAzggCBQJlcgUCZ1UFAmhsBQJnWAUCaGoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVkBEXB1dE9uZVRrblJFQURPTkxZAgJmbgJmbQQCaG8JAQJmbAQFAmZtCQECYmgBBQJmbgUEdW5pdAUEdW5pdAQCaGkIBQJobwJfMQQCZXIIBQJobwJfMgQCZmsIBQJobwJfMwQCaGgIBQJobwJfNAQCZnIIBQJobwJfNQkAlAoCBQNuaWwJAJUKAwUCaGkFAmZrBQJoaAJlWQEJZ2V0T25lVGtuAgJocAJoYgQCaGQKAAJhWQkA/AcEBQJhVgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFZAgdCb29sZWFuBQJhWQkAAgEJAKwCAgkAAwEFAmFZAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJocQMDCQECYmMABgkAAAIFAmJwBQFuBgUCaGQEAmZTCQDMCAIDAwkBASEBBQJocQYJAQJnbgEFAmVZBgkBAmFTAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZVkIcGF5bWVudHMAAQYJAQJhUwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZTBQJmUwQCZlIJAQJiaAEFAmhwBAJoZgkAkQMCCAUCZVkIcGF5bWVudHMAAAQCZm4IBQJoZgdhc3NldElkBAJmeggFAmhmBmFtb3VudAQCZUYJAQJleQMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZUYFAmVGBAJhYggFAmVZBmNhbGxlcgQCYWMIBQJlWQ10cmFuc2FjdGlvbklkBAJocgkBAmZRBQUCZlIFAmZ6BQJmbgUCYWIFAmFjAwkAAAIFAmhyBQJocgQCZlQIBQJocgJfNQQCaGgIBQJocgJfNAQCZmsIBQJocgJfMwQCZXIIBQJocgJfMgQCaHMIBQJocgJfMQQCY2EDAwkAZgIFAmhiAAAJAGYCBQJoYgUCaHMHCQECYVMBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhiBQNuaWwCAAUCaHMEAmdIBAJiWAkBAmN1AQUCaHADCQABAgUCYlgCMChCb29sZWFuLCBJbnQsIEludCwgU3RyaW5nLCBTdHJpbmcsIEludCwgU3RyaW5nKQQCY0gFAmJYBQJjSAkAAgECEmVycm9yIGxlYXNlIGNvbmZpZwQCaHQJAPwHBAUCYVYCBGJ1cm4JAMwIAgUCZnoFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZm4FAmZ6BQNuaWwDCQAAAgUCaHQFAmh0BAJnSQkBAmNRAgUCaHAFAmNhAwkAAAIFAmdJBQJnSQQCaHUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmNhBQJmUgUDbmlsBAJobAMJAGYCBQJmawAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFXBQJmawUCZlIFA25pbAUDbmlsBAJodgQCaHcDCQAAAgUEdGhpcwUCYVcAAAUCZmsDBQJmVAkAlAoCCQEBLQEJAGQCBQJjYQUCaHcAAAkAlAoCAAAJAQEtAQkAZAIFAmNhBQJodwQCZUgIBQJodgJfMQQCZUkIBQJodgJfMgQCaHgJAQJlRwMFAmVIBQJlSQAABAJnWAgFAmh4Al8xBAJleAgFAmh4Al8yBAJnWQkBAmVLAgUCZUYFAmV4AwkAAAIFAmdZBQJnWQQCZEoJAPwHBAUEdGhpcwIJcmViYWxhbmNlBQNuaWwFA25pbAMJAAACBQJkSgUCZEoJAJQKAgkAzggCCQDOCAIJAM4IAgkAzggCBQJlcgUCZ0kFAmh1BQJobAUCZ1gFAmNhCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVZARFnZXRPbmVUa25SRUFET05MWQICZlICZnoEAmh5CQECZlEFCQECYmgBBQJmUgUCZnoFAmJxBQR1bml0BQR1bml0BAJocwgFAmh5Al8xBAJlcggFAmh5Al8yBAJmawgFAmh5Al8zBAJoaAgFAmh5Al80BAJmVAgFAmh5Al81CQCUCgIFA25pbAkAlQoDBQJocwUCZmsFAmhoAmVZARN1bnN0YWtlQW5kR2V0T25lVGtuAwJoegJocAJoYgQCaGQKAAJhWQkA/AcEBQJhVgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFZAgdCb29sZWFuBQJhWQkAAgEJAKwCAgkAAwEFAmFZAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJocQMDCQECYmMABgkAAAIFAmJwBQFuBgUCaGQEAmZTCQDMCAIDAwkBASEBBQJocQYJAQJnbgEFAmVZBgkBAmFTAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZVkIcGF5bWVudHMAAAYJAQJhUwECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZTBQJmUwQCZlIJAQJiaAEFAmhwBAJhYggFAmVZBmNhbGxlcgQCYWMIBQJlWQ10cmFuc2FjdGlvbklkBAJlRgkBAmV5AwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlRgUCZUYEAmhBCQD8BwQFAmJ3Agd1bnN0YWtlCQDMCAIJANgEAQUCYnEJAMwIAgUCaHoFA25pbAUDbmlsAwkAAAIFAmhBBQJoQQQCaEIJAQJmUQUFAmZSBQJoegUCYnEFAmFiBQJhYwMJAAACBQJoQgUCaEIEAmZUCAUCaEICXzUEAmhoCAUCaEICXzQEAmZrCAUCaEICXzMEAmVyCAUCaEICXzIEAmhzCAUCaEICXzEEAmNhAwMJAGYCBQJoYgAACQBmAgUCaGIFAmhzBwkBAmFTAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoYgUDbmlsAgAFAmhzBAJodAkA/AcEBQJhVgIEYnVybgkAzAgCBQJoegUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJicQUCaHoFA25pbAMJAAACBQJodAUCaHQEAmdJCQECY1ECBQJocAUCY2EDCQAAAgUCZ0kFAmdJBAJodQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZVkGY2FsbGVyBQJjYQUCZlIFA25pbAQCaGwDCQBmAgUCZmsAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhVwUCZmsFAmZSBQNuaWwFA25pbAQCaEMEAmh3AwkAAAIFBHRoaXMFAmFXAAAFAmZrAwUCZlQJAJQKAgkBAS0BCQBkAgUCY2EFAmh3AAAJAJQKAgAACQEBLQEJAGQCBQJjYQUCaHcEAmVICAUCaEMCXzEEAmVJCAUCaEMCXzIEAmhECQECZUcDBQJlSAUCZUkAAAQCZ1gIBQJoRAJfMQQCZXgIBQJoRAJfMgQCZ1kJAQJlSwIFAmVGBQJleAMJAAACBQJnWQUCZ1kEAmRKCQD8BwQFBHRoaXMCCXJlYmFsYW5jZQUDbmlsBQNuaWwDCQAAAgUCZEoFAmRKCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgUCZXIFAmdJBQJodQUCaGwFAmdYBQJjYQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlWQEDZ2V0AAQCZWMJAQJlWAEFAmVZBAJoRQgFAmVjAl8xBAJkRwgFAmVjAl8yBAJmYQgFAmVjAl8zBAJkbwgFAmVjAl80BAJkSwgFAmVjAl81BAJlRgkBAmV5AwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlRgUCZUYEAmhGCQD8BwQFAmFWAgRidXJuCQDMCAIFAmZhBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRvBQJmYQUDbmlsAwkAAAIFAmhGBQJoRgQCaEcJAQJlRwMJAQEtAQUCaEUJAQEtAQUCZEcAAAQCZ1gIBQJoRwJfMQQCZXgIBQJoRwJfMgQCZ1kJAQJlSwIFAmVGBQJleAMJAAACBQJnWQUCZ1kJAM4IAgUCZEsFAmdYCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVZAQlnZXROb0xlc3MCAmhIAmhJBAJlYwkBAmVYAQUCZVkEAmRGCAUCZWMCXzEEAmRHCAUCZWMCXzIEAmZhCAUCZWMCXzMEAmRvCAUCZWMCXzQEAmRLCAUCZWMCXzUDCQBmAgUCaEgFAmRGCQACAQkArAICCQCsAgIJAKwCAgIcbm9MZXNzVGhlbkFtdEFzc2V0IGZhaWxlZDogIAkApAMBBQJkRgIDIDwgCQCkAwEFAmhIAwkAZgIFAmhJBQJkRwkAAgEJAKwCAgkArAICCQCsAgICHW5vTGVzc1RoZW5QcmljZUFzc2V0IGZhaWxlZDogCQCkAwEFAmRHAgMgPCAJAKQDAQUCaEkEAmVGCQECZXkDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVGBQJlRgQCaEYJAPwHBAUCYVYCBGJ1cm4JAMwIAgUCZmEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZG8FAmZhBQNuaWwDCQAAAgUCaEYFAmhGBAJoSgkBAmVHAwkBAS0BBQJkRgkBAS0BBQJkRwAABAJnWAgFAmhKAl8xBAJleAgFAmhKAl8yBAJnWQkBAmVLAgUCZUYFAmV4AwkAAAIFAmdZBQJnWQkAzggCBQJkSwUCZ1gJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVkBDXVuc3Rha2VBbmRHZXQBAmNhBAJoSwMJAQIhPQIJAJADAQgFAmVZCHBheW1lbnRzAAAJAAIBAhhObyBwYXltZW50cyBhcmUgZXhwZWN0ZWQGAwkAAAIFAmhLBQJoSwQCZGQJAQJiZQAEAmRxCQDZBAEJAJEDAgUCZGQFAXEEAmVGCQECZXkDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVGBQJlRgQCaEEJAPwHBAUCYncCB3Vuc3Rha2UJAMwIAgkA2AQBBQJkcQkAzAgCBQJjYQUDbmlsBQNuaWwDCQAAAgUCaEEFAmhBBAJlYwkBAmRtBAkA2AQBCAUCZVkNdHJhbnNhY3Rpb25JZAkA2AQBBQJkcQUCY2EIBQJlWQZjYWxsZXIEAmRGCAUCZWMCXzEEAmRHCAUCZWMCXzIEAmR0CQENcGFyc2VJbnRWYWx1ZQEIBQJlYwJfOQQCZEsIBQJlYwNfMTAEAmhMAwMJAQJiYwAGCQAAAgUCZHQFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmR0BgMJAAACBQJoTAUCaEwEAmhGCQD8BwQFAmFWAgRidXJuCQDMCAIFAmNhBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRxBQJjYQUDbmlsAwkAAAIFAmhGBQJoRgQCaE0JAQJlRwMJAQEtAQUCZEYJAQEtAQUCZEcAAAQCZ1gIBQJoTQJfMQQCZXgIBQJoTQJfMgQCZ1kJAQJlSwIFAmVGBQJleAMJAAACBQJnWQUCZ1kJAM4IAgUCZEsFAmdYCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVZARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJoegJoTgJoSQQCaHEDCQECYmMABgkAAAIFAmJwBQFuBAJmUwkAzAgCAwkBASEBBQJocQYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJlWQhwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZTBQJmUwQCZUYJAQJleQMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZUYFAmVGBAJoQQkA/AcEBQJidwIHdW5zdGFrZQkAzAgCCQDYBAEFAmJxCQDMCAIFAmh6BQNuaWwFA25pbAMJAAACBQJoQQUCaEEEAmVjCQECZG0ECQDYBAEIBQJlWQ10cmFuc2FjdGlvbklkCQDYBAEFAmJxBQJoeggFAmVZBmNhbGxlcgQCZEYIBQJlYwJfMQQCZEcIBQJlYwJfMgQCZEsIBQJlYwNfMTAEAmhPCQDMCAIDCQBnAgUCZEYFAmhOBgkAAgEJALkJAgkAzAgCAixhbW91bnQgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhOBQNuaWwCAAkAzAgCAwkAZwIFAmRHBQJoSQYJAAIBCQC5CQIJAMwIAgIrcHJpY2UgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhJBQNuaWwCAAUDbmlsAwkAAAIFAmhPBQJoTwQCaEYJAPwHBAUCYVYCBGJ1cm4JAMwIAgUCaHoFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYnEFAmh6BQNuaWwDCQAAAgUCaEYFAmhGBAJoUAkBAmVHAwkBAS0BBQJkRgkBAS0BBQJkRwAABAJnWAgFAmhQAl8xBAJleAgFAmhQAl8yBAJnWQkBAmVLAgUCZUYFAmV4AwkAAAIFAmdZBQJnWQkAzggCBQJkSwUCZ1gJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVkBCGFjdGl2YXRlAgJoUQJoUgMJAQIhPQIJAKUIAQgFAmVZBmNhbGxlcgkApQgBBQJhVgkAAgECEnBlcm1pc3Npb25zIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZQAFAmhRCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZgAFAmhSBQNuaWwCB3N1Y2Nlc3MCZVkBCnJlZnJlc2hLTHAABAJoUwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQJhawAABAJoVAMJAGcCCQBlAgUGaGVpZ2h0BQJoUwUCYW4FBHVuaXQJAQJhUwEJALkJAgkAzAgCCQCkAwEFAmFuCQDMCAICLyBibG9ja3MgaGF2ZSBub3QgcGFzc2VkIHNpbmNlIHRoZSBwcmV2aW91cyBjYWxsBQNuaWwCAAMJAAACBQJoVAUCaFQEAmVSCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJhagIBMAkBAmFVAQILaW52YWxpZCBrTHAEAmhVCQECZUcDAAAAAAAABAJoVggFAmhVAl8xBAJleAgFAmhVAl8yBAJlSgMJAQIhPQIFAmVSBQJleAUCaFYJAQJhUwECEm5vdGhpbmcgdG8gcmVmcmVzaAkAlAoCBQJlSgkApgMBBQJleAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlWQEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYmUAAmVZARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJhcgkAlAoCBQNuaWwJAQJiTgEFAmFyAmVZARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJjWAJjWQJkYwQCZGwJAQJkYgMFAmNYBQJjWQUCZGMJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJkbAAACQDMCAIJAKYDAQkAkQMCBQJkbAABCQDMCAIJAKYDAQkAkQMCBQJkbAACBQNuaWwCZVkBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFFAUYJAJQKAgUDbmlsCQCmAwEJAQFEAgUBRQUBRgJlWQEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBSQFKCQCUCgIFA25pbAkBAUgCCQCnAwEFAUkFAUoCZVkBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYlICYlMJAJQKAgUDbmlsCQCmAwEJAQJiUQIJAKcDAQUCYlIJAKcDAQUCYlMCZVkBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJkbgJkTQJkTgJkTwJkUAJkUQJhYgJkUgJkUwkAlAoCBQNuaWwJAQJkTAkFAmRuBQJkTQUCZE4FAmRPBQJkUAUCZFEFAmFiBQJkUgUCZFMCZVkBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJkbgJkbwJkcAJhYgQCZWMJAQJkbQQFAmRuBQJkbwUCZHAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmFiCQCUCgIFA25pbAkAnAoKCAUCZWMCXzEIBQJlYwJfMggFAmVjAl8zCAUCZWMCXzQIBQJlYwJfNQgFAmVjAl82CAUCZWMCXzcJAKYDAQgFAmVjAl84CAUCZWMCXzkIBQJlYwNfMTACZVkBDXN0YXRzUkVBRE9OTFkABAJkZAkBAmJlAAQCZHEJANkEAQkAkQMCBQJkZAUBcQQCaFcJAJEDAgUCZGQFAXIEAmhYCQCRAwIFAmRkBQFzBAJkVgkAkQMCBQJkZAUBdgQCZFcJAJEDAgUCZGQFAXcEAmRlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGQFAXQEAmRmCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGQFAXUEAmhZCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRxCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmRxAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCaFoJAQJiTgEFAmhXBAJpYQkBAmJOAQUCaFgEAmliAwkAAAIFAmhZAAAJAMwIAgUBZQkAzAgCBQFlCQDMCAIFAWUFA25pbAkBAmRiAwUCaFoFAmlhBQJoWQQCZEEAAAQCaWMJAQFIAgkAkQMCBQJpYgABBQFiBAJpZAkBAUgCCQCRAwIFAmliAAIFAWIEAmllCQEFdmFsdWUBCQCaCAIFAmFWCQECYUYBCQClCAEFBHRoaXMJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJoWgkAzAgCCQCkAwEFAmlhCQDMCAIJAKQDAQUCaFkJAMwIAgkApAMBBQJkQQkAzAgCCQCkAwEFAmljCQDMCAIJAKQDAQUCaWQJAMwIAgkApAMBBQJpZQUDbmlsBQFqAmVZASBldmFsdWF0ZVB1dEJ5QW1vdW50QXNzZXRSRUFET05MWQECZE4EAmRkCQECYmUABAJkcQkA2QQBCQCRAwIFAmRkBQFxBAJkVAkAkQMCBQJkZAUBcgQCZHIJANkEAQUCZFQEAmRVCQCRAwIFAmRkBQFzBAJkcwkA2QQBBQJkVQQCZGUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkZAUBdAQCZGYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkZAUBdQQCZHQJAJEDAgUCZGQFAXAEAmhZCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRxCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmRxAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCaFoJAQJiTgEFAmRUBAJpYQkBAmJOAQUCZFUEAmNaCQEBRAIFAmhaBQJkZQQCZGEJAQFEAgUCaWEFAmRmBAJkegMJAAACBQJoWQAABQFlCQECYlECBQJkYQUCY1oEAmRaCQEBRAIFAmROBQJkZQQCZWEJALwCAwUCZFoFAmR6BQFkBAJkUAkBAUgCBQJlYQUCZGYEAmZlCQECZEwJAgAAoMIeBQJkTgUCZHIFAmRQBQJkcwIABgcEAmVrCAUCZmUCXzEEAmlmCAUCZmUCXzMEAmR2CAUCZmUCXzQEAmR4CAUCZmUCXzUEAmR1CAUCZmUCXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmVrCQDMCAIJAKQDAQkBAUgCBQJkegUBYgkAzAgCCQCkAwEFAmR2CQDMCAIJAKQDAQUCZHgJAMwIAgkApAMBBQJkdQkAzAgCBQJkdAkAzAgCCQCkAwEFAmROCQDMCAIJAKQDAQUCZFAFA25pbAUBagJlWQEfZXZhbHVhdGVQdXRCeVByaWNlQXNzZXRSRUFET05MWQECZFAEAmRkCQECYmUABAJkcQkA2QQBCQCRAwIFAmRkBQFxBAJkVAkAkQMCBQJkZAUBcgQCZHIJANkEAQUCZFQEAmRVCQCRAwIFAmRkBQFzBAJkcwkA2QQBBQJkVQQCZGUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkZAUBdAQCZGYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkZAUBdQQCZHQJAJEDAgUCZGQFAXAEAmhZCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRxCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmRxAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCaWcJAQJiTgEFAmRUBAJpaAkBAmJOAQUCZFUEAmlpCQEBRAIFAmlnBQJkZQQCaWoJAQFEAgUCaWgFAmRmBAJkegMJAAACBQJoWQAABQFlCQECYlECBQJpagUCaWkEAmVhCQEBRAIFAmRQBQJkZgQCZFoJALwCAwUCZWEFAWQFAmR6BAJkTgkBAUgCBQJkWgUCZGUEAmZlCQECZEwJAgAAoMIeBQJkTgUCZHIFAmRQBQJkcwIABgcEAmVrCAUCZmUCXzEEAmlmCAUCZmUCXzMEAmR2CAUCZmUCXzQEAmR4CAUCZmUCXzUEAmR1CAUCZmUCXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmVrCQDMCAIJAKQDAQkBAUgCBQJkegUBYgkAzAgCCQCkAwEFAmR2CQDMCAIJAKQDAQUCZHgJAMwIAgkApAMBBQJkdQkAzAgCBQJkdAkAzAgCCQCkAwEFAmROCQDMCAIJAKQDAQUCZFAFA25pbAUBagJlWQETZXZhbHVhdGVHZXRSRUFET05MWQICaWsCaWwEAmVjCQECZG0EAgAFAmlrBQJpbAUEdGhpcwQCZEYIBQJlYwJfMQQCZEcIBQJlYwJfMgQCZHYIBQJlYwJfNQQCZHgIBQJlYwJfNgQCZHUIBQJlYwJfNwQCZEEIBQJlYwJfOAQCZHQJAQ1wYXJzZUludFZhbHVlAQgFAmVjAl85CQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCZEYJAMwIAgkApAMBBQJkRwkAzAgCCQCkAwEFAmR2CQDMCAIJAKQDAQUCZHgJAMwIAgkApAMBBQJkdQkAzAgCCQCmAwEFAmRBCQDMCAIJAKQDAQUCZHQFA25pbAUBagECaW0BAmluAAQCaW8EAmJYCQECZ2sAAwkAAQIFAmJYAgpCeXRlVmVjdG9yBAJnbwUCYlgFAmdvAwkAAQIFAmJYAgRVbml0CAUCaW0Pc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmJYBQJpbQMJAAECBQJiWAIFT3JkZXIEAmVOBQJiWAQCaXAJAQJiZAAEAmlxCQECZU0BBQJlTgQCYUsIBQJpcQJfMQQCYUwIBQJpcQJfMgQCYU0JAPQDAwgFAmVOCWJvZHlCeXRlcwkAkQMCCAUCZU4GcHJvb2ZzAAAIBQJlTg9zZW5kZXJQdWJsaWNLZXkEAmFOCQD0AwMIBQJlTglib2R5Qnl0ZXMJAJEDAggFAmVOBnByb29mcwABBQJpcAMDAwUCYUsFAmFNBwUCYU4HBgkBAmFKBAUCYUsFAmFMBQJhTQUCYU4DCQABAgUCYlgCFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJnbAUCYlgDCQD0AwMIBQJpbQlib2R5Qnl0ZXMJAJEDAggFAmltBnByb29mcwAABQJpbwYEAmlyCQD2AwEJAQV2YWx1ZQEIBQJnbAZzY3JpcHQEAmlzCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYVYJAQJhSAAEAml0CQDxBwEFBHRoaXMDCQAAAgUCaXMFAmlyCQECIT0CBQJpdAUCaXIHCQD0AwMIBQJpbQlib2R5Qnl0ZXMJAJEDAggFAmltBnByb29mcwAABQJpbyeuLy8=", "height": 2519942, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: uiXLf78xSDxL8VY3CzhpV5exwZyga8EFj6D2PXs2ciM Next: GpaGvbTm1qfTceWoVUGx3Kg3wLdDKeXb1dhshkhQ7RJ1 Diff:
OldNewDifferences
11441144 let gX = gW._1
11451145 let gY = eK(eF, ex)
11461146 if ((gY == gY))
1147- then ((dK ++ gU) ++ gX)
1147+ then {
1148+ let dJ = invoke(this, "rebalance", nil, nil)
1149+ if ((dJ == dJ))
1150+ then ((dK ++ gU) ++ gX)
1151+ else throw("Strict value is not equal to itself.")
1152+ }
11481153 else throw("Strict value is not equal to itself.")
11491154 }
11501155 else throw("Strict value is not equal to itself.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (E,F) = fraction(E, d, F)
6666
6767
6868 func H (I,J) = toInt(fraction(I, toBigInt(J), d))
6969
7070
7171 func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
7272
7373
7474 func M (N,O,P) = fraction(N, O, P)
7575
7676
7777 func Q (I) = if ((0 > I))
7878 then -(I)
7979 else I
8080
8181
8282 func R (I) = if ((e > I))
8383 then -(I)
8484 else I
8585
8686
8787 func S () = "%s__swapContract"
8888
8989
9090 func T () = "%s__factoryContract"
9191
9292
9393 func U () = "%s__managerPublicKey"
9494
9595
9696 func V () = "%s__pendingManagerPublicKey"
9797
9898
9999 func W () = "%s%s__price__last"
100100
101101
102102 func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], j)
103103
104104
105105 func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
106106
107107
108108 func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
109109
110110
111111 func ae () = "%s__amountAsset"
112112
113113
114114 func af () = "%s__priceAsset"
115115
116116
117117 let ag = "%s__fee"
118118
119119 let ah = fraction(10, b, 10000)
120120
121121 let ai = valueOrElse(getInteger(this, ag), ah)
122122
123123 let aj = makeString(["%s", "kLp"], j)
124124
125125 let ak = makeString(["%s", "kLpRefreshedHeight"], j)
126126
127127 let al = makeString(["%s", "refreshKLpDelay"], j)
128128
129129 let am = 30
130130
131131 let an = valueOrElse(getInteger(this, al), am)
132132
133133 func ao () = "%s__sWavesAssetId"
134134
135135
136136 func ap () = "%s__sWavesProxyAddress"
137137
138138
139139 func aq (ar) = makeString(["%s%s", "additionalBalance", ar], j)
140140
141141
142142 func as (ar) = makeString(["%s%s", "stakingAssetBalance", ar], j)
143143
144144
145145 func at (ar) = valueOrElse(getInteger(this, aq(ar)), 0)
146146
147147
148148 func au (ar) = valueOrElse(getInteger(this, as(ar)), 0)
149149
150150
151151 func av () = "%s__factoryConfig"
152152
153153
154154 func aw () = "%s%s__matcher__publicKey"
155155
156156
157157 func ax (ay) = (("%s%s%s__" + ay) + "__mappings__poolContract2LpAsset")
158158
159159
160160 func az (aA,aB) = (((("%d%d%s__" + aA) + "__") + aB) + "__config")
161161
162162
163163 func aC (aD) = ("%s%s%s__mappings__baseAsset2internalId__" + aD)
164164
165165
166166 func aE () = "%s__shutdown"
167167
168168
169169 func aF (aG) = ("%s%s__poolWeight__" + aG)
170170
171171
172172 func aH () = "%s__allowedLpScriptHash"
173173
174174
175175 let aI = "%s__feeCollectorAddress"
176176
177177 func aJ (aK,aL,aM,aN) = throw((((((((("order validation failed: orderValid=" + toString(aK)) + " (") + aL) + ")") + " senderValid=") + toString(aM)) + " matcherValid=") + toString(aN)))
178178
179179
180180 func aO (aP,aQ) = valueOrErrorMessage(getString(aP, aQ), makeString(["mandatory ", toString(aP), ".", aQ, " is not defined"], ""))
181181
182182
183183 func aR (aP,aQ) = valueOrErrorMessage(getInteger(aP, aQ), makeString(["mandatory ", toString(aP), ".", aQ, " is not defined"], ""))
184184
185185
186186 func aS (aT) = throw(makeString(["lp.ride:", aT], " "))
187187
188188
189189 func aU (aT) = makeString(["lp.ride:", aT], " ")
190190
191191
192192 let aV = addressFromStringValue(aO(this, T()))
193193
194194 let aW = addressFromStringValue(aO(aV, aI))
195195
196196 let aX = {
197197 let aY = invoke(aV, "getInFeeREADONLY", [toString(this)], nil)
198198 if ($isInstanceOf(aY, "Int"))
199199 then aY
200200 else throw(($getType(aY) + " couldn't be cast to Int"))
201201 }
202202
203203 let aZ = {
204204 let aY = invoke(aV, "getOutFeeREADONLY", [toString(this)], nil)
205205 if ($isInstanceOf(aY, "Int"))
206206 then aY
207207 else throw(($getType(aY) + " couldn't be cast to Int"))
208208 }
209209
210210 func ba () = aO(aV, ao())
211211
212212
213213 func bb () = aO(aV, ap())
214214
215215
216216 func bc () = valueOrElse(getBoolean(aV, aE()), false)
217217
218218
219219 func bd () = fromBase58String(aO(aV, aw()))
220220
221221
222222 func be () = {
223223 let bf = aO(this, ae())
224224 let bg = aO(this, af())
225225 let aB = aR(aV, aC(bg))
226226 let aA = aR(aV, aC(bf))
227227 split(aO(aV, az(toString(aA), toString(aB))), j)
228228 }
229229
230230
231231 func bh (bi) = if ((bi == i))
232232 then unit
233233 else fromBase58String(bi)
234234
235235
236236 func bj (bi) = if ((bi == unit))
237237 then i
238238 else toBase58String(value(bi))
239239
240240
241241 func bk (bl) = $Tuple7(addressFromStringValue(bl[o]), parseIntValue(bl[p]), fromBase58String(bl[q]), bh(bl[r]), bh(bl[s]), parseIntValue(bl[t]), parseIntValue(bl[u]))
242242
243243
244244 let bm = bk(be())
245245
246246 let bn = bm
247247
248248 let bo = bn._1
249249
250250 let bp = bn._2
251251
252252 let bq = bn._3
253253
254254 let br = bn._4
255255
256256 let bs = bn._5
257257
258258 let bt = bn._6
259259
260260 let bu = bn._7
261261
262262 func bv () = split(aO(aV, av()), j)
263263
264264
265265 let bw = valueOrErrorMessage(addressFromString(bv()[B]), "incorrect staking address")
266266
267267 let bx = valueOrErrorMessage(addressFromString(bv()[C]), "incorrect staking address")
268268
269269 func by (bz,bA,bB,bC,bD,bE,bF,bG,bH,bI) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bz), toString(bA), toString(bB), toString(bC), toString(bD), toString(bE), toString(bF), toString(bG), toString(bH), toString(bI)], j)
270270
271271
272272 func bJ (bK,bL,bM,bC,bF,bG) = makeString(["%d%d%d%d%d%d", toString(bK), toString(bL), toString(bM), toString(bC), toString(bF), toString(bG)], j)
273273
274274
275275 func bN (ar) = {
276276 let bO = if ((ar == "WAVES"))
277277 then wavesBalance(this).available
278278 else assetBalance(this, fromBase58String(ar))
279279 let bP = ((bO + at(ar)) - au(ar))
280280 max([0, bP])
281281 }
282282
283283
284284 func bQ (bR,bS) = fraction(bR, d, bS)
285285
286286
287287 func bT (bR,bS,L) = fraction(bR, d, bS, L)
288288
289289
290290 func bU (bV) = {
291291 let bW = invoke(bV, "getRate", nil, nil)
292292 if ((bW == bW))
293293 then {
294294 let bX = bW
295295 if ($isInstanceOf(bX, "Int"))
296296 then {
297297 let bY = bX
298298 bY
299299 }
300300 else aS("proxy.getRate() unexpected value")
301301 }
302302 else throw("Strict value is not equal to itself.")
303303 }
304304
305305
306306 func bZ (ar,ca,cb,bV) = {
307307 let cc = at(ar)
308308 if ((cc == cc))
309309 then {
310310 let cd = au(cb)
311311 if ((cd == cd))
312312 then {
313313 let ce = bh(ar)
314314 if ((ca > 0))
315315 then {
316316 let cf = invoke(bV, "deposit", nil, [AttachedPayment(ce, ca)])
317317 if ((cf == cf))
318318 then {
319319 let bX = cf
320320 if ($isInstanceOf(bX, "Int"))
321321 then {
322322 let cg = bX
323323 let ch = (cc + ca)
324324 let ci = (cd + cg)
325325 [IntegerEntry(aq(ar), ch), IntegerEntry(as(cb), ci)]
326326 }
327327 else nil
328328 }
329329 else throw("Strict value is not equal to itself.")
330330 }
331331 else nil
332332 }
333333 else throw("Strict value is not equal to itself.")
334334 }
335335 else throw("Strict value is not equal to itself.")
336336 }
337337
338338
339339 func cj (ar,ca,cb,bV,ck,cl) = {
340340 let cc = at(ar)
341341 if ((cc == cc))
342342 then {
343343 let cd = au(cb)
344344 if ((cd == cd))
345345 then {
346346 let cm = bU(bV)
347347 if ((cm == cm))
348348 then {
349349 let cn = fraction(ck, cc, cd)
350350 let co = bh(cb)
351351 let cp = fraction(ck, ca, cn)
352352 let cq = fraction(ck, ca, cm)
353353 let cr = max([0, (cp - cq)])
354354 if ((cq > 0))
355355 then {
356356 let cs = invoke(bV, "withdraw", nil, [AttachedPayment(co, cq)])
357357 if ((cs == cs))
358358 then {
359359 let bX = cs
360360 if ($isInstanceOf(bX, "Int"))
361361 then {
362362 let ct = bX
363363 let ch = (cc - ct)
364364 let ci = ((cd - cq) - cr)
365365 [IntegerEntry(aq(ar), ch), IntegerEntry(as(cb), ci), ScriptTransfer(cl, cr, bh(cb))]
366366 }
367367 else nil
368368 }
369369 else throw("Strict value is not equal to itself.")
370370 }
371371 else nil
372372 }
373373 else throw("Strict value is not equal to itself.")
374374 }
375375 else throw("Strict value is not equal to itself.")
376376 }
377377 else throw("Strict value is not equal to itself.")
378378 }
379379
380380
381381 func cu (ar) = invoke(aV, "getPoolLeaseConfigREADONLY", [toString(this), ar], nil)
382382
383383
384384 func cv (cw,ar,cb,cx,bV,ck,cl) = {
385385 let cc = at(ar)
386386 if ((cc == cc))
387387 then {
388388 let cd = au(cb)
389389 if ((cd == cd))
390390 then {
391391 let cy = {
392392 let bX = bh(ar)
393393 if ($isInstanceOf(bX, "ByteVector"))
394394 then {
395395 let cz = bX
396396 assetBalance(this, cz)
397397 }
398398 else if ($isInstanceOf(bX, "Unit"))
399399 then {
400400 let cA = bX
401401 wavesBalance(this).available
402402 }
403403 else throw("Match error")
404404 }
405405 if ((cy == cy))
406406 then {
407407 let cB = max([0, ((cy + cc) - cx)])
408408 let cC = fraction(cw, cB, 100)
409409 let cD = (cc - cC)
410410 if ((cD == 0))
411411 then nil
412412 else if ((0 > cD))
413413 then {
414414 let cE = -(cD)
415415 bZ(ar, cE, cb, bV)
416416 }
417417 else {
418418 let cF = cD
419419 cj(ar, cF, cb, bV, ck, cl)
420420 }
421421 }
422422 else throw("Strict value is not equal to itself.")
423423 }
424424 else throw("Strict value is not equal to itself.")
425425 }
426426 else throw("Strict value is not equal to itself.")
427427 }
428428
429429
430430 func cG (ar) = {
431431 let bX = cu(ar)
432432 if ($isInstanceOf(bX, "(Boolean, Int, Int, String, String, Int, String)"))
433433 then {
434434 let cH = bX
435435 let cI = cH
436436 let cJ = cI._1
437437 let cK = cI._2
438438 let cx = cI._3
439439 let cL = cI._4
440440 let cM = cI._5
441441 let ck = cI._6
442442 let cN = cI._7
443443 if (cJ)
444444 then cv(cK, ar, cM, cx, addressFromStringValue(cL), ck, addressFromStringValue(cN))
445445 else nil
446446 }
447447 else aS((("[" + ar) + "] Rebalance error"))
448448 }
449449
450450
451451 func cO (ar,ca) = {
452452 let bX = cu(ar)
453453 if ($isInstanceOf(bX, "(Boolean, Int, Int, String, String, Int, String)"))
454454 then {
455455 let cH = bX
456456 let cP = cH
457457 let cJ = cP._1
458458 let cK = cP._2
459459 let cx = cP._3
460460 let cL = cP._4
461461 let cM = cP._5
462462 let ck = cP._6
463463 let cN = cP._7
464464 if (cJ)
465465 then cj(ar, ca, cM, addressFromStringValue(cL), ck, addressFromStringValue(cN))
466466 else nil
467467 }
468468 else aS((("[" + ar) + "] withdrawAssetWrapper() error"))
469469 }
470470
471471
472472 func cQ (ar,ca) = {
473473 let cR = {
474474 let bX = bh(ar)
475475 if ($isInstanceOf(bX, "ByteVector"))
476476 then {
477477 let cz = bX
478478 assetBalance(this, cz)
479479 }
480480 else if ($isInstanceOf(bX, "Unit"))
481481 then {
482482 let cS = bX
483483 wavesBalance(this).available
484484 }
485485 else throw("Match error")
486486 }
487487 if ((ca > cR))
488488 then {
489489 let cT = (ca - cR)
490490 cO(ar, cT)
491491 }
492492 else nil
493493 }
494494
495495
496496 func cU (cV,cW,cX,cY) = {
497497 let cZ = D(cX, cV)
498498 let da = D(cY, cW)
499499 bQ(da, cZ)
500500 }
501501
502502
503503 func db (cX,cY,dc) = {
504504 let dd = be()
505505 let de = parseIntValue(dd[t])
506506 let df = parseIntValue(dd[u])
507507 let dg = cU(de, df, cX, cY)
508508 let bS = D(cX, de)
509509 let bR = D(cY, df)
510510 let dh = D(dc, b)
511511 let di = bQ(bS, dh)
512512 let dj = bQ(bR, dh)
513513 [dg, di, dj]
514514 }
515515
516516
517517 func dk (cX,cY,dc) = {
518518 let dl = db(cX, cY, dc)
519519 [H(dl[0], b), H(dl[1], b), H(dl[2], b)]
520520 }
521521
522522
523523 func dm (dn,do,dp,ab) = {
524524 let dd = be()
525525 let dq = dd[q]
526526 let dr = dd[r]
527527 let ds = dd[s]
528528 let cV = parseIntValue(dd[t])
529529 let cW = parseIntValue(dd[u])
530530 let dt = dd[p]
531531 let du = valueOrErrorMessage(assetInfo(fromBase58String(dq)), (("Asset " + dq) + " doesn't exist")).quantity
532532 if ((dq != do))
533533 then throw("Invalid asset passed.")
534534 else {
535535 let dv = bN(dr)
536536 let dw = D(dv, cV)
537537 let dx = bN(ds)
538538 let dy = D(dx, cW)
539539 let dz = bQ(dy, dw)
540540 let dA = H(dz, b)
541541 let dB = D(dp, b)
542542 let dC = D(du, b)
543543 let dD = fraction(dw, dB, dC)
544544 let dE = fraction(dy, dB, dC)
545545 let dF = K(dD, cV, FLOOR)
546546 let dG = K(dE, cW, FLOOR)
547547 let dH = cQ(dr, dF)
548548 if ((dH == dH))
549549 then {
550550 let dI = cQ(ds, dG)
551551 if ((dI == dI))
552552 then {
553553 let dJ = invoke(this, "rebalance", nil, nil)
554554 if ((dJ == dJ))
555555 then {
556556 let dK = if ((dn == ""))
557557 then nil
558558 else ((dH ++ dI) ++ [ScriptTransfer(ab, dF, if ((dr == "WAVES"))
559559 then unit
560560 else fromBase58String(dr)), ScriptTransfer(ab, dG, if ((ds == "WAVES"))
561561 then unit
562562 else fromBase58String(ds)), StringEntry(ad(toString(ab), dn), bJ(dF, dG, dp, dA, height, lastBlock.timestamp)), IntegerEntry(W(), dA), IntegerEntry(X(height, lastBlock.timestamp), dA)])
563563 $Tuple10(dF, dG, dr, ds, dv, dx, du, dz, dt, dK)
564564 }
565565 else throw("Strict value is not equal to itself.")
566566 }
567567 else throw("Strict value is not equal to itself.")
568568 }
569569 else throw("Strict value is not equal to itself.")
570570 }
571571 }
572572
573573
574574 func dL (dn,dM,dN,dO,dP,dQ,ab,dR,dS) = {
575575 let dd = be()
576576 let dq = fromBase58String(dd[q])
577577 let dT = dd[r]
578578 let dU = dd[s]
579579 let dV = dd[v]
580580 let dW = dd[w]
581581 let de = parseIntValue(dd[t])
582582 let df = parseIntValue(dd[u])
583583 let dt = dd[p]
584584 let du = valueOrErrorMessage(assetInfo(dq), (("Asset " + toBase58String(dq)) + " doesn't exist")).quantity
585585 let dX = toBase58String(valueOrElse(dO, fromBase58String("WAVES")))
586586 let dY = toBase58String(valueOrElse(dQ, fromBase58String("WAVES")))
587587 if (if ((dT != dX))
588588 then true
589589 else (dU != dY))
590590 then throw("Invalid amt or price asset passed.")
591591 else {
592592 let dv = if (dR)
593593 then bN(dT)
594594 else (bN(dT) - dN)
595595 let dx = if (dR)
596596 then bN(dU)
597597 else (bN(dU) - dP)
598598 let dZ = D(dN, de)
599599 let ea = D(dP, df)
600600 let eb = bQ(ea, dZ)
601601 let dw = D(dv, de)
602602 let dy = D(dx, df)
603603 let ec = if ((du == 0))
604604 then {
605605 let dz = e
606606 let ed = e
607607 let dh = pow((dZ * ea), 0, toBigInt(5), 1, 0, DOWN)
608608 $Tuple5(H(dh, b), H(dZ, de), H(ea, df), bQ((dy + ea), (dw + dZ)), ed)
609609 }
610610 else {
611611 let dz = bQ(dy, dw)
612612 let ed = fraction(R((dz - eb)), d, dz)
613613 let ee = D(dM, b)
614614 if (if ((dz != e))
615615 then (ed > ee)
616616 else false)
617617 then throw(((("Price slippage " + toString(ed)) + " exceeded the passed limit of ") + toString(ee)))
618618 else {
619619 let dC = D(du, b)
620620 let ef = fraction(dZ, bT(dy, dw, CEILING), d, CEILING)
621621 let eg = fraction(ea, d, bT(dy, dw, FLOOR), CEILING)
622622 let eh = if ((ef > ea))
623623 then $Tuple2(eg, ea)
624624 else $Tuple2(dZ, ef)
625625 let ei = eh._1
626626 let ej = eh._2
627627 let dh = fraction(dC, ej, dy, FLOOR)
628628 $Tuple5(K(dh, b, FLOOR), K(ei, de, CEILING), K(ej, df, CEILING), dz, ed)
629629 }
630630 }
631631 let ek = ec._1
632632 let el = ec._2
633633 let em = ec._3
634634 let dA = H(ec._4, b)
635635 let en = H(ec._5, b)
636636 if ((0 >= ek))
637637 then throw("Invalid calculations. LP calculated is less than zero.")
638638 else {
639639 let eo = if (!(dS))
640640 then 0
641641 else ek
642642 let ep = (dN - el)
643643 let eq = (dP - em)
644644 let er = [IntegerEntry(W(), dA), IntegerEntry(X(height, lastBlock.timestamp), dA), StringEntry(aa(ab, dn), by(el, em, eo, dA, dM, en, height, lastBlock.timestamp, ep, eq))]
645645 $Tuple13(ek, eo, dA, dv, dx, du, dq, dt, er, ep, eq, dO, dQ)
646646 }
647647 }
648648 }
649649
650650
651651 func es (et,eu,du) = {
652652 let ev = G(et, toBigInt(bt))
653653 let ew = G(eu, toBigInt(bu))
654654 let ex = fraction(pow((ev * ew), 0, toBigInt(5), 1, 18, DOWN), g, du)
655655 if ((du == f))
656656 then f
657657 else ex
658658 }
659659
660660
661661 func ey (ez,eA,eB) = {
662662 let eC = (toBigInt(bN(bj(br))) - ez)
663663 let eD = (toBigInt(bN(bj(bs))) - eA)
664664 let eE = (toBigInt(value(assetInfo(bq)).quantity) - eB)
665665 let eF = es(eC, eD, eE)
666666 eF
667667 }
668668
669669
670670 func eG (eH,eI,eB) = {
671671 let eC = (bN(bj(br)) + eH)
672672 let eD = (bN(bj(bs)) + eI)
673673 let eE = (value(assetInfo(bq)).quantity + eB)
674674 let ex = es(toBigInt(eC), toBigInt(eD), toBigInt(eE))
675675 let eJ = [IntegerEntry(ak, height), StringEntry(aj, toString(ex))]
676676 $Tuple2(eJ, ex)
677677 }
678678
679679
680680 func eK (eL,ex) = if ((ex >= eL))
681681 then true
682682 else aS(makeString(["updated KLp lower than current KLp", toString(eL), toString(ex)], " "))
683683
684684
685685 func eM (eN) = {
686686 let eC = bN(bj(br))
687687 let eD = bN(bj(bs))
688688 let eO = eN.amount
689689 let eP = fraction(eN.amount, eN.price, b, FLOOR)
690690 let eQ = if ((eN.orderType == Buy))
691691 then $Tuple2(eO, -(eP))
692692 else $Tuple2(-(eO), eP)
693693 let eH = eQ._1
694694 let eI = eQ._2
695695 if (if (if (bc())
696696 then true
697697 else (bp == m))
698698 then true
699699 else (bp == n))
700700 then throw("Exchange operations disabled")
701701 else if (if ((eN.assetPair.amountAsset != br))
702702 then true
703703 else (eN.assetPair.priceAsset != bs))
704704 then throw("Wrong order assets.")
705705 else {
706706 let eR = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aU("invalid kLp"))
707707 let eS = eG(eH, eI, 0)
708708 let eT = eS._1
709709 let eU = eS._2
710710 let eV = (eU >= eR)
711711 let eW = makeString(["kLp=", toString(eR), " kLpNew=", toString(eU), " amountAssetBalance=", toString(eC), " priceAssetBalance=", toString(eD), " amountAssetBalanceDelta=", toString(eH), " priceAssetBalanceDelta=", toString(eI), " height=", toString(height)], "")
712712 $Tuple2(eV, eW)
713713 }
714714 }
715715
716716
717717 func eX (eY) = if ((size(eY.payments) != 1))
718718 then throw("exactly 1 payment is expected")
719719 else {
720720 let eZ = value(eY.payments[0])
721721 let do = value(eZ.assetId)
722722 let fa = eZ.amount
723723 let ec = dm(toBase58String(eY.transactionId), toBase58String(do), fa, eY.caller)
724724 let dF = ec._1
725725 let dG = ec._2
726726 let dt = parseIntValue(ec._9)
727727 let dK = ec._10
728728 if (if (bc())
729729 then true
730730 else (dt == n))
731731 then throw(("Get operation is blocked by admin. Status = " + toString(dt)))
732732 else $Tuple5(dF, dG, fa, do, dK)
733733 }
734734
735735
736736 func fb (eY,dM,dS) = if ((size(eY.payments) != 2))
737737 then throw("exactly 2 payments are expected")
738738 else {
739739 let fc = value(eY.payments[0])
740740 let fd = value(eY.payments[1])
741741 let fe = dL(toBase58String(eY.transactionId), dM, fc.amount, fc.assetId, fd.amount, fd.assetId, toString(eY.caller), false, dS)
742742 let dt = parseIntValue(fe._8)
743743 if (if (if (bc())
744744 then true
745745 else (dt == l))
746746 then true
747747 else (dt == n))
748748 then throw(("Put operation is blocked by admin. Status = " + toString(dt)))
749749 else fe
750750 }
751751
752752
753753 func ff (ca) = {
754754 let fg = invoke(aV, "emit", [ca], nil)
755755 if ((fg == fg))
756756 then {
757757 let fh = {
758758 let bX = fg
759759 if ($isInstanceOf(bX, "Address"))
760760 then {
761761 let fi = bX
762762 invoke(fi, "emit", [ca], nil)
763763 }
764764 else unit
765765 }
766766 if ((fh == fh))
767767 then ca
768768 else throw("Strict value is not equal to itself.")
769769 }
770770 else throw("Strict value is not equal to itself.")
771771 }
772772
773773
774774 func fj (ca,ai) = {
775775 let fk = if ((ai == 0))
776776 then 0
777777 else fraction(ca, ai, b)
778778 $Tuple2((ca - fk), fk)
779779 }
780780
781781
782782 func fl (fm,fn,ab,ac) = {
783783 let fo = (ac == unit)
784784 let fp = bN(bj(br))
785785 let fq = bN(bj(bs))
786786 let fr = if ((fn == br))
787787 then true
788788 else if ((fn == bs))
789789 then false
790790 else aS("invalid asset")
791791 let fs = if (fo)
792792 then $Tuple2(fp, fq)
793793 else if (fr)
794794 then $Tuple2((fp - fm), fq)
795795 else $Tuple2(fp, (fq - fm))
796796 let ft = fs._1
797797 let fu = fs._2
798798 let fv = if (fr)
799799 then $Tuple2(fm, 0)
800800 else $Tuple2(0, fm)
801801 let fw = fv._1
802802 let fx = fv._2
803803 let eO = fj(fw, aX)._1
804804 let eP = fj(fx, aX)._1
805805 let fy = fj(fm, aX)
806806 let fz = fy._1
807807 let fk = fy._2
808808 let fA = (ft + eO)
809809 let fB = (fu + eP)
810810 let fC = bQ(D(fB, bu), D(fA, bt))
811811 let fD = H(fC, b)
812812 let fE = if (fr)
813813 then ft
814814 else fu
815815 let fF = toBigInt(fE)
816816 let fG = toBigInt(valueOrErrorMessage(assetInfo(bq), (("asset " + toBase58String(bq)) + " doesn't exist")).quantity)
817817 let fH = if ((fG > f))
818818 then true
819819 else aS("initial deposit requires all coins")
820820 if ((fH == fH))
821821 then {
822822 let fI = toBigInt(fz)
823823 let fJ = max([0, toInt(((fG * (sqrtBigInt((d + ((fI * d) / fF)), 18, 18, DOWN) - d)) / d))])
824824 let er = if (fo)
825825 then nil
826826 else [IntegerEntry(W(), fD), IntegerEntry(X(height, lastBlock.timestamp), fD), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), by(fw, fx, fJ, fD, 0, 0, height, lastBlock.timestamp, 0, 0))]
827827 let fK = bQ(D(fu, bu), D(ft, bt))
828828 let fL = H(fK, b)
829829 let fM = {
830830 let fN = if (fr)
831831 then $Tuple2(fw, ft)
832832 else $Tuple2(fx, fu)
833833 let ca = fN._1
834834 let fO = fN._2
835835 let fP = toInt(fraction(fG, toBigInt((ca / 2)), toBigInt(fO)))
836836 fraction((fJ - fP), b, fP)
837837 }
838838 $Tuple5(fJ, er, fk, fM, fr)
839839 }
840840 else throw("Strict value is not equal to itself.")
841841 }
842842
843843
844844 func fQ (fR,fz,fn,ab,ac) = {
845845 let fo = (ac == unit)
846846 let dd = be()
847847 let de = parseIntValue(dd[t])
848848 let df = parseIntValue(dd[u])
849849 let fS = [if ((fn == bq))
850850 then true
851851 else aS("invalid lp asset")]
852852 if ((fS == fS))
853853 then {
854854 let fT = if ((fR == br))
855855 then true
856856 else if ((fR == bs))
857857 then false
858858 else aS("invalid asset")
859859 let fU = if (fT)
860860 then toBigInt(bN(bj(br)))
861861 else toBigInt(bN(bj(bs)))
862862 let fV = if (fT)
863863 then de
864864 else df
865865 let fW = bN(bj(br))
866866 let fX = bN(bj(bs))
867867 let fY = if (fT)
868868 then fW
869869 else fX
870870 let fZ = toBigInt(fY)
871871 let fG = toBigInt(valueOrErrorMessage(assetInfo(bq), (("asset " + toBase58String(bq)) + " doesn't exist")).quantity)
872872 let ga = toBigInt(fz)
873873 let gb = max([0, toInt(((fU * (d - pow((d - ((ga * d) / fG)), 18, h, 0, 18, DOWN))) / d))])
874874 let gc = fj(gb, aZ)
875875 let gd = gc._1
876876 let fk = gc._2
877877 let ge = if (fT)
878878 then $Tuple4(gd, 0, (fW - gb), fX)
879879 else $Tuple4(0, gd, fW, (fX - gb))
880880 let gf = ge._1
881881 let gg = ge._2
882882 let gh = ge._3
883883 let gi = ge._4
884884 let fC = bQ(D(gi, bu), D(gh, bt))
885885 let fD = H(fC, b)
886886 let er = if (fo)
887887 then nil
888888 else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bJ(gf, gg, fz, fD, height, lastBlock.timestamp)), IntegerEntry(W(), fD), IntegerEntry(X(height, lastBlock.timestamp), fD)]
889889 let fK = bQ(D(fX, bu), D(fW, bt))
890890 let fL = H(fK, b)
891891 let fM = {
892892 let gj = (toInt(fraction(fU, ga, fG)) * 2)
893893 fraction((gd - gj), b, gj)
894894 }
895895 $Tuple5(gd, er, fk, fM, fT)
896896 }
897897 else throw("Strict value is not equal to itself.")
898898 }
899899
900900
901901 func gk () = {
902902 let bX = getString(U())
903903 if ($isInstanceOf(bX, "String"))
904904 then {
905905 let gl = bX
906906 fromBase58String(gl)
907907 }
908908 else if ($isInstanceOf(bX, "Unit"))
909909 then unit
910910 else throw("Match error")
911911 }
912912
913913
914914 func gm () = {
915915 let bX = getString(V())
916916 if ($isInstanceOf(bX, "String"))
917917 then {
918918 let gl = bX
919919 fromBase58String(gl)
920920 }
921921 else if ($isInstanceOf(bX, "Unit"))
922922 then unit
923923 else throw("Match error")
924924 }
925925
926926
927927 func gn (eY) = {
928928 let bX = gk()
929929 if ($isInstanceOf(bX, "ByteVector"))
930930 then {
931931 let go = bX
932932 (eY.callerPublicKey == go)
933933 }
934934 else if ($isInstanceOf(bX, "Unit"))
935935 then (eY.caller == this)
936936 else throw("Match error")
937937 }
938938
939939
940940 func gp (eY) = {
941941 let gq = throw("Permission denied")
942942 let bX = gk()
943943 if ($isInstanceOf(bX, "ByteVector"))
944944 then {
945945 let go = bX
946946 if ((eY.callerPublicKey == go))
947947 then true
948948 else gq
949949 }
950950 else if ($isInstanceOf(bX, "Unit"))
951951 then if ((eY.caller == this))
952952 then true
953953 else gq
954954 else throw("Match error")
955955 }
956956
957957
958958 @Callable(eY)
959959 func rebalance () = (cG(aO(this, ae())) ++ cG(aO(this, af())))
960960
961961
962962
963963 @Callable(eY)
964964 func calculateAmountOutForSwapREADONLY (gr,gs,gt) = {
965965 let gu = if ((gs == false))
966966 then {
967967 let gv = aO(this, af())
968968 let gw = aO(this, ae())
969969 $Tuple2(gv, gw)
970970 }
971971 else {
972972 let gv = aO(this, ae())
973973 let gw = aO(this, af())
974974 $Tuple2(gv, gw)
975975 }
976976 let gv = gu._1
977977 let gw = gu._2
978978 let gx = bN(gw)
979979 let gy = bN(gv)
980980 let gz = fraction(gy, gr, (gx + gr))
981981 let gA = (toBigInt(gx) * toBigInt(gy))
982982 let gB = (((toBigInt(bN(gw)) + toBigInt(gr)) + toBigInt(gt)) * (toBigInt(bN(gv)) - toBigInt(gz)))
983983 let gC = if ((gB >= gA))
984984 then true
985985 else throw("new K is fewer error")
986986 if ((gC == gC))
987987 then $Tuple2(nil, gz)
988988 else throw("Strict value is not equal to itself.")
989989 }
990990
991991
992992
993993 @Callable(eY)
994994 func calculateAmountOutForSwapAndSendTokens (gr,gs,gD,gE,gt) = {
995995 let gF = {
996996 let aY = invoke(aV, "getSwapContractREADONLY", nil, nil)
997997 if ($isInstanceOf(aY, "String"))
998998 then aY
999999 else throw(($getType(aY) + " couldn't be cast to String"))
10001000 }
10011001 let fS = [if ((value(eY.payments[0]).amount >= gr))
10021002 then true
10031003 else aS("Wrong amount"), if ((eY.caller == addressFromStringValue(gF)))
10041004 then true
10051005 else aS("Permission denied")]
10061006 if ((fS == fS))
10071007 then {
10081008 let eZ = value(eY.payments[0])
10091009 let gw = bj(eZ.assetId)
10101010 let gv = if ((gs == false))
10111011 then aO(this, af())
10121012 else aO(this, ae())
10131013 let gx = (bN(gw) - value(eY.payments[0]).amount)
10141014 let gy = bN(gv)
10151015 let gz = fraction(gy, gr, (gx + gr))
10161016 let gA = (toBigInt(gx) * toBigInt(gy))
10171017 let gB = ((toBigInt(bN(gw)) + toBigInt(gt)) * (toBigInt(bN(gv)) - toBigInt(gz)))
10181018 let gC = if ((gB >= gA))
10191019 then true
10201020 else throw("new K is fewer error")
10211021 if ((gC == gC))
10221022 then {
10231023 let gG = if ((gz >= gD))
10241024 then true
10251025 else throw("Exchange result is fewer coins than expected")
10261026 if ((gG == gG))
10271027 then {
10281028 let gH = {
10291029 let bX = cu(gv)
10301030 if ($isInstanceOf(bX, "(Boolean, Int, Int, String, String, Int, String)"))
10311031 then {
10321032 let cH = bX
10331033 cH
10341034 }
10351035 else throw("error lease config")
10361036 }
10371037 let gI = cQ(gv, gz)
10381038 if ((gI == gI))
10391039 then {
10401040 let dJ = invoke(this, "rebalance", nil, nil)
10411041 if ((dJ == dJ))
10421042 then $Tuple2((gI ++ [ScriptTransfer(addressFromStringValue(gE), gz, bh(gv))]), gz)
10431043 else throw("Strict value is not equal to itself.")
10441044 }
10451045 else throw("Strict value is not equal to itself.")
10461046 }
10471047 else throw("Strict value is not equal to itself.")
10481048 }
10491049 else throw("Strict value is not equal to itself.")
10501050 }
10511051 else throw("Strict value is not equal to itself.")
10521052 }
10531053
10541054
10551055
10561056 @Callable(eY)
10571057 func setManager (gJ) = {
10581058 let gK = gp(eY)
10591059 if ((gK == gK))
10601060 then {
10611061 let gL = fromBase58String(gJ)
10621062 if ((gL == gL))
10631063 then [StringEntry(V(), gJ)]
10641064 else throw("Strict value is not equal to itself.")
10651065 }
10661066 else throw("Strict value is not equal to itself.")
10671067 }
10681068
10691069
10701070
10711071 @Callable(eY)
10721072 func confirmManager () = {
10731073 let gM = gm()
10741074 let gN = if (isDefined(gM))
10751075 then true
10761076 else throw("No pending manager")
10771077 if ((gN == gN))
10781078 then {
10791079 let gO = if ((eY.callerPublicKey == value(gM)))
10801080 then true
10811081 else throw("You are not pending manager")
10821082 if ((gO == gO))
10831083 then [StringEntry(U(), toBase58String(value(gM))), DeleteEntry(V())]
10841084 else throw("Strict value is not equal to itself.")
10851085 }
10861086 else throw("Strict value is not equal to itself.")
10871087 }
10881088
10891089
10901090
10911091 @Callable(eY)
10921092 func put (dM,gP) = if ((0 > dM))
10931093 then throw("Invalid slippageTolerance passed")
10941094 else {
10951095 let fe = fb(eY, dM, true)
10961096 let eo = fe._2
10971097 let dq = fe._7
10981098 let dK = fe._9
10991099 let ep = fe._10
11001100 let eq = fe._11
11011101 let gQ = fe._12
11021102 let gR = fe._13
11031103 let fc = toBigInt(value(eY.payments[0]).amount)
11041104 let fd = toBigInt(value(eY.payments[1]).amount)
11051105 let eF = ey(fc, fd, toBigInt(0))
11061106 if ((eF == eF))
11071107 then {
11081108 let fg = invoke(aV, "emit", [eo], nil)
11091109 if ((fg == fg))
11101110 then {
11111111 let fh = {
11121112 let bX = fg
11131113 if ($isInstanceOf(bX, "Address"))
11141114 then {
11151115 let fi = bX
11161116 invoke(fi, "emit", [eo], nil)
11171117 }
11181118 else unit
11191119 }
11201120 if ((fh == fh))
11211121 then {
11221122 let gS = if ((ep > 0))
11231123 then invoke(bx, "put", nil, [AttachedPayment(gQ, ep)])
11241124 else nil
11251125 if ((gS == gS))
11261126 then {
11271127 let gT = if ((eq > 0))
11281128 then invoke(bx, "put", nil, [AttachedPayment(gR, eq)])
11291129 else nil
11301130 if ((gT == gT))
11311131 then {
11321132 let gU = if (gP)
11331133 then {
11341134 let gV = invoke(bw, "stake", nil, [AttachedPayment(dq, eo)])
11351135 if ((gV == gV))
11361136 then nil
11371137 else throw("Strict value is not equal to itself.")
11381138 }
11391139 else [ScriptTransfer(eY.caller, eo, dq)]
11401140 let gW = eG(0, 0, 0)
11411141 if ((gW == gW))
11421142 then {
11431143 let ex = gW._2
11441144 let gX = gW._1
11451145 let gY = eK(eF, ex)
11461146 if ((gY == gY))
1147- then ((dK ++ gU) ++ gX)
1147+ then {
1148+ let dJ = invoke(this, "rebalance", nil, nil)
1149+ if ((dJ == dJ))
1150+ then ((dK ++ gU) ++ gX)
1151+ else throw("Strict value is not equal to itself.")
1152+ }
11481153 else throw("Strict value is not equal to itself.")
11491154 }
11501155 else throw("Strict value is not equal to itself.")
11511156 }
11521157 else throw("Strict value is not equal to itself.")
11531158 }
11541159 else throw("Strict value is not equal to itself.")
11551160 }
11561161 else throw("Strict value is not equal to itself.")
11571162 }
11581163 else throw("Strict value is not equal to itself.")
11591164 }
11601165 else throw("Strict value is not equal to itself.")
11611166 }
11621167
11631168
11641169
11651170 @Callable(eY)
11661171 func putForFree (gZ) = if ((0 > gZ))
11671172 then throw("Invalid value passed")
11681173 else {
11691174 let fe = fb(eY, gZ, false)
11701175 let dK = fe._9
11711176 let fc = toBigInt(value(eY.payments[0]).amount)
11721177 let fd = toBigInt(value(eY.payments[1]).amount)
11731178 let eF = ey(fc, fd, toBigInt(0))
11741179 if ((eF == eF))
11751180 then {
11761181 let ha = eG(0, 0, 0)
11771182 let gX = ha._1
11781183 let ex = ha._2
11791184 let gY = eK(eF, ex)
11801185 if ((gY == gY))
11811186 then (dK ++ gX)
11821187 else throw("Strict value is not equal to itself.")
11831188 }
11841189 else throw("Strict value is not equal to itself.")
11851190 }
11861191
11871192
11881193
11891194 @Callable(eY)
11901195 func putOneTkn (hb,hc) = {
11911196 let hd = {
11921197 let aY = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11931198 if ($isInstanceOf(aY, "Boolean"))
11941199 then aY
11951200 else throw(($getType(aY) + " couldn't be cast to Boolean"))
11961201 }
11971202 let he = if (if (if (bc())
11981203 then true
11991204 else (bp == l))
12001205 then true
12011206 else (bp == n))
12021207 then true
12031208 else hd
12041209 let fS = [if (if (!(he))
12051210 then true
12061211 else gn(eY))
12071212 then true
12081213 else aS("put operation is blocked by admin"), if ((size(eY.payments) == 1))
12091214 then true
12101215 else aS("exactly 1 payment are expected")]
12111216 if ((fS == fS))
12121217 then {
12131218 let hf = eY.payments[0]
12141219 let fn = hf.assetId
12151220 let fm = hf.amount
12161221 let eF = if ((fn == br))
12171222 then ey(toBigInt(fm), toBigInt(0), toBigInt(0))
12181223 else if ((fn == bs))
12191224 then ey(toBigInt(0), toBigInt(fm), toBigInt(0))
12201225 else aS("payment asset is not supported")
12211226 if ((eF == eF))
12221227 then {
12231228 let ab = eY.caller
12241229 let ac = eY.transactionId
12251230 let hg = fl(fm, fn, ab, ac)
12261231 if ((hg == hg))
12271232 then {
12281233 let fr = hg._5
12291234 let hh = hg._4
12301235 let fk = hg._3
12311236 let er = hg._2
12321237 let hi = hg._1
12331238 let hj = if (if ((hb > 0))
12341239 then (hb > hi)
12351240 else false)
12361241 then aS(makeString(["amount to receive is less than ", toString(hb)], ""))
12371242 else hi
12381243 let fg = ff(hj)
12391244 if ((fg == fg))
12401245 then {
12411246 let gU = if (hc)
12421247 then {
12431248 let hk = invoke(bw, "stake", nil, [AttachedPayment(bq, hj)])
12441249 if ((hk == hk))
12451250 then nil
12461251 else throw("Strict value is not equal to itself.")
12471252 }
12481253 else [ScriptTransfer(eY.caller, hj, bq)]
12491254 let hl = if ((fk > 0))
12501255 then [ScriptTransfer(aW, fk, fn)]
12511256 else nil
12521257 let hm = if ((this == aW))
12531258 then $Tuple2(0, 0)
12541259 else if (fr)
12551260 then $Tuple2(-(fk), 0)
12561261 else $Tuple2(0, -(fk))
12571262 let eH = hm._1
12581263 let eI = hm._2
12591264 let hn = eG(eH, eI, 0)
12601265 let gX = hn._1
12611266 let ex = hn._2
12621267 let eR = value(getString(aj))
12631268 let gY = eK(eF, ex)
12641269 if ((gY == gY))
12651270 then {
12661271 let dJ = invoke(this, "rebalance", nil, nil)
12671272 if ((dJ == dJ))
12681273 then $Tuple2((((er ++ gU) ++ hl) ++ gX), hj)
12691274 else throw("Strict value is not equal to itself.")
12701275 }
12711276 else throw("Strict value is not equal to itself.")
12721277 }
12731278 else throw("Strict value is not equal to itself.")
12741279 }
12751280 else throw("Strict value is not equal to itself.")
12761281 }
12771282 else throw("Strict value is not equal to itself.")
12781283 }
12791284 else throw("Strict value is not equal to itself.")
12801285 }
12811286
12821287
12831288
12841289 @Callable(eY)
12851290 func putOneTknREADONLY (fn,fm) = {
12861291 let ho = fl(fm, bh(fn), unit, unit)
12871292 let hi = ho._1
12881293 let er = ho._2
12891294 let fk = ho._3
12901295 let hh = ho._4
12911296 let fr = ho._5
12921297 $Tuple2(nil, $Tuple3(hi, fk, hh))
12931298 }
12941299
12951300
12961301
12971302 @Callable(eY)
12981303 func getOneTkn (hp,hb) = {
12991304 let hd = {
13001305 let aY = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13011306 if ($isInstanceOf(aY, "Boolean"))
13021307 then aY
13031308 else throw(($getType(aY) + " couldn't be cast to Boolean"))
13041309 }
13051310 let hq = if (if (bc())
13061311 then true
13071312 else (bp == n))
13081313 then true
13091314 else hd
13101315 let fS = [if (if (!(hq))
13111316 then true
13121317 else gn(eY))
13131318 then true
13141319 else aS("get operation is blocked by admin"), if ((size(eY.payments) == 1))
13151320 then true
13161321 else aS("exactly 1 payment are expected")]
13171322 if ((fS == fS))
13181323 then {
13191324 let fR = bh(hp)
13201325 let hf = eY.payments[0]
13211326 let fn = hf.assetId
13221327 let fz = hf.amount
13231328 let eF = ey(toBigInt(0), toBigInt(0), toBigInt(0))
13241329 if ((eF == eF))
13251330 then {
13261331 let ab = eY.caller
13271332 let ac = eY.transactionId
13281333 let hr = fQ(fR, fz, fn, ab, ac)
13291334 if ((hr == hr))
13301335 then {
13311336 let fT = hr._5
13321337 let hh = hr._4
13331338 let fk = hr._3
13341339 let er = hr._2
13351340 let hs = hr._1
13361341 let ca = if (if ((hb > 0))
13371342 then (hb > hs)
13381343 else false)
13391344 then aS(makeString(["amount to receive is less than ", toString(hb)], ""))
13401345 else hs
13411346 let gH = {
13421347 let bX = cu(hp)
13431348 if ($isInstanceOf(bX, "(Boolean, Int, Int, String, String, Int, String)"))
13441349 then {
13451350 let cH = bX
13461351 cH
13471352 }
13481353 else throw("error lease config")
13491354 }
13501355 let ht = invoke(aV, "burn", [fz], [AttachedPayment(fn, fz)])
13511356 if ((ht == ht))
13521357 then {
13531358 let gI = cQ(hp, ca)
13541359 if ((gI == gI))
13551360 then {
13561361 let hu = [ScriptTransfer(ab, ca, fR)]
13571362 let hl = if ((fk > 0))
13581363 then [ScriptTransfer(aW, fk, fR)]
13591364 else nil
13601365 let hv = {
13611366 let hw = if ((this == aW))
13621367 then 0
13631368 else fk
13641369 if (fT)
13651370 then $Tuple2(-((ca + hw)), 0)
13661371 else $Tuple2(0, -((ca + hw)))
13671372 }
13681373 let eH = hv._1
13691374 let eI = hv._2
13701375 let hx = eG(eH, eI, 0)
13711376 let gX = hx._1
13721377 let ex = hx._2
13731378 let gY = eK(eF, ex)
13741379 if ((gY == gY))
13751380 then {
13761381 let dJ = invoke(this, "rebalance", nil, nil)
13771382 if ((dJ == dJ))
13781383 then $Tuple2(((((er ++ gI) ++ hu) ++ hl) ++ gX), ca)
13791384 else throw("Strict value is not equal to itself.")
13801385 }
13811386 else throw("Strict value is not equal to itself.")
13821387 }
13831388 else throw("Strict value is not equal to itself.")
13841389 }
13851390 else throw("Strict value is not equal to itself.")
13861391 }
13871392 else throw("Strict value is not equal to itself.")
13881393 }
13891394 else throw("Strict value is not equal to itself.")
13901395 }
13911396 else throw("Strict value is not equal to itself.")
13921397 }
13931398
13941399
13951400
13961401 @Callable(eY)
13971402 func getOneTknREADONLY (fR,fz) = {
13981403 let hy = fQ(bh(fR), fz, bq, unit, unit)
13991404 let hs = hy._1
14001405 let er = hy._2
14011406 let fk = hy._3
14021407 let hh = hy._4
14031408 let fT = hy._5
14041409 $Tuple2(nil, $Tuple3(hs, fk, hh))
14051410 }
14061411
14071412
14081413
14091414 @Callable(eY)
14101415 func unstakeAndGetOneTkn (hz,hp,hb) = {
14111416 let hd = {
14121417 let aY = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
14131418 if ($isInstanceOf(aY, "Boolean"))
14141419 then aY
14151420 else throw(($getType(aY) + " couldn't be cast to Boolean"))
14161421 }
14171422 let hq = if (if (bc())
14181423 then true
14191424 else (bp == n))
14201425 then true
14211426 else hd
14221427 let fS = [if (if (!(hq))
14231428 then true
14241429 else gn(eY))
14251430 then true
14261431 else aS("get operation is blocked by admin"), if ((size(eY.payments) == 0))
14271432 then true
14281433 else aS("no payments are expected")]
14291434 if ((fS == fS))
14301435 then {
14311436 let fR = bh(hp)
14321437 let ab = eY.caller
14331438 let ac = eY.transactionId
14341439 let eF = ey(toBigInt(0), toBigInt(0), toBigInt(0))
14351440 if ((eF == eF))
14361441 then {
14371442 let hA = invoke(bw, "unstake", [toBase58String(bq), hz], nil)
14381443 if ((hA == hA))
14391444 then {
14401445 let hB = fQ(fR, hz, bq, ab, ac)
14411446 if ((hB == hB))
14421447 then {
14431448 let fT = hB._5
14441449 let hh = hB._4
14451450 let fk = hB._3
14461451 let er = hB._2
14471452 let hs = hB._1
14481453 let ca = if (if ((hb > 0))
14491454 then (hb > hs)
14501455 else false)
14511456 then aS(makeString(["amount to receive is less than ", toString(hb)], ""))
14521457 else hs
14531458 let ht = invoke(aV, "burn", [hz], [AttachedPayment(bq, hz)])
14541459 if ((ht == ht))
14551460 then {
14561461 let gI = cQ(hp, ca)
14571462 if ((gI == gI))
14581463 then {
14591464 let hu = [ScriptTransfer(eY.caller, ca, fR)]
14601465 let hl = if ((fk > 0))
14611466 then [ScriptTransfer(aW, fk, fR)]
14621467 else nil
14631468 let hC = {
14641469 let hw = if ((this == aW))
14651470 then 0
14661471 else fk
14671472 if (fT)
14681473 then $Tuple2(-((ca + hw)), 0)
14691474 else $Tuple2(0, -((ca + hw)))
14701475 }
14711476 let eH = hC._1
14721477 let eI = hC._2
14731478 let hD = eG(eH, eI, 0)
14741479 let gX = hD._1
14751480 let ex = hD._2
14761481 let gY = eK(eF, ex)
14771482 if ((gY == gY))
14781483 then {
14791484 let dJ = invoke(this, "rebalance", nil, nil)
14801485 if ((dJ == dJ))
14811486 then $Tuple2(((((er ++ gI) ++ hu) ++ hl) ++ gX), ca)
14821487 else throw("Strict value is not equal to itself.")
14831488 }
14841489 else throw("Strict value is not equal to itself.")
14851490 }
14861491 else throw("Strict value is not equal to itself.")
14871492 }
14881493 else throw("Strict value is not equal to itself.")
14891494 }
14901495 else throw("Strict value is not equal to itself.")
14911496 }
14921497 else throw("Strict value is not equal to itself.")
14931498 }
14941499 else throw("Strict value is not equal to itself.")
14951500 }
14961501 else throw("Strict value is not equal to itself.")
14971502 }
14981503
14991504
15001505
15011506 @Callable(eY)
15021507 func get () = {
15031508 let ec = eX(eY)
15041509 let hE = ec._1
15051510 let dG = ec._2
15061511 let fa = ec._3
15071512 let do = ec._4
15081513 let dK = ec._5
15091514 let eF = ey(toBigInt(0), toBigInt(0), toBigInt(0))
15101515 if ((eF == eF))
15111516 then {
15121517 let hF = invoke(aV, "burn", [fa], [AttachedPayment(do, fa)])
15131518 if ((hF == hF))
15141519 then {
15151520 let hG = eG(-(hE), -(dG), 0)
15161521 let gX = hG._1
15171522 let ex = hG._2
15181523 let gY = eK(eF, ex)
15191524 if ((gY == gY))
15201525 then (dK ++ gX)
15211526 else throw("Strict value is not equal to itself.")
15221527 }
15231528 else throw("Strict value is not equal to itself.")
15241529 }
15251530 else throw("Strict value is not equal to itself.")
15261531 }
15271532
15281533
15291534
15301535 @Callable(eY)
15311536 func getNoLess (hH,hI) = {
15321537 let ec = eX(eY)
15331538 let dF = ec._1
15341539 let dG = ec._2
15351540 let fa = ec._3
15361541 let do = ec._4
15371542 let dK = ec._5
15381543 if ((hH > dF))
15391544 then throw(((("noLessThenAmtAsset failed: " + toString(dF)) + " < ") + toString(hH)))
15401545 else if ((hI > dG))
15411546 then throw(((("noLessThenPriceAsset failed: " + toString(dG)) + " < ") + toString(hI)))
15421547 else {
15431548 let eF = ey(toBigInt(0), toBigInt(0), toBigInt(0))
15441549 if ((eF == eF))
15451550 then {
15461551 let hF = invoke(aV, "burn", [fa], [AttachedPayment(do, fa)])
15471552 if ((hF == hF))
15481553 then {
15491554 let hJ = eG(-(dF), -(dG), 0)
15501555 let gX = hJ._1
15511556 let ex = hJ._2
15521557 let gY = eK(eF, ex)
15531558 if ((gY == gY))
15541559 then (dK ++ gX)
15551560 else throw("Strict value is not equal to itself.")
15561561 }
15571562 else throw("Strict value is not equal to itself.")
15581563 }
15591564 else throw("Strict value is not equal to itself.")
15601565 }
15611566 }
15621567
15631568
15641569
15651570 @Callable(eY)
15661571 func unstakeAndGet (ca) = {
15671572 let hK = if ((size(eY.payments) != 0))
15681573 then throw("No payments are expected")
15691574 else true
15701575 if ((hK == hK))
15711576 then {
15721577 let dd = be()
15731578 let dq = fromBase58String(dd[q])
15741579 let eF = ey(toBigInt(0), toBigInt(0), toBigInt(0))
15751580 if ((eF == eF))
15761581 then {
15771582 let hA = invoke(bw, "unstake", [toBase58String(dq), ca], nil)
15781583 if ((hA == hA))
15791584 then {
15801585 let ec = dm(toBase58String(eY.transactionId), toBase58String(dq), ca, eY.caller)
15811586 let dF = ec._1
15821587 let dG = ec._2
15831588 let dt = parseIntValue(ec._9)
15841589 let dK = ec._10
15851590 let hL = if (if (bc())
15861591 then true
15871592 else (dt == n))
15881593 then throw(("Get operation is blocked by admin. Status = " + toString(dt)))
15891594 else true
15901595 if ((hL == hL))
15911596 then {
15921597 let hF = invoke(aV, "burn", [ca], [AttachedPayment(dq, ca)])
15931598 if ((hF == hF))
15941599 then {
15951600 let hM = eG(-(dF), -(dG), 0)
15961601 let gX = hM._1
15971602 let ex = hM._2
15981603 let gY = eK(eF, ex)
15991604 if ((gY == gY))
16001605 then (dK ++ gX)
16011606 else throw("Strict value is not equal to itself.")
16021607 }
16031608 else throw("Strict value is not equal to itself.")
16041609 }
16051610 else throw("Strict value is not equal to itself.")
16061611 }
16071612 else throw("Strict value is not equal to itself.")
16081613 }
16091614 else throw("Strict value is not equal to itself.")
16101615 }
16111616 else throw("Strict value is not equal to itself.")
16121617 }
16131618
16141619
16151620
16161621 @Callable(eY)
16171622 func unstakeAndGetNoLess (hz,hN,hI) = {
16181623 let hq = if (bc())
16191624 then true
16201625 else (bp == n)
16211626 let fS = [if (!(hq))
16221627 then true
16231628 else throw("get operation is blocked by admin"), if ((size(eY.payments) == 0))
16241629 then true
16251630 else throw("no payments are expected")]
16261631 if ((fS == fS))
16271632 then {
16281633 let eF = ey(toBigInt(0), toBigInt(0), toBigInt(0))
16291634 if ((eF == eF))
16301635 then {
16311636 let hA = invoke(bw, "unstake", [toBase58String(bq), hz], nil)
16321637 if ((hA == hA))
16331638 then {
16341639 let ec = dm(toBase58String(eY.transactionId), toBase58String(bq), hz, eY.caller)
16351640 let dF = ec._1
16361641 let dG = ec._2
16371642 let dK = ec._10
16381643 let hO = [if ((dF >= hN))
16391644 then true
16401645 else throw(makeString(["amount asset amount to receive is less than ", toString(hN)], "")), if ((dG >= hI))
16411646 then true
16421647 else throw(makeString(["price asset amount to receive is less than ", toString(hI)], ""))]
16431648 if ((hO == hO))
16441649 then {
16451650 let hF = invoke(aV, "burn", [hz], [AttachedPayment(bq, hz)])
16461651 if ((hF == hF))
16471652 then {
16481653 let hP = eG(-(dF), -(dG), 0)
16491654 let gX = hP._1
16501655 let ex = hP._2
16511656 let gY = eK(eF, ex)
16521657 if ((gY == gY))
16531658 then (dK ++ gX)
16541659 else throw("Strict value is not equal to itself.")
16551660 }
16561661 else throw("Strict value is not equal to itself.")
16571662 }
16581663 else throw("Strict value is not equal to itself.")
16591664 }
16601665 else throw("Strict value is not equal to itself.")
16611666 }
16621667 else throw("Strict value is not equal to itself.")
16631668 }
16641669 else throw("Strict value is not equal to itself.")
16651670 }
16661671
16671672
16681673
16691674 @Callable(eY)
16701675 func activate (hQ,hR) = if ((toString(eY.caller) != toString(aV)))
16711676 then throw("permissions denied")
16721677 else $Tuple2([StringEntry(ae(), hQ), StringEntry(af(), hR)], "success")
16731678
16741679
16751680
16761681 @Callable(eY)
16771682 func refreshKLp () = {
16781683 let hS = valueOrElse(getInteger(ak), 0)
16791684 let hT = if (((height - hS) >= an))
16801685 then unit
16811686 else aS(makeString([toString(an), " blocks have not passed since the previous call"], ""))
16821687 if ((hT == hT))
16831688 then {
16841689 let eR = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aU("invalid kLp"))
16851690 let hU = eG(0, 0, 0)
16861691 let hV = hU._1
16871692 let ex = hU._2
16881693 let eJ = if ((eR != ex))
16891694 then hV
16901695 else aS("nothing to refresh")
16911696 $Tuple2(eJ, toString(ex))
16921697 }
16931698 else throw("Strict value is not equal to itself.")
16941699 }
16951700
16961701
16971702
16981703 @Callable(eY)
16991704 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, be())
17001705
17011706
17021707
17031708 @Callable(eY)
17041709 func getAccBalanceWrapperREADONLY (ar) = $Tuple2(nil, bN(ar))
17051710
17061711
17071712
17081713 @Callable(eY)
17091714 func calcPricesWrapperREADONLY (cX,cY,dc) = {
17101715 let dl = db(cX, cY, dc)
17111716 $Tuple2(nil, [toString(dl[0]), toString(dl[1]), toString(dl[2])])
17121717 }
17131718
17141719
17151720
17161721 @Callable(eY)
17171722 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
17181723
17191724
17201725
17211726 @Callable(eY)
17221727 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
17231728
17241729
17251730
17261731 @Callable(eY)
17271732 func calcPriceBigIntWrapperREADONLY (bR,bS) = $Tuple2(nil, toString(bQ(parseBigIntValue(bR), parseBigIntValue(bS))))
17281733
17291734
17301735
17311736 @Callable(eY)
17321737 func estimatePutOperationWrapperREADONLY (dn,dM,dN,dO,dP,dQ,ab,dR,dS) = $Tuple2(nil, dL(dn, dM, dN, dO, dP, dQ, ab, dR, dS))
17331738
17341739
17351740
17361741 @Callable(eY)
17371742 func estimateGetOperationWrapperREADONLY (dn,do,dp,ab) = {
17381743 let ec = dm(dn, do, dp, addressFromStringValue(ab))
17391744 $Tuple2(nil, $Tuple10(ec._1, ec._2, ec._3, ec._4, ec._5, ec._6, ec._7, toString(ec._8), ec._9, ec._10))
17401745 }
17411746
17421747
17431748
17441749 @Callable(eY)
17451750 func statsREADONLY () = {
17461751 let dd = be()
17471752 let dq = fromBase58String(dd[q])
17481753 let hW = dd[r]
17491754 let hX = dd[s]
17501755 let dV = dd[v]
17511756 let dW = dd[w]
17521757 let de = parseIntValue(dd[t])
17531758 let df = parseIntValue(dd[u])
17541759 let hY = valueOrErrorMessage(assetInfo(dq), (("Asset " + toBase58String(dq)) + " doesn't exist")).quantity
17551760 let hZ = bN(hW)
17561761 let ia = bN(hX)
17571762 let ib = if ((hY == 0))
17581763 then [e, e, e]
17591764 else db(hZ, ia, hY)
17601765 let dA = 0
17611766 let ic = H(ib[1], b)
17621767 let id = H(ib[2], b)
17631768 let ie = value(getInteger(aV, aF(toString(this))))
17641769 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hZ), toString(ia), toString(hY), toString(dA), toString(ic), toString(id), toString(ie)], j))
17651770 }
17661771
17671772
17681773
17691774 @Callable(eY)
17701775 func evaluatePutByAmountAssetREADONLY (dN) = {
17711776 let dd = be()
17721777 let dq = fromBase58String(dd[q])
17731778 let dT = dd[r]
17741779 let dr = fromBase58String(dT)
17751780 let dU = dd[s]
17761781 let ds = fromBase58String(dU)
17771782 let de = parseIntValue(dd[t])
17781783 let df = parseIntValue(dd[u])
17791784 let dt = dd[p]
17801785 let hY = valueOrErrorMessage(assetInfo(dq), (("Asset " + toBase58String(dq)) + " doesn't exist")).quantity
17811786 let hZ = bN(dT)
17821787 let ia = bN(dU)
17831788 let cZ = D(hZ, de)
17841789 let da = D(ia, df)
17851790 let dz = if ((hY == 0))
17861791 then e
17871792 else bQ(da, cZ)
17881793 let dZ = D(dN, de)
17891794 let ea = fraction(dZ, dz, d)
17901795 let dP = H(ea, df)
17911796 let fe = dL("", 500000, dN, dr, dP, ds, "", true, false)
17921797 let ek = fe._1
17931798 let if = fe._3
17941799 let dv = fe._4
17951800 let dx = fe._5
17961801 let du = fe._6
17971802 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ek), toString(H(dz, b)), toString(dv), toString(dx), toString(du), dt, toString(dN), toString(dP)], j))
17981803 }
17991804
18001805
18011806
18021807 @Callable(eY)
18031808 func evaluatePutByPriceAssetREADONLY (dP) = {
18041809 let dd = be()
18051810 let dq = fromBase58String(dd[q])
18061811 let dT = dd[r]
18071812 let dr = fromBase58String(dT)
18081813 let dU = dd[s]
18091814 let ds = fromBase58String(dU)
18101815 let de = parseIntValue(dd[t])
18111816 let df = parseIntValue(dd[u])
18121817 let dt = dd[p]
18131818 let hY = valueOrErrorMessage(assetInfo(dq), (("Asset " + toBase58String(dq)) + " doesn't exist")).quantity
18141819 let ig = bN(dT)
18151820 let ih = bN(dU)
18161821 let ii = D(ig, de)
18171822 let ij = D(ih, df)
18181823 let dz = if ((hY == 0))
18191824 then e
18201825 else bQ(ij, ii)
18211826 let ea = D(dP, df)
18221827 let dZ = fraction(ea, d, dz)
18231828 let dN = H(dZ, de)
18241829 let fe = dL("", 500000, dN, dr, dP, ds, "", true, false)
18251830 let ek = fe._1
18261831 let if = fe._3
18271832 let dv = fe._4
18281833 let dx = fe._5
18291834 let du = fe._6
18301835 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ek), toString(H(dz, b)), toString(dv), toString(dx), toString(du), dt, toString(dN), toString(dP)], j))
18311836 }
18321837
18331838
18341839
18351840 @Callable(eY)
18361841 func evaluateGetREADONLY (ik,il) = {
18371842 let ec = dm("", ik, il, this)
18381843 let dF = ec._1
18391844 let dG = ec._2
18401845 let dv = ec._5
18411846 let dx = ec._6
18421847 let du = ec._7
18431848 let dA = ec._8
18441849 let dt = parseIntValue(ec._9)
18451850 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dF), toString(dG), toString(dv), toString(dx), toString(du), toString(dA), toString(dt)], j))
18461851 }
18471852
18481853
18491854 @Verifier(im)
18501855 func in () = {
18511856 let io = {
18521857 let bX = gk()
18531858 if ($isInstanceOf(bX, "ByteVector"))
18541859 then {
18551860 let go = bX
18561861 go
18571862 }
18581863 else if ($isInstanceOf(bX, "Unit"))
18591864 then im.senderPublicKey
18601865 else throw("Match error")
18611866 }
18621867 let bX = im
18631868 if ($isInstanceOf(bX, "Order"))
18641869 then {
18651870 let eN = bX
18661871 let ip = bd()
18671872 let iq = eM(eN)
18681873 let aK = iq._1
18691874 let aL = iq._2
18701875 let aM = sigVerify(eN.bodyBytes, eN.proofs[0], eN.senderPublicKey)
18711876 let aN = sigVerify(eN.bodyBytes, eN.proofs[1], ip)
18721877 if (if (if (aK)
18731878 then aM
18741879 else false)
18751880 then aN
18761881 else false)
18771882 then true
18781883 else aJ(aK, aL, aM, aN)
18791884 }
18801885 else if ($isInstanceOf(bX, "SetScriptTransaction"))
18811886 then {
18821887 let gl = bX
18831888 if (sigVerify(im.bodyBytes, im.proofs[0], io))
18841889 then true
18851890 else {
18861891 let ir = blake2b256(value(gl.script))
18871892 let is = fromBase64String(value(getString(aV, aH())))
18881893 let it = scriptHash(this)
18891894 if ((is == ir))
18901895 then (it != ir)
18911896 else false
18921897 }
18931898 }
18941899 else sigVerify(im.bodyBytes, im.proofs[0], io)
18951900 }
18961901

github/deemru/w8io/873ac7e 
221.22 ms