tx · ACPsrZCWrUKGAreU7GNsvMm9vxSJ3s2EmG2pEr3WbPNJ

3N7b3kPunHUXhZp1vMG9NhPMARNEprCMWxT:  -0.04200000 Waves

2023.04.06 11:01 [2522424] smart account 3N7b3kPunHUXhZp1vMG9NhPMARNEprCMWxT > SELF 0.00000000 Waves

{ "type": 13, "id": "ACPsrZCWrUKGAreU7GNsvMm9vxSJ3s2EmG2pEr3WbPNJ", "fee": 4200000, "feeAssetId": null, "timestamp": 1680768106996, "version": 2, "chainId": 84, "sender": "3N7b3kPunHUXhZp1vMG9NhPMARNEprCMWxT", "senderPublicKey": "AYbpHveq7zviKTDV7SGTB1pZGFbkumgfq3jSwVv6BznT", "proofs": [ "28gZf7Je4tFfNxT48QFsh24U4FuoMxSaEZ6eDpUGts8P1J97H1DSKcXmLAjxRGe4zLBGw9jimRUs9nSoxCVkA21J" ], "script": "base64:BgKQNwgCEgASBQoDAQQBEgcKBQEEAQgBEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiC3RvWDE4QmlnSW50Igdmcm9tWDE4IgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIMZnJvbVgxOFJvdW5kIgVyb3VuZCIHdG9TY2FsZSIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50Igxzd2FwQ29udHJhY3QiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIUa2V5QWRkaXRpb25hbEJhbGFuY2UiB2Fzc2V0SWQiFmtleVN0YWtpbmdBc3NldEJhbGFuY2UiGmdldEFkZGl0aW9uYWxCYWxhbmNlT3JaZXJvIhxnZXRTdGFraW5nQXNzZXRCYWxhbmNlT3JaZXJvIhBrZXlGYWN0b3J5Q29uZmlnIg1rZXlNYXRjaGVyUHViIilrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cyITcG9vbENvbnRyYWN0QWRkcmVzcyINa2V5UG9vbENvbmZpZyIJaUFtdEFzc2V0IgtpUHJpY2VBc3NldCIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIhNrZXlBbGxQb29sc1NodXRkb3duIg1rZXlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiFmtleUFsbG93ZWRMcFNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiD3Rocm93T3JkZXJFcnJvciIKb3JkZXJWYWxpZCIOb3JkZXJWYWxpZEluZm8iC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIgVpbkZlZSIBQCIGb3V0RmVlIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDg5NjI5MTI4Ig5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIg1iYWxhbmNlT25Qb29sIgx0b3RhbEJhbGFuY2UiD2NhbGNQcmljZUJpZ0ludCIIcHJBbXRYMTgiCGFtQW10WDE4IhRjYWxjUHJpY2VCaWdJbnRSb3VuZCIHZ2V0UmF0ZSIFcHJveHkiA2ludiIHJG1hdGNoMCIBciIHZGVwb3NpdCIGYW1vdW50Ig5zdGFraW5nQXNzZXRJZCIYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlIhpjdXJyZW50U3Rha2luZ0Fzc2V0QmFsYW5jZSIFYXNzZXQiDWRlcG9zaXRJbnZva2UiFHJlY2VpdmVkU3Rha2luZ0Fzc2V0IhRuZXdBZGRpdGlvbmFsQmFsYW5jZSIWbmV3U3Rha2luZ0Fzc2V0QmFsYW5jZSIId2l0aGRyYXciDHByb3h5UmF0ZU11bCINcHJvZml0QWRkcmVzcyIQY3VycmVudFByb3h5UmF0ZSIHb2xkUmF0ZSIMc3Rha2luZ0Fzc2V0IhRvbGRTZW5kU3Rha2luZ0Ftb3VudCIWc2VuZFN0YWtpbmdBc3NldEFtb3VudCIMcHJvZml0QW1vdW50Ig53aXRoZHJhd0ludm9rZSIOcmVjZWl2ZWRBc3NldHMiE2dldExlYXNlUHJveHlDb25maWciAWEiEXJlYmFsYW5jZUludGVybmFsIgt0YXJnZXRSYXRpbyIKbWluQmFsYW5jZSIQYXZhaWxhYmxlQmFsYW5jZSIBYiIBdSIMd2hvbGVCYWxhbmNlIhd0YXJnZXRBZGRpdGlvbmFsQmFsYW5jZSIEZGlmZiIPc2VuZEFzc2V0QW1vdW50Ig5nZXRBc3NldEFtb3VudCIOcmViYWxhbmNlQXNzZXQiDSR0MDE1NTI3MTU2NjMiCmlzTGVhc2FibGUiC2xlYXNlZFJhdGlvIgxwcm94eUFkZHJlc3MiDHByb3h5QXNzZXRJZCIUc3Rha2luZ1Byb2ZpdEFkZHJlc3MiGXdpdGhkcmF3QW5kUmViYWxhbmNlQXNzZXQiCWdldEFtb3VudCINJHQwMTYwNTIxNjE4OCITbmV3VG90YWxDYWxjQmFsYW5jZSIOd2l0aGRyYXdBbW91bnQiEHByaXZhdGVDYWxjUHJpY2UiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCIOYW10QXNzZXRBbXRYMTgiEHByaWNlQXNzZXRBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciC2FtdEFzc2V0RGNtIg1wcmljZUFzc2V0RGNtIghwcmljZVgxOCIIbHBBbXRYMTgiE2xwUHJpY2VJbkFtQXNzZXRYMTgiE2xwUHJpY2VJblByQXNzZXRYMTgiD2NhbGN1bGF0ZVByaWNlcyIGcHJpY2VzIhRlc3RpbWF0ZUdldE9wZXJhdGlvbiIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCIJbHBBc3NldElkIglhbUFzc2V0SWQiCXByQXNzZXRJZCIKcG9vbFN0YXR1cyIKbHBFbWlzc2lvbiIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4Ig1scEVtaXNzaW9uWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCISQW1BbXRXaXRoZHJhd1N0YXRlIhJQckFtdFdpdGhkcmF3U3RhdGUiBXN0YXRlIhRlc3RpbWF0ZVB1dE9wZXJhdGlvbiIRc2xpcHBhZ2VUb2xlcmFuY2UiDGluQW1Bc3NldEFtdCILaW5BbUFzc2V0SWQiDGluUHJBc3NldEFtdCILaW5QckFzc2V0SWQiCmlzRXZhbHVhdGUiBmVtaXRMcCIMYW1Bc3NldElkU3RyIgxwckFzc2V0SWRTdHIiC2lBbXRBc3NldElkIg1pUHJpY2VBc3NldElkIg5pbkFtQXNzZXRJZFN0ciIOaW5QckFzc2V0SWRTdHIiD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiA3JlcyILc2xpcHBhZ2VYMTgiFHNsaXBwYWdlVG9sZXJhbmNlWDE4IgpwclZpYUFtWDE4IgphbVZpYVByWDE4IgxleHBlY3RlZEFtdHMiEWV4cEFtdEFzc2V0QW10WDE4IhNleHBQcmljZUFzc2V0QW10WDE4IgljYWxjTHBBbXQiDmNhbGNBbUFzc2V0UG10Ig5jYWxjUHJBc3NldFBtdCIMc2xpcHBhZ2VDYWxjIgllbWl0THBBbXQiBmFtRGlmZiIGcHJEaWZmIgtjb21tb25TdGF0ZSIHY2FsY0tMcCINYW1vdW50QmFsYW5jZSIMcHJpY2VCYWxhbmNlIhBhbW91bnRCYWxhbmNlWDE4Ig9wcmljZUJhbGFuY2VYMTgiCnVwZGF0ZWRLTHAiDmNhbGNDdXJyZW50S0xwIhBhbW91bnRBc3NldERlbHRhIg9wcmljZUFzc2V0RGVsdGEiFGxwQXNzZXRFbWlzc2lvbkRlbHRhIhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iCmN1cnJlbnRLTHAiEnJlZnJlc2hLTHBJbnRlcm5hbCIXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEiFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEiB2FjdGlvbnMiEnZhbGlkYXRlVXBkYXRlZEtMcCIGb2xkS0xwIht2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQiBW9yZGVyIhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjgxNDcyODM1OSIDa0xwIg0kdDAyODc5OTI4ODk5Ig11bnVzZWRBY3Rpb25zIgZrTHBOZXciDGlzT3JkZXJWYWxpZCIEaW5mbyIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiB2VtaXRJbnYiDWVtaXRJbnZMZWdhY3kiFWxlZ2FjeUZhY3RvcnlDb250cmFjdCIHdGFrZUZlZSIJZmVlQW1vdW50Ig9jYWxjUHV0T25lVG9rZW4iEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIgZpc0V2YWwiEGFtb3VudEJhbGFuY2VSYXciD3ByaWNlQmFsYW5jZVJhdyIUcGF5bWVudEluQW1vdW50QXNzZXQiDSR0MDMyMDEyMzIzMDUiEGFtb3VudEJhbGFuY2VPbGQiD3ByaWNlQmFsYW5jZU9sZCINJHQwMzIzMDkzMjQ1OCIUYW1vdW50QXNzZXRBbW91bnRSYXciE3ByaWNlQXNzZXRBbW91bnRSYXciDSR0MDMyNTkwMzI2NTQiDXBheW1lbnRBbW91bnQiEGFtb3VudEJhbGFuY2VOZXciD3ByaWNlQmFsYW5jZU5ldyILcHJpY2VOZXdYMTgiCHByaWNlTmV3Ig5wYXltZW50QmFsYW5jZSIUcGF5bWVudEJhbGFuY2VCaWdJbnQiDHN1cHBseUJpZ0ludCILY2hlY2hTdXBwbHkiDWRlcG9zaXRCaWdJbnQiC2lzc3VlQW1vdW50IgtwcmljZU9sZFgxOCIIcHJpY2VPbGQiBGxvc3MiDSR0MDM0MzM1MzQ1MDIiB2JhbGFuY2UiD2lzc3VlQW1vdW50Qm90aCIPY2FsY0dldE9uZVRva2VuIgpvdXRBc3NldElkIgZjaGVja3MiEG91dEluQW1vdW50QXNzZXQiDWJhbGFuY2VCaWdJbnQiGG91dEluQW1vdW50QXNzZXREZWNpbWFscyIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiCm91dEJhbGFuY2UiEG91dEJhbGFuY2VCaWdJbnQiDnJlZGVlbWVkQmlnSW50IglhbW91bnRSYXciDSR0MDM2NTgwMzY2MzYiC3RvdGFsQW1vdW50Ig0kdDAzNjY0MDM2ODY2IgtvdXRBbUFtb3VudCILb3V0UHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IhhhbW91bnRCb3RoSW5QYXltZW50QXNzZXQiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0Iglpc01hbmFnZXIiAnBrIgttdXN0TWFuYWdlciICcGQiDWNsZWFuQW1vdW50SW4iCWlzUmV2ZXJzZSINZmVlUG9vbEFtb3VudCINJHQwMzg3NTIzOTA1NyIIYXNzZXRPdXQiB2Fzc2V0SW4iEnBvb2xBc3NldEluQmFsYW5jZSITcG9vbEFzc2V0T3V0QmFsYW5jZSIJYW1vdW50T3V0IgRvbGRLIgRuZXdLIgZjaGVja0siDGFtb3VudE91dE1pbiIJYWRkcmVzc1RvIgtzd2FwQ29udGFjdCIIY2hlY2tNaW4iDnJlYmFsYW5jZVN0YXRlIg13aXRoZHJhd1N0YXRlIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSILY2hlY2tDYWxsZXIiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIg9zaG91bGRBdXRvU3Rha2UiBGFtSWQiBHBySWQiDHNsaXBwYWdlQUludiIMc2xpcHBhZ2VQSW52IgpscFRyYW5zZmVyIgtzbHBTdGFrZUludiINJHQwNDQxMDM0NDU2NSIRcmVmcmVzaEtMcEFjdGlvbnMiEWlzVXBkYXRlZEtMcFZhbGlkIgNyZWIiC21heFNsaXBwYWdlIg0kdDA0NTE3NzQ1MjQyIgxtaW5PdXRBbW91bnQiCWF1dG9TdGFrZSIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiB3BheW1lbnQiDSR0MDQ2NDMwNDY1ODIiBWJvbnVzIhNlbWl0QW1vdW50RXN0aW1hdGVkIgplbWl0QW1vdW50IghzdGFrZUludiIHc2VuZEZlZSINJHQwNDcxNjg0NzM2NSINJHQwNDczNjg0NzQ3NiINJHQwNDc4MzE0Nzk4OCINb3V0QXNzZXRJZFN0ciINaXNHZXREaXNhYmxlZCINJHQwNDg4NzM0OTAyNiIPYW1vdW50RXN0aW1hdGVkIgdidXJuSW52Ig1hc3NldFRyYW5zZmVyIg0kdDA0OTU5NzQ5ODQ0IhBmZWVBbW91bnRGb3JDYWxjIg0kdDA0OTg0NzQ5OTU1Ig0kdDA1MDIzMzUwMzg5Ig11bnN0YWtlQW1vdW50Igp1bnN0YWtlSW52Ig0kdDA1MTI5NDUxNDQ1Ig0kdDA1MjAxMTUyMjU4Ig0kdDA1MjI2MTUyMzY5IglvdXRBbXRBbXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5Ig0kdDA1MzMzNjUzNDE4IhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0Ig0kdDA1NDM2NzU0NDQ4Ig1jaGVja1BheW1lbnRzIg9jaGVja1Bvb2xTdGF0dXMiDSR0MDU1NTc0NTU2NTUiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIMY2hlY2tBbW91bnRzIg0kdDA1Njk1MDU3MDMxIgthbXRBc3NldFN0ciINcHJpY2VBc3NldFN0ciIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINJHQwNTgyMTg1ODI4MiIQa0xwVXBkYXRlQWN0aW9ucyIKYW10QXNzZXRJZCIMcHJpY2VBc3NldElkIg1wb29sTFBCYWxhbmNlIhJhY2NBbXRBc3NldEJhbGFuY2UiFGFjY1ByaWNlQXNzZXRCYWxhbmNlIgpwcmljZXNMaXN0Ig9scEFtdEFzc2V0U2hhcmUiEWxwUHJpY2VBc3NldFNoYXJlIgpwb29sV2VpZ2h0IgxjdXJQcmljZUNhbGMiDGFtQmFsYW5jZVJhdyIMcHJCYWxhbmNlUmF3Ig9hbUJhbGFuY2VSYXdYMTgiD3ByQmFsYW5jZVJhd1gxOCIQcGF5bWVudExwQXNzZXRJZCIMcGF5bWVudExwQW10IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiDSR0MDY2OTQ0NjcwMTMiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaH4AAWEACAABYgCAwtcvAAFjCQC2AgEAgMLXLwABZAkAtgIBAICAkLu61q3wDQABZQkAtgIBAAAAAWYJALYCAQAAAAFnCQC2AgEAAQABaAkAtgIBAAIAAWkCBVdBVkVTAAFqAgJfXwABawABAAFsAAIAAW0AAwABbgAEAAFvAAEAAXAAAgABcQADAAFyAAQAAXMABQABdAAGAAF1AAcAAXYACAABdwAJAAF4AAoAAXkAAQABegACAAFBAAMAAUIAAQABQwAHAQFEAgFFAUYJALwCAwkAtgIBBQFFBQFkCQC2AgEFAUYBAUcCAUUBRgkAvAIDBQFFBQFkBQFGAQFIAgFJAUoJAKADAQkAvAIDBQFJCQC2AgEFAUoFAWQBAUsDAUkBSgFMCQCgAwEJAL0CBAUBSQkAtgIBBQFKBQFkBQFMAQFNAwFOAU8BUAkAawMFAU4FAU8FAVABAVEBAUkDCQBmAgAABQFJCQEBLQEFAUkFAUkBAVIBAUkDCQC/AgIFAWUFAUkJAL4CAQUBSQUBSQEBUwACECVzX19zd2FwQ29udHJhY3QBAVQAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFVAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVYAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVcAAhElcyVzX19wcmljZV9fbGFzdAEBWAIBWQFaCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBWQkAzAgCCQCkAwEFAVoFA25pbAUBagECYWECAmFiAmFjCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUCYWICAl9fBQJhYwECYWQCAmFiAmFjCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUCYWICAl9fBQJhYwECYWUAAg8lc19fYW1vdW50QXNzZXQBAmFmAAIOJXNfX3ByaWNlQXNzZXQAAmFnAgclc19fZmVlAAJhaAkAawMACgUBYgCQTgACYWkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWcFAmFoAAJhagkAuQkCCQDMCAICAiVzCQDMCAICA2tMcAUDbmlsBQFqAAJhawkAuQkCCQDMCAICAiVzCQDMCAICEmtMcFJlZnJlc2hlZEhlaWdodAUDbmlsBQFqAAJhbAkAuQkCCQDMCAICAiVzCQDMCAICD3JlZnJlc2hLTHBEZWxheQUDbmlsBQFqAAJhbQAeAAJhbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhbAUCYW0BAmFvAQJhcAkAuQkCCQDMCAICBCVzJXMJAMwIAgINc3Rha2VkQmFsYW5jZQkAzAgCBQJhcAUDbmlsBQFqAQJhcQECYXAJALkJAgkAzAgCAgQlcyVzCQDMCAICEXNoYXJlQXNzZXRCYWxhbmNlCQDMCAIFAmFwBQNuaWwFAWoBAmFyAQJhcAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYW8BBQJhcAAAAQJhcwECYXAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmFxAQUCYXAAAAECYXQAAhElc19fZmFjdG9yeUNvbmZpZwECYXUAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmF2AQJhdwkArAICCQCsAgICCCVzJXMlc19fBQJhdwIgX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MkxwQXNzZXQBAmF4AgJheQJhegkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYXkCAl9fBQJhegIIX19jb25maWcBAmFBAQJhQgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhQgECYUMAAgwlc19fc2h1dGRvd24BAmFEAQJhRQkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FAmFFAQJhRgACFyVzX19hbGxvd2VkTHBTY3JpcHRIYXNoAAJhRwIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmFIBAJhSQJhSgJhSwJhTAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiRvcmRlciB2YWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAKUDAQUCYUkCAiAoBQJhSgIBKQINIHNlbmRlclZhbGlkPQkApQMBBQJhSwIOIG1hdGNoZXJWYWxpZD0JAKUDAQUCYUwBAmFNAgJhTgJhTwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFOBQJhTwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhTgkAzAgCAgEuCQDMCAIFAmFPCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFQAgJhTgJhTwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFOBQJhTwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhTgkAzAgCAgEuCQDMCAIFAmFPCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFRAQJhUgkAAgEJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhUgUDbmlsAgEgAQJhUwECYVIJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhUgUDbmlsAgEgAAJhVAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFNAgUEdGhpcwkBAVQAAAJhVQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFNAgUCYVQFAmFHAAJhVgoAAmFXCQD8BwQFAmFUAhBnZXRJbkZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVcCA0ludAUCYVcJAAIBCQCsAgIJAAMBBQJhVwIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJhWAoAAmFXCQD8BwQFAmFUAhFnZXRPdXRGZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFXAgNJbnQFAmFXCQACAQkArAICCQADAQUCYVcCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAECYVkACQELdmFsdWVPckVsc2UCCQCbCAIFAmFUCQECYUMABwECYVoACQDZBAEJAQJhTQIFAmFUCQECYXUAAQJiYQAEAmJiCQECYU0CBQR0aGlzCQECYWUABAJiYwkBAmFNAgUEdGhpcwkBAmFmAAQCYXoJAQJhUAIFAmFUCQECYUEBBQJiYwQCYXkJAQJhUAIFAmFUCQECYUEBBQJiYgkAtQkCCQECYU0CBQJhVAkBAmF4AgkApAMBBQJheQkApAMBBQJhegUBagECYmQBAmJlAwkAAAIFAmJlBQFpBQR1bml0CQDZBAEFAmJlAQJiZgECYmUDCQAAAgUCYmUFBHVuaXQFAWkJANgEAQkBBXZhbHVlAQUCYmUBAmJnAQJiaAkAmQoHCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmJoBQFvCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmgFAXAJANkEAQkAkQMCBQJiaAUBcQkBAmJkAQkAkQMCBQJiaAUBcgkBAmJkAQkAkQMCBQJiaAUBcwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJoBQF0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmgFAXUAAmJpCQECYmcBCQECYmEAAAJiagUCYmkAAmJrCAUCYmoCXzEAAmJsCAUCYmoCXzIAAmJtCAUCYmoCXzMAAmJuCAUCYmoCXzQAAmJvCAUCYmoCXzUAAmJwCAUCYmoCXzYAAmJxCAUCYmoCXzcBAmJyAAkAtQkCCQECYU0CBQJhVAkBAmF0AAUBagACYnMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJicgAFAUICGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MAAmJ0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYnIABQFDAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAQJidQoCYnYCYncCYngCYnkCYnoCYkECYkICYkMCYkQCYkUJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJ2CQDMCAIJAKQDAQUCYncJAMwIAgkApAMBBQJieAkAzAgCCQCkAwEFAmJ5CQDMCAIJAKQDAQUCYnoJAMwIAgkApAMBBQJiQQkAzAgCCQCkAwEFAmJCCQDMCAIJAKQDAQUCYkMJAMwIAgkApAMBBQJiRAkAzAgCCQCkAwEFAmJFBQNuaWwFAWoBAmJGBgJiRwJiSAJiSQJieQJiQgJiQwkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJHCQDMCAIJAKQDAQUCYkgJAMwIAgkApAMBBQJiSQkAzAgCCQCkAwEFAmJ5CQDMCAIJAKQDAQUCYkIJAMwIAgkApAMBBQJiQwUDbmlsBQFqAQJiSgECYXAEAmJLAwkAAAIFAmFwAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJhcAQCYkwJAGUCCQBkAgUCYksJAQJhcgEFAmFwCQECYXMBBQJhcAkAlgMBCQDMCAIAAAkAzAgCBQJiTAUDbmlsAQJiTQICYk4CYk8JALwCAwUCYk4FAWQFAmJPAQJiUAMCYk4CYk8BTAkAvQIEBQJiTgUBZAUCYk8FAUwBAmJRAQJiUgQCYlMJAPwHBAUCYlICB2dldFJhdGUFA25pbAUDbmlsAwkAAAIFAmJTBQJiUwQCYlQFAmJTAwkAAQIFAmJUAgNJbnQEAmJVBQJiVAUCYlUJAQJhUQECIHByb3h5LmdldFJhdGUoKSB1bmV4cGVjdGVkIHZhbHVlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJiVgQCYXACYlcCYlgCYlIEAmJZCQECYXIBBQJhcAMJAAACBQJiWQUCYlkEAmJaCQECYXMBBQJiWAMJAAACBQJiWgUCYloEAmNhCQECYmQBBQJhcAMJAGYCBQJiVwAABAJjYgkA/AcEBQJiUgIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjYQUCYlcFA25pbAMJAAACBQJjYgUCY2IEAmJUBQJjYgMJAAECBQJiVAIDSW50BAJjYwUCYlQEAmNkCQBkAgUCYlkFAmJXBAJjZQkAZAIFAmJaBQJjYwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFvAQUCYXAFAmNkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXEBBQJiWAUCY2UFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNmBgJhcAJiVwJiWAJiUgJjZwJjaAQCYlkJAQJhcgEFAmFwAwkAAAIFAmJZBQJiWQQCYloJAQJhcwEFAmJYAwkAAAIFAmJaBQJiWgQCY2kJAQJiUQEFAmJSAwkAAAIFAmNpBQJjaQQCY2oJAGsDBQJjZwUCYlkFAmJaBAJjawkBAmJkAQUCYlgEAmNsCQBrAwUCY2cFAmJXBQJjagQCY20JAGsDBQJjZwUCYlcFAmNpBAJjbgkAlgMBCQDMCAIAAAkAzAgCCQBlAgUCY2wFAmNtBQNuaWwDCQBmAgUCY20AAAQCY28JAPwHBAUCYlICCHdpdGhkcmF3BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNrBQJjbQUDbmlsAwkAAAIFAmNvBQJjbwQCYlQFAmNvAwkAAQIFAmJUAgNJbnQEAmNwBQJiVAQCY2QJAGUCBQJiWQUCY3AEAmNlCQBlAgkAZQIFAmJaBQJjbQUCY24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhbwEFAmFwBQJjZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFxAQUCYlgFAmNlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmNoBQJjbgkBAmJkAQUCYlgFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNxAQJhcAQCYlQJAPwHBAUCYVQCGmdldFBvb2xMZWFzZUNvbmZpZ1JFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwkAzAgCBQJhcAUDbmlsBQNuaWwDCQABAgUCYlQCMChCb29sZWFuLCBJbnQsIEludCwgU3RyaW5nLCBTdHJpbmcsIEludCwgU3RyaW5nKQQCY3IFAmJUBQJjcgkBAmFRAQkArAICCQCsAgICAVsFAmFwAh1dIGdldExlYXNlUHJveHlDb25maWcoKSBlcnJvcgECY3MHAmN0AmFwAmJYAmN1AmJSAmNnAmNoBAJiWQkBAmFyAQUCYXADCQAAAgUCYlkFAmJZBAJiWgkBAmFzAQUCYlgDCQAAAgUCYloFAmJaBAJjdgQCYlQJAQJiZAEFAmFwAwkAAQIFAmJUAgpCeXRlVmVjdG9yBAJjdwUCYlQJAPAHAgUEdGhpcwUCY3cDCQABAgUCYlQCBFVuaXQEAmN4BQJiVAgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAAIBAgtNYXRjaCBlcnJvcgMJAAACBQJjdgUCY3YEAmN5CQCWAwEJAMwIAgAACQDMCAIJAGUCCQBkAgUCY3YFAmJZBQJjdQUDbmlsBAJjegkAawMFAmN0BQJjeQBkBAJjQQkAZQIFAmJZBQJjegMJAAACBQJjQQAABQNuaWwDCQBmAgAABQJjQQQCY0IJAQEtAQUCY0EJAQJiVgQFAmFwBQJjQgUCYlgFAmJSBAJjQwUCY0EJAQJjZgYFAmFwBQJjQwUCYlgFAmJSBQJjZwUCY2gJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNEAQJhcAQCY0UJAQJjcQEFAmFwBAJjRggFAmNFAl8xBAJjRwgFAmNFAl8yBAJjdQgFAmNFAl8zBAJjSAgFAmNFAl80BAJjSQgFAmNFAl81BAJjZwgFAmNFAl82BAJjSggFAmNFAl83AwUCY0YJAQJjcwcFAmNHBQJhcAUCY0kFAmN1CQERQGV4dHJOYXRpdmUoMTA2MikBBQJjSAUCY2cJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmNKBQNuaWwBAmNLAgJhcAJjTAQCY00JAQJjcQEFAmFwBAJjRggFAmNNAl8xBAJjRwgFAmNNAl8yBAJjdQgFAmNNAl8zBAJjSAgFAmNNAl80BAJjSQgFAmNNAl81BAJjZwgFAmNNAl82BAJjSggFAmNNAl83AwUCY0YEAmNOCQCWAwEJAMwIAgAACQDMCAIJAGUCCQBlAgkBAmJKAQUCYXAFAmNMBQJjdQUDbmlsAwkAAAIFAmNOBQJjTgQCY2QJAGsDBQJjRwUCY04AZAMJAAACBQJjZAUCY2QEAmNPCQCWAwEJAMwIAgAACQDMCAIJAGUCCQECYXIBBQJhcAUCY2QFA25pbAMJAAACBQJjTwUCY08JAQJjZgYFAmFwBQJjTwUCY0kJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmNIBQJjZwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCY0oJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAECY1AEAmNRAmNSAmNTAmNUBAJjVQkBAUQCBQJjUwUCY1EEAmNWCQEBRAIFAmNUBQJjUgkBAmJNAgUCY1YFAmNVAQJjVwMCY1MCY1QCY1gEAmNZCQECYmEABAJjWgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNZBQF0BAJkYQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNZBQF1BAJkYgkBAmNQBAUCY1oFAmRhBQJjUwUCY1QEAmJPCQEBRAIFAmNTBQJjWgQCYk4JAQFEAgUCY1QFAmRhBAJkYwkBAUQCBQJjWAUBYgQCZGQJAQJiTQIFAmJPBQJkYwQCZGUJAQJiTQIFAmJOBQJkYwkAzAgCBQJkYgkAzAgCBQJkZAkAzAgCBQJkZQUDbmlsAQJkZgMCY1MCY1QCY1gEAmRnCQECY1cDBQJjUwUCY1QFAmNYCQDMCAIJAQFIAgkAkQMCBQJkZwAABQFiCQDMCAIJAQFIAgkAkQMCBQJkZwABBQFiCQDMCAIJAQFIAgkAkQMCBQJkZwACBQFiBQNuaWwBAmRoBAJkaQJkagJkawJhYgQCY1kJAQJiYQAEAmRsCQCRAwIFAmNZBQFxBAJkbQkAkQMCBQJjWQUBcgQCZG4JAJEDAgUCY1kFAXMEAmNRCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY1kFAXQEAmNSCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY1kFAXUEAmRvCQCRAwIFAmNZBQFwBAJkcAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmRsCQCsAgIJAKwCAgIGQXNzZXQgBQJkbAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJkbAUCZGoJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmRxCQECYkoBBQJkbQQCZHIJAQFEAgUCZHEFAmNRBAJkcwkBAmJKAQUCZG4EAmR0CQEBRAIFAmRzBQJjUgQCZHUJAQJiTQIFAmR0BQJkcgQCZHYJAQFIAgUCZHUFAWIEAmR3CQEBRAIFAmRrBQFiBAJkeAkBAUQCBQJkcAUBYgQCZHkJALwCAwUCZHIFAmR3BQJkeAQCZHoJALwCAwUCZHQFAmR3BQJkeAQCZEEJAQFLAwUCZHkFAmNRBQVGTE9PUgQCZEIJAQFLAwUCZHoFAmNSBQVGTE9PUgQCZEMJAQJjSwIFAmRtBQJkQQQCZEQJAQJjSwIFAmRuBQJkQgQCZEUDCQAAAgUCZGkCAAUDbmlsCQDOCAIJAM4IAgUCZEMFAmRECQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFiBQJkQQMJAAACBQJkbQIFV0FWRVMFBHVuaXQJANkEAQUCZG0JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmRCAwkAAAIFAmRuAgVXQVZFUwUEdW5pdAkA2QQBBQJkbgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQCCQClCAEFAmFiBQJkaQkBAmJGBgUCZEEFAmRCBQJkawUCZHYFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZHYJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZHYFA25pbAkAnAoKBQJkQQUCZEIFAmRtBQJkbgUCZHEFAmRzBQJkcAUCZHUFAmRvBQJkRQECZEYJAmRpAmRHAmRIAmRJAmRKAmRLAmFiAmRMAmRNBAJjWQkBAmJhAAQCZGwJANkEAQkAkQMCBQJjWQUBcQQCZE4JAJEDAgUCY1kFAXIEAmRPCQCRAwIFAmNZBQFzBAJkUAkAkQMCBQJjWQUBdgQCZFEJAJEDAgUCY1kFAXcEAmNaCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY1kFAXQEAmRhCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY1kFAXUEAmRvCQCRAwIFAmNZBQFwBAJkcAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkbAkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJkbAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmRSCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmRJCQDZBAECBVdBVkVTBAJkUwkA2AQBCQELdmFsdWVPckVsc2UCBQJkSwkA2QQBAgVXQVZFUwMDCQECIT0CBQJkTgUCZFIGCQECIT0CBQJkTwUCZFMJAAIBAiJJbnZhbGlkIGFtdCBvciBwcmljZSBhc3NldCBwYXNzZWQuBAJkcQMFAmRMCQECYkoBBQJkTgkAZQIJAQJiSgEFAmROBQJkSAQCZHMDBQJkTAkBAmJKAQUCZE8JAGUCCQECYkoBBQJkTwUCZEoEAmRUCQEBRAIFAmRIBQJjWgQCZFUJAQFEAgUCZEoFAmRhBAJkVgkBAmJNAgUCZFUFAmRUBAJkcgkBAUQCBQJkcQUCY1oEAmR0CQEBRAIFAmRzBQJkYQQCZFcDCQAAAgUCZHAAAAQCZHUFAWUEAmRYBQFlBAJkYwkAdgYJALkCAgUCZFQFAmRVAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBSAIFAmRjBQFiCQEBSAIFAmRUBQJjWgkBAUgCBQJkVQUCZGEJAQJiTQIJALcCAgUCZHQFAmRVCQC3AgIFAmRyBQJkVAUCZFgEAmR1CQECYk0CBQJkdAUCZHIEAmRYCQC8AgMJAQFSAQkAuAICBQJkdQUCZFYFAWQFAmR1BAJkWQkBAUQCBQJkRwUBYgMDCQECIT0CBQJkdQUBZQkAvwICBQJkWAUCZFkHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmRYAh4gZXhjZWVkZWQgdGhlIHBhc3NlZCBsaW1pdCBvZiAJAKYDAQUCZFkEAmR4CQEBRAIFAmRwBQFiBAJkWgkAvQIEBQJkVAkBAmJQAwUCZHQFAmRyBQdDRUlMSU5HBQFkBQdDRUlMSU5HBAJlYQkAvQIEBQJkVQUBZAkBAmJQAwUCZHQFAmRyBQVGTE9PUgUHQ0VJTElORwQCZWIDCQC/AgIFAmRaBQJkVQkAlAoCBQJlYQUCZFUJAJQKAgUCZFQFAmRaBAJlYwgFAmViAl8xBAJlZAgFAmViAl8yBAJkYwkAvQIEBQJkeAUCZWQFAmR0BQVGTE9PUgkAlwoFCQEBSwMFAmRjBQFiBQVGTE9PUgkBAUsDBQJlYwUCY1oFB0NFSUxJTkcJAQFLAwUCZWQFAmRhBQdDRUlMSU5HBQJkdQUCZFgEAmVlCAUCZFcCXzEEAmVmCAUCZFcCXzIEAmVnCAUCZFcCXzMEAmR2CQEBSAIIBQJkVwJfNAUBYgQCZWgJAQFIAggFAmRXAl81BQFiAwkAZwIAAAUCZWUJAAIBAjZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4EAmVpAwkBASEBBQJkTQAABQJlZQQCZWoJAGUCBQJkSAUCZWYEAmVrCQBlAgUCZEoFAmVnBAJlbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJkdgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkdgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECBQJhYgUCZGkJAQJidQoFAmVmBQJlZwUCZWkFAmR2BQJkRwUCZWgFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVqBQJlawUDbmlsCQCfCg0FAmVlBQJlaQUCZHYFAmRxBQJkcwUCZHAFAmRsBQJkbwUCZWwFAmVqBQJlawUCZEkFAmRLAQJlbQMCZW4CZW8CZHAEAmVwCQEBRwIFAmVuCQC2AgEFAmJwBAJlcQkBAUcCBQJlbwkAtgIBBQJicQQCZXIJALwCAwkAdgYJALkCAgUCZXAFAmVxAAAJALYCAQAFAAEAEgUERE9XTgUBZwUCZHADCQAAAgUCZHAFAWYFAWYFAmVyAQJlcwMCZXQCZXUCZXYEAmV3CQC4AgIJALYCAQkBAmJKAQkBAmJmAQUCYm4FAmV0BAJleAkAuAICCQC2AgEJAQJiSgEJAQJiZgEFAmJvBQJldQQCZXkJALgCAgkAtgIBCAkBBXZhbHVlAQkA7AcBBQJibQhxdWFudGl0eQUCZXYEAmV6CQECZW0DBQJldwUCZXgFAmV5BQJlegECZUEDAmVCAmVDAmV2BAJldwkAZAIJAQJiSgEJAQJiZgEFAmJuBQJlQgQCZXgJAGQCCQECYkoBCQECYmYBBQJibwUCZUMEAmV5CQBkAggJAQV2YWx1ZQEJAOwHAQUCYm0IcXVhbnRpdHkFAmV2BAJlcgkBAmVtAwkAtgIBBQJldwkAtgIBBQJleAkAtgIBBQJleQQCZUQJAMwIAgkBDEludGVnZXJFbnRyeQIFAmFrBQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYWoJAKYDAQUCZXIFA25pbAkAlAoCBQJlRAUCZXIBAmVFAgJlRgJlcgMJAMACAgUCZXIFAmVGBgkBAmFRAQkAuQkCCQDMCAICInVwZGF0ZWQgS0xwIGxvd2VyIHRoYW4gY3VycmVudCBLTHAJAMwIAgkApgMBBQJlRgkAzAgCCQCmAwEFAmVyBQNuaWwCASABAmVHAQJlSAQCZXcJAQJiSgEJAQJiZgEFAmJuBAJleAkBAmJKAQkBAmJmAQUCYm8EAmVJCAUCZUgGYW1vdW50BAJlSgkAbgQIBQJlSAZhbW91bnQIBQJlSAVwcmljZQUBYgUFRkxPT1IEAmVLAwkAAAIIBQJlSAlvcmRlclR5cGUFA0J1eQkAlAoCBQJlSQkBAS0BBQJlSgkAlAoCCQEBLQEFAmVJBQJlSgQCZUIIBQJlSwJfMQQCZUMIBQJlSwJfMgMDAwkBAmFZAAYJAAACBQJibAUBbQYJAAACBQJibAUBbgkAAgECHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQDAwkBAiE9AggIBQJlSAlhc3NldFBhaXILYW1vdW50QXNzZXQFAmJuBgkBAiE9AggIBQJlSAlhc3NldFBhaXIKcHJpY2VBc3NldAUCYm8JAAIBAhNXcm9uZyBvcmRlciBhc3NldHMuBAJlTAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYWoCATAJAQJhUwECC2ludmFsaWQga0xwBAJlTQkBAmVBAwUCZUIFAmVDAAAEAmVOCAUCZU0CXzEEAmVPCAUCZU0CXzIEAmVQCQDAAgIFAmVPBQJlTAQCZVEJALkJAgkAzAgCAgRrTHA9CQDMCAIJAKYDAQUCZUwJAMwIAgIIIGtMcE5ldz0JAMwIAgkApgMBBQJlTwkAzAgCAhQgYW1vdW50QXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmV3CQDMCAICEyBwcmljZUFzc2V0QmFsYW5jZT0JAMwIAgkApAMBBQJleAkAzAgCAhkgYW1vdW50QXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZUIJAMwIAgIYIHByaWNlQXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZUMJAMwIAgIIIGhlaWdodD0JAMwIAgkApAMBBQZoZWlnaHQFA25pbAIACQCUCgIFAmVQBQJlUQECZVIBAmVTAwkBAiE9AgkAkAMBCAUCZVMIcGF5bWVudHMAAQkAAgECHWV4YWN0bHkgMSBwYXltZW50IGlzIGV4cGVjdGVkBAJlVAkBBXZhbHVlAQkAkQMCCAUCZVMIcGF5bWVudHMAAAQCZGoJAQV2YWx1ZQEIBQJlVAdhc3NldElkBAJlVQgFAmVUBmFtb3VudAQCZFcJAQJkaAQJANgEAQgFAmVTDXRyYW5zYWN0aW9uSWQJANgEAQUCZGoFAmVVCAUCZVMGY2FsbGVyBAJkQQgFAmRXAl8xBAJkQggFAmRXAl8yBAJkbwkBDXBhcnNlSW50VmFsdWUBCAUCZFcCXzkEAmRFCAUCZFcDXzEwAwMJAQJhWQAGCQAAAgUCZG8FAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmRvCQCXCgUFAmRBBQJkQgUCZVUFAmRqBQJkRQECZVYDAmVTAmRHAmRNAwkBAiE9AgkAkAMBCAUCZVMIcGF5bWVudHMAAgkAAgECH2V4YWN0bHkgMiBwYXltZW50cyBhcmUgZXhwZWN0ZWQEAmVXCQEFdmFsdWUBCQCRAwIIBQJlUwhwYXltZW50cwAABAJlWAkBBXZhbHVlAQkAkQMCCAUCZVMIcGF5bWVudHMAAQQCZVkJAQJkRgkJANgEAQgFAmVTDXRyYW5zYWN0aW9uSWQFAmRHCAUCZVcGYW1vdW50CAUCZVcHYXNzZXRJZAgFAmVYBmFtb3VudAgFAmVYB2Fzc2V0SWQJAKUIAQgFAmVTBmNhbGxlcgcFAmRNBAJkbwkBDXBhcnNlSW50VmFsdWUBCAUCZVkCXzgDAwMJAQJhWQAGCQAAAgUCZG8FAWwGCQAAAgUCZG8FAW4JAAIBCQCsAgICLFB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmRvBQJlWQECZVoBAmJXBAJmYQkA/AcEBQJhVAIEZW1pdAkAzAgCBQJiVwUDbmlsBQNuaWwDCQAAAgUCZmEFAmZhBAJmYgQCYlQFAmZhAwkAAQIFAmJUAgdBZGRyZXNzBAJmYwUCYlQJAPwHBAUCZmMCBGVtaXQJAMwIAgUCYlcFA25pbAUDbmlsBQR1bml0AwkAAAIFAmZiBQJmYgUCYlcJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZkAgJiVwJhaQQCZmUDCQAAAgUCYWkAAAAACQBrAwUCYlcFAmFpBQFiCQCUCgIJAGUCBQJiVwUCZmUFAmZlAQJmZgQCZmcCZmgCYWICYWMEAmZpCQAAAgUCYWMFBHVuaXQEAmZqCQECYkoBCQECYmYBBQJibgQCZmsJAQJiSgEJAQJiZgEFAmJvBAJmbAMJAAACBQJmaAUCYm4GAwkAAAIFAmZoBQJibwcJAQJhUQECDWludmFsaWQgYXNzZXQEAmZtAwUCZmkJAJQKAgUCZmoFAmZrAwUCZmwJAJQKAgkAZQIFAmZqBQJmZwUCZmsJAJQKAgUCZmoJAGUCBQJmawUCZmcEAmZuCAUCZm0CXzEEAmZvCAUCZm0CXzIEAmZwAwUCZmwJAJQKAgUCZmcAAAkAlAoCAAAFAmZnBAJmcQgFAmZwAl8xBAJmcggFAmZwAl8yBAJlSQgJAQJmZAIFAmZxBQJhVgJfMQQCZUoICQECZmQCBQJmcgUCYVYCXzEEAmZzCQECZmQCBQJmZwUCYVYEAmZ0CAUCZnMCXzEEAmZlCAUCZnMCXzIEAmZ1CQBkAgUCZm4FAmVJBAJmdgkAZAIFAmZvBQJlSgQCZncJAQJiTQIJAQFEAgUCZnYFAmJxCQEBRAIFAmZ1BQJicAQCZngJAQFIAgUCZncFAWIEAmZ5AwUCZmwFAmZuBQJmbwQCZnoJALYCAQUCZnkEAmZBCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYm0JAKwCAgkArAICAgZhc3NldCAJANgEAQUCYm0CDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJmQgMJAL8CAgUCZkEFAWYGCQECYVEBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmZCBQJmQgQCZkMJALYCAQUCZnQEAmZECQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmZBCQC4AgIJAQpzcXJ0QmlnSW50BAkAtwICBQFkCQC6AgIJALkCAgUCZkMFAWQFAmZ6ABIAEgUERE9XTgUBZAUBZAUDbmlsBAJlbAMFAmZpBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZngJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZngJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgkApQgBCQEFdmFsdWUBBQJhYgkA2AQBCQEFdmFsdWUBBQJhYwkBAmJ1CgUCZnEFAmZyBQJmRAUCZngAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJmRQkBAmJNAgkBAUQCBQJmbwUCYnEJAQFEAgUCZm4FAmJwBAJmRgkBAUgCBQJmRQUBYgQCZkcEAmZIAwUCZmwJAJQKAgUCZnEFAmZuCQCUCgIFAmZyBQJmbwQCYlcIBQJmSAJfMQQCZkkIBQJmSAJfMgQCZkoJAKADAQkAvAIDBQJmQQkAtgIBCQBpAgUCYlcAAgkAtgIBBQJmSQkAawMJAGUCBQJmRAUCZkoFAWIFAmZKCQCXCgUFAmZEBQJlbAUCZmUFAmZHBQJmbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZksFAmZMAmZ0AmZoAmFiAmFjBAJmaQkAAAIFAmFjBQR1bml0BAJjWQkBAmJhAAQCY1oJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjWQUBdAQCZGEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjWQUBdQQCZk0JAMwIAgMJAAACBQJmaAUCYm0GCQECYVEBAhBpbnZhbGlkIGxwIGFzc2V0BQNuaWwDCQAAAgUCZk0FAmZNBAJmTgMJAAACBQJmTAUCYm4GAwkAAAIFAmZMBQJibwcJAQJhUQECDWludmFsaWQgYXNzZXQEAmZPAwUCZk4JALYCAQkBAmJKAQkBAmJmAQUCYm4JALYCAQkBAmJKAQkBAmJmAQUCYm8EAmZQAwUCZk4FAmNaBQJkYQQCZlEJAQJiSgEJAQJiZgEFAmJuBAJmUgkBAmJKAQkBAmJmAQUCYm8EAmZTAwUCZk4FAmZRBQJmUgQCZlQJALYCAQUCZlMEAmZBCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYm0JAKwCAgkArAICAgZhc3NldCAJANgEAQUCYm0CDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJmVQkAtgIBBQJmdAQCZlYJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZk8JALgCAgUBZAkAdgYJALgCAgUBZAkAugICCQC5AgIFAmZVBQFkBQJmQQASBQFoAAAAEgUERE9XTgUBZAUDbmlsBAJmVwkBAmZkAgUCZlYFAmFYBAJmWAgFAmZXAl8xBAJmZQgFAmZXAl8yBAJmWQMFAmZOCQCWCgQFAmZYAAAJAGUCBQJmUQUCZlYFAmZSCQCWCgQAAAUCZlgFAmZRCQBlAgUCZlIFAmZWBAJmWggFAmZZAl8xBAJnYQgFAmZZAl8yBAJnYggFAmZZAl8zBAJnYwgFAmZZAl80BAJmdwkBAmJNAgkBAUQCBQJnYwUCYnEJAQFEAgUCZ2IFAmJwBAJmeAkBAUgCBQJmdwUBYgQCZWwDBQJmaQUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIJAKUIAQkBBXZhbHVlAQUCYWIJANgEAQkBBXZhbHVlAQUCYWMJAQJiRgYFAmZaBQJnYQUCZnQFAmZ4BQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmZ4CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmZ4BQNuaWwEAmZFCQECYk0CCQEBRAIFAmZSBQJicQkBAUQCBQJmUQUCYnAEAmZGCQEBSAIFAmZFBQFiBAJmRwQCZ2QJAGgCCQCgAwEJALwCAwUCZk8FAmZVBQJmQQACCQBrAwkAZQIFAmZYBQJnZAUBYgUCZ2QJAJcKBQUCZlgFAmVsBQJmZQUCZkcFAmZOCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJnZQAEAmJUCQCiCAEJAQFVAAMJAAECBQJiVAIGU3RyaW5nBAJnZgUCYlQJANkEAQUCZ2YDCQABAgUCYlQCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZ2cABAJiVAkAoggBCQEBVgADCQABAgUCYlQCBlN0cmluZwQCZ2YFAmJUCQDZBAEFAmdmAwkAAQIFAmJUAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmdoAQJlUwQCYlQJAQJnZQADCQABAgUCYlQCCkJ5dGVWZWN0b3IEAmdpBQJiVAkAAAIIBQJlUw9jYWxsZXJQdWJsaWNLZXkFAmdpAwkAAQIFAmJUAgRVbml0CQAAAggFAmVTBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJnagECZVMEAmdrCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmJUCQECZ2UAAwkAAQIFAmJUAgpCeXRlVmVjdG9yBAJnaQUCYlQDCQAAAggFAmVTD2NhbGxlclB1YmxpY0tleQUCZ2kGBQJnawMJAAECBQJiVAIEVW5pdAMJAAACCAUCZVMGY2FsbGVyBQR0aGlzBgUCZ2sJAAIBAgtNYXRjaCBlcnJvch4CZVMBCXJlYmFsYW5jZQAJAM4IAgkBAmNEAQkBAmFNAgUEdGhpcwkBAmFlAAkBAmNEAQkBAmFNAgUEdGhpcwkBAmFmAAJlUwEhY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcFJFQURPTkxZAwJnbAJnbQJnbgQCZ28DCQAAAgUCZ20HBAJncAkBAmFNAgUEdGhpcwkBAmFmAAQCZ3EJAQJhTQIFBHRoaXMJAQJhZQAJAJQKAgUCZ3AFAmdxBAJncAkBAmFNAgUEdGhpcwkBAmFlAAQCZ3EJAQJhTQIFBHRoaXMJAQJhZgAJAJQKAgUCZ3AFAmdxBAJncAgFAmdvAl8xBAJncQgFAmdvAl8yBAJncgkBAmJKAQUCZ3EEAmdzCQECYkoBBQJncAQCZ3QJAGsDBQJncwUCZ2wJAGQCBQJncgUCZ2wEAmd1CQC5AgIJALYCAQUCZ3IJALYCAQUCZ3MEAmd2CQC5AgIJALcCAgkAtwICCQC2AgEJAQJiSgEFAmdxCQC2AgEFAmdsCQC2AgEFAmduCQC4AgIJALYCAQkBAmJKAQUCZ3AJALYCAQUCZ3QEAmd3AwkAwAICBQJndgUCZ3UGCQACAQIUbmV3IEsgaXMgZmV3ZXIgZXJyb3IDCQAAAgUCZ3cFAmd3CQCUCgIFA25pbAUCZ3QJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVMBJmNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBBbmRTZW5kVG9rZW5zBQJnbAJnbQJneAJneQJnbgQCZ3oKAAJhVwkA/AcEBQJhVAIXZ2V0U3dhcENvbnRyYWN0UkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAmFXAgZTdHJpbmcFAmFXCQACAQkArAICCQADAQUCYVcCGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQCZk0JAMwIAgMJAGcCCAkBBXZhbHVlAQkAkQMCCAUCZVMIcGF5bWVudHMAAAZhbW91bnQFAmdsBgkBAmFRAQIMV3JvbmcgYW1vdW50CQDMCAIDCQAAAggFAmVTBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ3oGCQECYVEBAhFQZXJtaXNzaW9uIGRlbmllZAUDbmlsAwkAAAIFAmZNBQJmTQQCZVQJAQV2YWx1ZQEJAJEDAggFAmVTCHBheW1lbnRzAAAEAmdxCQECYmYBCAUCZVQHYXNzZXRJZAQCZ3ADCQAAAgUCZ20HCQECYU0CBQR0aGlzCQECYWYACQECYU0CBQR0aGlzCQECYWUABAJncgkAZQIJAQJiSgEFAmdxCAkBBXZhbHVlAQkAkQMCCAUCZVMIcGF5bWVudHMAAAZhbW91bnQEAmdzCQECYkoBBQJncAQCZ3QJAGsDBQJncwUCZ2wJAGQCBQJncgUCZ2wEAmd1CQC5AgIJALYCAQUCZ3IJALYCAQUCZ3MEAmd2CQC5AgIJALcCAgkAtgIBCQECYkoBBQJncQkAtgIBBQJnbgkAuAICCQC2AgEJAQJiSgEFAmdwCQC2AgEFAmd0BAJndwMJAMACAgUCZ3YFAmd1BgkAAgECFG5ldyBLIGlzIGZld2VyIGVycm9yAwkAAAIFAmd3BQJndwQCZ0EDCQBnAgUCZ3QFAmd4BgkAAgECLEV4Y2hhbmdlIHJlc3VsdCBpcyBmZXdlciBjb2lucyB0aGFuIGV4cGVjdGVkAwkAAAIFAmdBBQJnQQQCZ0IJAQJjRAEFAmdxAwkAAAIFAmdCBQJnQgQCZ0MJAQJjSwIFAmdwBQJndAMJAAACBQJnQwUCZ0MJAJQKAgkAzggCCQDOCAIFAmdDBQJnQgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQJneQUCZ3QJAQJiZAEFAmdwBQNuaWwFAmd0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVTAQpzZXRNYW5hZ2VyAQJnRAQCZ0UJAQJnagEFAmVTAwkAAAIFAmdFBQJnRQQCZ0YJANkEAQUCZ0QDCQAAAgUCZ0YFAmdGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFWAAUCZ0QFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwEOY29uZmlybU1hbmFnZXIABAJnRwkBAmdnAAQCZ0gDCQEJaXNEZWZpbmVkAQUCZ0cGCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmdIBQJnSAQCZ0kDCQAAAggFAmVTD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCZ0cGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmdJBQJnSQkAzAgCCQELU3RyaW5nRW50cnkCCQEBVQAJANgEAQkBBXZhbHVlAQUCZ0cJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVYABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVMBA3B1dAICZEcCZ0oDCQBmAgAABQJkRwkAAgECIEludmFsaWQgc2xpcHBhZ2VUb2xlcmFuY2UgcGFzc2VkBAJlWQkBAmVWAwUCZVMFAmRHBgQCZWkIBQJlWQJfMgQCZGwIBQJlWQJfNwQCZEUIBQJlWQJfOQQCZWoIBQJlWQNfMTAEAmVrCAUCZVkDXzExBAJnSwgFAmVZA18xMgQCZ0wIBQJlWQNfMTMEAmVXCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJlUwhwYXltZW50cwAABmFtb3VudAQCZVgJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmVTCHBheW1lbnRzAAEGYW1vdW50BAJlegkBAmVzAwUCZVcFAmVYCQC2AgEAAAMJAAACBQJlegUCZXoEAmZhCQD8BwQFAmFUAgRlbWl0CQDMCAIFAmVpBQNuaWwFA25pbAMJAAACBQJmYQUCZmEEAmZiBAJiVAUCZmEDCQABAgUCYlQCB0FkZHJlc3MEAmZjBQJiVAkA/AcEBQJmYwIEZW1pdAkAzAgCBQJlaQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZmIFAmZiBAJnTQMJAGYCBQJlagAACQD8BwQFAmJ0AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ0sFAmVqBQNuaWwFA25pbAMJAAACBQJnTQUCZ00EAmdOAwkAZgIFAmVrAAAJAPwHBAUCYnQCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnTAUCZWsFA25pbAUDbmlsAwkAAAIFAmdOBQJnTgQCZ08DBQJnSgQCZ1AJAPwHBAUCYnMCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRsBQJlaQUDbmlsAwkAAAIFAmdQBQJnUAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJlUwZjYWxsZXIFAmVpBQJkbAUDbmlsBAJnUQkBAmVBAwAAAAAAAAMJAAACBQJnUQUCZ1EEAmVyCAUCZ1ECXzIEAmdSCAUCZ1ECXzEEAmdTCQECZUUCBQJlegUCZXIDCQAAAgUCZ1MFAmdTBAJnVAkA/AcEBQR0aGlzAglyZWJhbGFuY2UFA25pbAUDbmlsAwkAAAIFAmdUBQJnVAkAzggCCQDOCAIFAmRFBQJnTwUCZ1IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVMBCnB1dEZvckZyZWUBAmdVAwkAZgIAAAUCZ1UJAAIBAhRJbnZhbGlkIHZhbHVlIHBhc3NlZAQCZVkJAQJlVgMFAmVTBQJnVQcEAmRFCAUCZVkCXzkEAmVXCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJlUwhwYXltZW50cwAABmFtb3VudAQCZVgJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmVTCHBheW1lbnRzAAEGYW1vdW50BAJlegkBAmVzAwUCZVcFAmVYCQC2AgEAAAMJAAACBQJlegUCZXoEAmdWCQECZUEDAAAAAAAABAJnUggFAmdWAl8xBAJlcggFAmdWAl8yBAJnUwkBAmVFAgUCZXoFAmVyAwkAAAIFAmdTBQJnUwkAzggCBQJkRQUCZ1IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVMBCXB1dE9uZVRrbgICZ1cCZ1gEAmdZCgACYVcJAPwHBAUCYVQCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhVwIHQm9vbGVhbgUCYVcJAAIBCQCsAgIJAAMBBQJhVwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ1oDAwMJAQJhWQAGCQAAAgUCYmwFAWwGCQAAAgUCYmwFAW4GBQJnWQQCZk0JAMwIAgMDCQEBIQEFAmdaBgkBAmdoAQUCZVMGCQECYVEBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJlUwhwYXltZW50cwABBgkBAmFRAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZk0FAmZNBAJoYQkAkQMCCAUCZVMIcGF5bWVudHMAAAQCZmgIBQJoYQdhc3NldElkBAJmZwgFAmhhBmFtb3VudAQCZXoDCQAAAgUCZmgFAmJuCQECZXMDCQC2AgEFAmZnCQC2AgEAAAkAtgIBAAADCQAAAgUCZmgFAmJvCQECZXMDCQC2AgEAAAkAtgIBBQJmZwkAtgIBAAAJAQJhUQECHnBheW1lbnQgYXNzZXQgaXMgbm90IHN1cHBvcnRlZAMJAAACBQJlegUCZXoEAmFiCAUCZVMGY2FsbGVyBAJhYwgFAmVTDXRyYW5zYWN0aW9uSWQEAmhiCQECZmYEBQJmZwUCZmgFAmFiBQJhYwMJAAACBQJoYgUCaGIEAmZsCAUCaGICXzUEAmhjCAUCaGICXzQEAmZlCAUCaGICXzMEAmVsCAUCaGICXzIEAmhkCAUCaGICXzEEAmhlAwMJAGYCBQJnVwAACQBmAgUCZ1cFAmhkBwkBAmFRAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJnVwUDbmlsAgAFAmhkBAJmYQkBAmVaAQUCaGUDCQAAAgUCZmEFAmZhBAJnTwMFAmdYBAJoZgkA/AcEBQJicwIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYm0FAmhlBQNuaWwDCQAAAgUCaGYFAmhmBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmVTBmNhbGxlcgUCaGUFAmJtBQNuaWwEAmhnAwkAZgIFAmZlAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVUFAmZlBQJmaAUDbmlsBQNuaWwEAmhoAwkAAAIFBHRoaXMFAmFVCQCUCgIAAAAAAwUCZmwJAJQKAgkBAS0BBQJmZQAACQCUCgIAAAkBAS0BBQJmZQQCZUIIBQJoaAJfMQQCZUMIBQJoaAJfMgQCaGkJAQJlQQMFAmVCBQJlQwAABAJnUggFAmhpAl8xBAJlcggFAmhpAl8yBAJlTAkBBXZhbHVlAQkAoggBBQJhagQCZ1MJAQJlRQIFAmV6BQJlcgMJAAACBQJnUwUCZ1MEAmdUCQD8BwQFBHRoaXMCCXJlYmFsYW5jZQUDbmlsBQNuaWwDCQAAAgUCZ1QFAmdUCQCUCgIJAM4IAgkAzggCCQDOCAIFAmVsBQJnTwUCaGcFAmdSBQJoZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwERcHV0T25lVGtuUkVBRE9OTFkCAmZoAmZnBAJoagkBAmZmBAUCZmcJAQJiZAEFAmZoBQR1bml0BQR1bml0BAJoZAgFAmhqAl8xBAJlbAgFAmhqAl8yBAJmZQgFAmhqAl8zBAJoYwgFAmhqAl80BAJmbAgFAmhqAl81CQCUCgIFA25pbAkAlQoDBQJoZAUCZmUFAmhjAmVTAQlnZXRPbmVUa24CAmhrAmdXBAJnWQoAAmFXCQD8BwQFAmFUAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVcCB0Jvb2xlYW4FAmFXCQACAQkArAICCQADAQUCYVcCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmhsAwMJAQJhWQAGCQAAAgUCYmwFAW4GBQJnWQQCZk0JAMwIAgMDCQEBIQEFAmhsBgkBAmdoAQUCZVMGCQECYVEBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJlUwhwYXltZW50cwABBgkBAmFRAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZk0FAmZNBAJmTAkBAmJkAQUCaGsEAmhhCQCRAwIIBQJlUwhwYXltZW50cwAABAJmaAgFAmhhB2Fzc2V0SWQEAmZ0CAUCaGEGYW1vdW50BAJlegkBAmVzAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlegUCZXoEAmFiCAUCZVMGY2FsbGVyBAJhYwgFAmVTDXRyYW5zYWN0aW9uSWQEAmhtCQECZksFBQJmTAUCZnQFAmZoBQJhYgUCYWMDCQAAAgUCaG0FAmhtBAJmTggFAmhtAl81BAJoYwgFAmhtAl80BAJmZQgFAmhtAl8zBAJlbAgFAmhtAl8yBAJobggFAmhtAl8xBAJiVwMDCQBmAgUCZ1cAAAkAZgIFAmdXBQJobgcJAQJhUQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ1cFA25pbAIABQJobgQCaG8JAPwHBAUCYVQCBGJ1cm4JAMwIAgUCZnQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZmgFAmZ0BQNuaWwDCQAAAgUCaG8FAmhvBAJnQwkBAmNLAgUCaGsFAmJXBAJocAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCYlcFAmZMBQNuaWwEAmhnAwkAZgIFAmZlAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVUFAmZlBQJmTAUDbmlsBQNuaWwEAmhxBAJocgMJAAACBQR0aGlzBQJhVQAABQJmZQMFAmZOCQCUCgIJAQEtAQkAZAIFAmJXBQJocgAACQCUCgIAAAkBAS0BCQBkAgUCYlcFAmhyBAJlQggFAmhxAl8xBAJlQwgFAmhxAl8yBAJocwkBAmVBAwUCZUIFAmVDAAAEAmdSCAUCaHMCXzEEAmVyCAUCaHMCXzIEAmdTCQECZUUCBQJlegUCZXIDCQAAAgUCZ1MFAmdTCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgUCZWwFAmdDBQJocAUCaGcFAmdSBQJiVwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwERZ2V0T25lVGtuUkVBRE9OTFkCAmZMAmZ0BAJodAkBAmZLBQkBAmJkAQUCZkwFAmZ0BQJibQUEdW5pdAUEdW5pdAQCaG4IBQJodAJfMQQCZWwIBQJodAJfMgQCZmUIBQJodAJfMwQCaGMIBQJodAJfNAQCZk4IBQJodAJfNQkAlAoCBQNuaWwJAJUKAwUCaG4FAmZlBQJoYwJlUwETdW5zdGFrZUFuZEdldE9uZVRrbgMCaHUCaGsCZ1cEAmdZCgACYVcJAPwHBAUCYVQCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhVwIHQm9vbGVhbgUCYVcJAAIBCQCsAgIJAAMBBQJhVwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCaGwDAwkBAmFZAAYJAAACBQJibAUBbgYFAmdZBAJmTQkAzAgCAwMJAQEhAQUCaGwGCQECZ2gBBQJlUwYJAQJhUQECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmVTCHBheW1lbnRzAAAGCQECYVEBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmTQUCZk0EAmZMCQECYmQBBQJoawQCYWIIBQJlUwZjYWxsZXIEAmFjCAUCZVMNdHJhbnNhY3Rpb25JZAQCZXoJAQJlcwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZXoFAmV6BAJodgkA/AcEBQJicwIHdW5zdGFrZQkAzAgCCQDYBAEFAmJtCQDMCAIFAmh1BQNuaWwFA25pbAMJAAACBQJodgUCaHYEAmh3CQECZksFBQJmTAUCaHUFAmJtBQJhYgUCYWMDCQAAAgUCaHcFAmh3BAJmTggFAmh3Al81BAJoYwgFAmh3Al80BAJmZQgFAmh3Al8zBAJlbAgFAmh3Al8yBAJobggFAmh3Al8xBAJiVwMDCQBmAgUCZ1cAAAkAZgIFAmdXBQJobgcJAQJhUQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ1cFA25pbAIABQJobgQCaG8JAPwHBAUCYVQCBGJ1cm4JAMwIAgUCaHUFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYm0FAmh1BQNuaWwDCQAAAgUCaG8FAmhvBAJnQwkBAmNLAgUCaGsFAmJXBAJocAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZVMGY2FsbGVyBQJiVwUCZkwFA25pbAQCaGcDCQBmAgUCZmUAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhVQUCZmUFAmZMBQNuaWwFA25pbAQCaHgEAmhyAwkAAAIFBHRoaXMFAmFVAAAFAmZlAwUCZk4JAJQKAgkBAS0BCQBkAgUCYlcFAmhyAAAJAJQKAgAACQEBLQEJAGQCBQJiVwUCaHIEAmVCCAUCaHgCXzEEAmVDCAUCaHgCXzIEAmh5CQECZUEDBQJlQgUCZUMAAAQCZ1IIBQJoeQJfMQQCZXIIBQJoeQJfMgQCZ1MJAQJlRQIFAmV6BQJlcgMJAAACBQJnUwUCZ1MJAJQKAgkAzggCCQDOCAIJAM4IAgkAzggCBQJlbAUCZ0MFAmhwBQJoZwUCZ1IFAmJXCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVTAQNnZXQABAJkVwkBAmVSAQUCZVMEAmh6CAUCZFcCXzEEAmRCCAUCZFcCXzIEAmVVCAUCZFcCXzMEAmRqCAUCZFcCXzQEAmRFCAUCZFcCXzUEAmV6CQECZXMDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmV6BQJlegQCaEEJAPwHBAUCYVQCBGJ1cm4JAMwIAgUCZVUFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZGoFAmVVBQNuaWwDCQAAAgUCaEEFAmhBBAJoQgkBAmVBAwkBAS0BBQJoegkBAS0BBQJkQgAABAJnUggFAmhCAl8xBAJlcggFAmhCAl8yBAJnUwkBAmVFAgUCZXoFAmVyAwkAAAIFAmdTBQJnUwkAzggCBQJkRQUCZ1IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVMBCWdldE5vTGVzcwICaEMCaEQEAmRXCQECZVIBBQJlUwQCZEEIBQJkVwJfMQQCZEIIBQJkVwJfMgQCZVUIBQJkVwJfMwQCZGoIBQJkVwJfNAQCZEUIBQJkVwJfNQMJAGYCBQJoQwUCZEEJAAIBCQCsAgIJAKwCAgkArAICAhxub0xlc3NUaGVuQW10QXNzZXQgZmFpbGVkOiAgCQCkAwEFAmRBAgMgPCAJAKQDAQUCaEMDCQBmAgUCaEQFAmRCCQACAQkArAICCQCsAgIJAKwCAgIdbm9MZXNzVGhlblByaWNlQXNzZXQgZmFpbGVkOiAJAKQDAQUCZEICAyA8IAkApAMBBQJoRAQCZXoJAQJlcwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZXoFAmV6BAJoQQkA/AcEBQJhVAIEYnVybgkAzAgCBQJlVQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkagUCZVUFA25pbAMJAAACBQJoQQUCaEEEAmhFCQECZUEDCQEBLQEFAmRBCQEBLQEFAmRCAAAEAmdSCAUCaEUCXzEEAmVyCAUCaEUCXzIEAmdTCQECZUUCBQJlegUCZXIDCQAAAgUCZ1MFAmdTCQDOCAIFAmRFBQJnUgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwENdW5zdGFrZUFuZEdldAECYlcEAmhGAwkBAiE9AgkAkAMBCAUCZVMIcGF5bWVudHMAAAkAAgECGE5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAYDCQAAAgUCaEYFAmhGBAJjWQkBAmJhAAQCZGwJANkEAQkAkQMCBQJjWQUBcQQCZXoJAQJlcwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZXoFAmV6BAJodgkA/AcEBQJicwIHdW5zdGFrZQkAzAgCCQDYBAEFAmRsCQDMCAIFAmJXBQNuaWwFA25pbAMJAAACBQJodgUCaHYEAmRXCQECZGgECQDYBAEIBQJlUw10cmFuc2FjdGlvbklkCQDYBAEFAmRsBQJiVwgFAmVTBmNhbGxlcgQCZEEIBQJkVwJfMQQCZEIIBQJkVwJfMgQCZG8JAQ1wYXJzZUludFZhbHVlAQgFAmRXAl85BAJkRQgFAmRXA18xMAQCaEcDAwkBAmFZAAYJAAACBQJkbwUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCZG8GAwkAAAIFAmhHBQJoRwQCaEEJAPwHBAUCYVQCBGJ1cm4JAMwIAgUCYlcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZGwFAmJXBQNuaWwDCQAAAgUCaEEFAmhBBAJoSAkBAmVBAwkBAS0BBQJkQQkBAS0BBQJkQgAABAJnUggFAmhIAl8xBAJlcggFAmhIAl8yBAJnUwkBAmVFAgUCZXoFAmVyAwkAAAIFAmdTBQJnUwkAzggCBQJkRQUCZ1IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVMBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmh1AmhJAmhEBAJobAMJAQJhWQAGCQAAAgUCYmwFAW4EAmZNCQDMCAIDCQEBIQEFAmhsBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmVTCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZk0FAmZNBAJlegkBAmVzAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlegUCZXoEAmh2CQD8BwQFAmJzAgd1bnN0YWtlCQDMCAIJANgEAQUCYm0JAMwIAgUCaHUFA25pbAUDbmlsAwkAAAIFAmh2BQJodgQCZFcJAQJkaAQJANgEAQgFAmVTDXRyYW5zYWN0aW9uSWQJANgEAQUCYm0FAmh1CAUCZVMGY2FsbGVyBAJkQQgFAmRXAl8xBAJkQggFAmRXAl8yBAJkRQgFAmRXA18xMAQCaEoJAMwIAgMJAGcCBQJkQQUCaEkGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaEkFA25pbAIACQDMCAIDCQBnAgUCZEIFAmhEBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaEQFA25pbAIABQNuaWwDCQAAAgUCaEoFAmhKBAJoQQkA/AcEBQJhVAIEYnVybgkAzAgCBQJodQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJibQUCaHUFA25pbAMJAAACBQJoQQUCaEEEAmhLCQECZUEDCQEBLQEFAmRBCQEBLQEFAmRCAAAEAmdSCAUCaEsCXzEEAmVyCAUCaEsCXzIEAmdTCQECZUUCBQJlegUCZXIDCQAAAgUCZ1MFAmdTCQDOCAIFAmRFBQJnUgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwEIYWN0aXZhdGUCAmhMAmhNAwkBAiE9AgkApQgBCAUCZVMGY2FsbGVyCQClCAEFAmFUCQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFlAAUCaEwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFmAAUCaE0FA25pbAIHc3VjY2VzcwJlUwEKcmVmcmVzaEtMcAAEAmhOCQELdmFsdWVPckVsc2UCCQCfCAEFAmFrAAAEAmhPAwkAZwIJAGUCBQZoZWlnaHQFAmhOBQJhbgUEdW5pdAkBAmFRAQkAuQkCCQDMCAIJAKQDAQUCYW4JAMwIAgIvIGJsb2NrcyBoYXZlIG5vdCBwYXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGNhbGwFA25pbAIAAwkAAAIFAmhPBQJoTwQCZUwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFqAgEwCQECYVMBAgtpbnZhbGlkIGtMcAQCaFAJAQJlQQMAAAAAAAAEAmhRCAUCaFACXzEEAmVyCAUCaFACXzIEAmVEAwkBAiE9AgUCZUwFAmVyBQJoUQkBAmFRAQISbm90aGluZyB0byByZWZyZXNoCQCUCgIFAmVECQCmAwEFAmVyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVTARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJiYQACZVMBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmFwCQCUCgIFA25pbAkBAmJKAQUCYXACZVMBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmNTAmNUAmNYBAJkZwkBAmNXAwUCY1MFAmNUBQJjWAkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmRnAAAJAMwIAgkApgMBCQCRAwIFAmRnAAEJAMwIAgkApgMBCQCRAwIFAmRnAAIFA25pbAJlUwEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUUBRgkAlAoCBQNuaWwJAKYDAQkBAUQCBQFFBQFGAmVTARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFJAUoJAJQKAgUDbmlsCQEBSAIJAKcDAQUBSQUBSgJlUwEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJiTgJiTwkAlAoCBQNuaWwJAKYDAQkBAmJNAgkApwMBBQJiTgkApwMBBQJiTwJlUwEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmRpAmRHAmRIAmRJAmRKAmRLAmFiAmRMAmRNCQCUCgIFA25pbAkBAmRGCQUCZGkFAmRHBQJkSAUCZEkFAmRKBQJkSwUCYWIFAmRMBQJkTQJlUwEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmRpAmRqAmRrAmFiBAJkVwkBAmRoBAUCZGkFAmRqBQJkawkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYWIJAJQKAgUDbmlsCQCcCgoIBQJkVwJfMQgFAmRXAl8yCAUCZFcCXzMIBQJkVwJfNAgFAmRXAl81CAUCZFcCXzYIBQJkVwJfNwkApgMBCAUCZFcCXzgIBQJkVwJfOQgFAmRXA18xMAJlUwENc3RhdHNSRUFET05MWQAEAmNZCQECYmEABAJkbAkA2QQBCQCRAwIFAmNZBQFxBAJoUgkAkQMCBQJjWQUBcgQCaFMJAJEDAgUCY1kFAXMEAmRQCQCRAwIFAmNZBQF2BAJkUQkAkQMCBQJjWQUBdwQCY1oJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjWQUBdAQCZGEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjWQUBdQQCaFQICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZGwJAKwCAgkArAICAgZBc3NldCAJANgEAQUCZGwCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJoVQkBAmJKAQUCaFIEAmhWCQECYkoBBQJoUwQCaFcDCQAAAgUCaFQAAAkAzAgCBQFlCQDMCAIFAWUJAMwIAgUBZQUDbmlsCQECY1cDBQJoVQUCaFYFAmhUBAJkdgAABAJoWAkBAUgCCQCRAwIFAmhXAAEFAWIEAmhZCQEBSAIJAJEDAgUCaFcAAgUBYgQCaFoJAQV2YWx1ZQEJAJoIAgUCYVQJAQJhRAEJAKUIAQUEdGhpcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmhVCQDMCAIJAKQDAQUCaFYJAMwIAgkApAMBBQJoVAkAzAgCCQCkAwEFAmR2CQDMCAIJAKQDAQUCaFgJAMwIAgkApAMBBQJoWQkAzAgCCQCkAwEFAmhaBQNuaWwFAWoCZVMBIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAQJkSAQCY1kJAQJiYQAEAmRsCQDZBAEJAJEDAgUCY1kFAXEEAmROCQCRAwIFAmNZBQFyBAJkbQkA2QQBBQJkTgQCZE8JAJEDAgUCY1kFAXMEAmRuCQDZBAEFAmRPBAJjWgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNZBQF0BAJkYQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNZBQF1BAJkbwkAkQMCBQJjWQUBcAQCaFQICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZGwJAKwCAgkArAICAgZBc3NldCAJANgEAQUCZGwCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJoVQkBAmJKAQUCZE4EAmhWCQECYkoBBQJkTwQCY1UJAQFEAgUCaFUFAmNaBAJjVgkBAUQCBQJoVgUCZGEEAmR1AwkAAAIFAmhUAAAFAWUJAQJiTQIFAmNWBQJjVQQCZFQJAQFEAgUCZEgFAmNaBAJkVQkAvAIDBQJkVAUCZHUFAWQEAmRKCQEBSAIFAmRVBQJkYQQCZVkJAQJkRgkCAACgwh4FAmRIBQJkbQUCZEoFAmRuAgAGBwQCZWUIBQJlWQJfMQQCaWEIBQJlWQJfMwQCZHEIBQJlWQJfNAQCZHMIBQJlWQJfNQQCZHAIBQJlWQJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCZWUJAMwIAgkApAMBCQEBSAIFAmR1BQFiCQDMCAIJAKQDAQUCZHEJAMwIAgkApAMBBQJkcwkAzAgCCQCkAwEFAmRwCQDMCAIFAmRvCQDMCAIJAKQDAQUCZEgJAMwIAgkApAMBBQJkSgUDbmlsBQFqAmVTAR9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAQJkSgQCY1kJAQJiYQAEAmRsCQDZBAEJAJEDAgUCY1kFAXEEAmROCQCRAwIFAmNZBQFyBAJkbQkA2QQBBQJkTgQCZE8JAJEDAgUCY1kFAXMEAmRuCQDZBAEFAmRPBAJjWgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNZBQF0BAJkYQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNZBQF1BAJkbwkAkQMCBQJjWQUBcAQCaFQICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZGwJAKwCAgkArAICAgZBc3NldCAJANgEAQUCZGwCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJpYgkBAmJKAQUCZE4EAmljCQECYkoBBQJkTwQCaWQJAQFEAgUCaWIFAmNaBAJpZQkBAUQCBQJpYwUCZGEEAmR1AwkAAAIFAmhUAAAFAWUJAQJiTQIFAmllBQJpZAQCZFUJAQFEAgUCZEoFAmRhBAJkVAkAvAIDBQJkVQUBZAUCZHUEAmRICQEBSAIFAmRUBQJjWgQCZVkJAQJkRgkCAACgwh4FAmRIBQJkbQUCZEoFAmRuAgAGBwQCZWUIBQJlWQJfMQQCaWEIBQJlWQJfMwQCZHEIBQJlWQJfNAQCZHMIBQJlWQJfNQQCZHAIBQJlWQJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCZWUJAMwIAgkApAMBCQEBSAIFAmR1BQFiCQDMCAIJAKQDAQUCZHEJAMwIAgkApAMBBQJkcwkAzAgCCQCkAwEFAmRwCQDMCAIFAmRvCQDMCAIJAKQDAQUCZEgJAMwIAgkApAMBBQJkSgUDbmlsBQFqAmVTARNldmFsdWF0ZUdldFJFQURPTkxZAgJpZgJpZwQCZFcJAQJkaAQCAAUCaWYFAmlnBQR0aGlzBAJkQQgFAmRXAl8xBAJkQggFAmRXAl8yBAJkcQgFAmRXAl81BAJkcwgFAmRXAl82BAJkcAgFAmRXAl83BAJkdggFAmRXAl84BAJkbwkBDXBhcnNlSW50VmFsdWUBCAUCZFcCXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJkQQkAzAgCCQCkAwEFAmRCCQDMCAIJAKQDAQUCZHEJAMwIAgkApAMBBQJkcwkAzAgCCQCkAwEFAmRwCQDMCAIJAKYDAQUCZHYJAMwIAgkApAMBBQJkbwUDbmlsBQFqAQJpaAECaWkABAJpagQCYlQJAQJnZQADCQABAgUCYlQCCkJ5dGVWZWN0b3IEAmdpBQJiVAUCZ2kDCQABAgUCYlQCBFVuaXQIBQJpaA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCYlQFAmloAwkAAQIFAmJUAgVPcmRlcgQCZUgFAmJUBAJpawkBAmFaAAQCaWwJAQJlRwEFAmVIBAJhSQgFAmlsAl8xBAJhSggFAmlsAl8yBAJhSwkA9AMDCAUCZUgJYm9keUJ5dGVzCQCRAwIIBQJlSAZwcm9vZnMAAAgFAmVID3NlbmRlclB1YmxpY0tleQQCYUwJAPQDAwgFAmVICWJvZHlCeXRlcwkAkQMCCAUCZUgGcHJvb2ZzAAEFAmlrAwMDBQJhSQUCYUsHBQJhTAcGCQECYUgEBQJhSQUCYUoFAmFLBQJhTAMJAAECBQJiVAIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmdmBQJiVAMJAPQDAwgFAmloCWJvZHlCeXRlcwkAkQMCCAUCaWgGcHJvb2ZzAAAFAmlqBgQCaW0JAPYDAQkBBXZhbHVlAQgFAmdmBnNjcmlwdAQCaW4JANsEAQkBBXZhbHVlAQkAnQgCBQJhVAkBAmFGAAQCaW8JAPEHAQUEdGhpcwMJAAACBQJpbgUCaW0JAQIhPQIFAmlvBQJpbQcJAPQDAwgFAmloCWJvZHlCeXRlcwkAkQMCCAUCaWgGcHJvb2ZzAAAFAmlqM22mKQ==", "height": 2522424, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: LcFYXTQBKoM2KR1L3eJqyU59k4wG6vvtBxNPNCHxHGB Next: 8zzNtygyGEaC4P6DU3DtSZXcchB2TN7VCmAwV8sFZFGS Diff:
OldNewDifferences
520520 let dA = K(dy, cQ, FLOOR)
521521 let dB = K(dz, cR, FLOOR)
522522 let dC = cK(dm, dA)
523- if ((dC == dC))
524- then {
525- let dD = cK(dn, dB)
526- if ((dD == dD))
527- then {
528- let dE = if ((di == ""))
529- then nil
530- else ((dC ++ dD) ++ [ScriptTransfer(ab, dA, if ((dm == "WAVES"))
531- then unit
532- else fromBase58String(dm)), ScriptTransfer(ab, dB, if ((dn == "WAVES"))
533- then unit
534- else fromBase58String(dn)), StringEntry(ad(toString(ab), di), bF(dA, dB, dk, dv, height, lastBlock.timestamp)), IntegerEntry(W(), dv), IntegerEntry(X(height, lastBlock.timestamp), dv)])
535- $Tuple10(dA, dB, dm, dn, dq, ds, dp, du, do, dE)
536- }
537- else throw("Strict value is not equal to itself.")
538- }
539- else throw("Strict value is not equal to itself.")
523+ let dD = cK(dn, dB)
524+ let dE = if ((di == ""))
525+ then nil
526+ else ((dC ++ dD) ++ [ScriptTransfer(ab, dA, if ((dm == "WAVES"))
527+ then unit
528+ else fromBase58String(dm)), ScriptTransfer(ab, dB, if ((dn == "WAVES"))
529+ then unit
530+ else fromBase58String(dn)), StringEntry(ad(toString(ab), di), bF(dA, dB, dk, dv, height, lastBlock.timestamp)), IntegerEntry(W(), dv), IntegerEntry(X(height, lastBlock.timestamp), dv)])
531+ $Tuple10(dA, dB, dm, dn, dq, ds, dp, du, do, dE)
540532 }
541533 }
542534
13081300 if ((ho == ho))
13091301 then {
13101302 let gC = cK(hk, bW)
1311- if ((gC == gC))
1312- then {
1313- let hp = [ScriptTransfer(ab, bW, fL)]
1314- let hg = if ((fe > 0))
1315- then [ScriptTransfer(aU, fe, fL)]
1316- else nil
1317- let hq = {
1318- let hr = if ((this == aU))
1319- then 0
1320- else fe
1321- if (fN)
1322- then $Tuple2(-((bW + hr)), 0)
1323- else $Tuple2(0, -((bW + hr)))
1324- }
1325- let eB = hq._1
1326- let eC = hq._2
1327- let hs = eA(eB, eC, 0)
1328- let gR = hs._1
1329- let er = hs._2
1330- let gS = eE(ez, er)
1331- if ((gS == gS))
1332- then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
1333- else throw("Strict value is not equal to itself.")
1334- }
1303+ let hp = [ScriptTransfer(ab, bW, fL)]
1304+ let hg = if ((fe > 0))
1305+ then [ScriptTransfer(aU, fe, fL)]
1306+ else nil
1307+ let hq = {
1308+ let hr = if ((this == aU))
1309+ then 0
1310+ else fe
1311+ if (fN)
1312+ then $Tuple2(-((bW + hr)), 0)
1313+ else $Tuple2(0, -((bW + hr)))
1314+ }
1315+ let eB = hq._1
1316+ let eC = hq._2
1317+ let hs = eA(eB, eC, 0)
1318+ let gR = hs._1
1319+ let er = hs._2
1320+ let gS = eE(ez, er)
1321+ if ((gS == gS))
1322+ then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
13351323 else throw("Strict value is not equal to itself.")
13361324 }
13371325 else throw("Strict value is not equal to itself.")
14061394 if ((ho == ho))
14071395 then {
14081396 let gC = cK(hk, bW)
1409- if ((gC == gC))
1410- then {
1411- let hp = [ScriptTransfer(eS.caller, bW, fL)]
1412- let hg = if ((fe > 0))
1413- then [ScriptTransfer(aU, fe, fL)]
1414- else nil
1415- let hx = {
1416- let hr = if ((this == aU))
1417- then 0
1418- else fe
1419- if (fN)
1420- then $Tuple2(-((bW + hr)), 0)
1421- else $Tuple2(0, -((bW + hr)))
1422- }
1423- let eB = hx._1
1424- let eC = hx._2
1425- let hy = eA(eB, eC, 0)
1426- let gR = hy._1
1427- let er = hy._2
1428- let gS = eE(ez, er)
1429- if ((gS == gS))
1430- then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
1431- else throw("Strict value is not equal to itself.")
1432- }
1397+ let hp = [ScriptTransfer(eS.caller, bW, fL)]
1398+ let hg = if ((fe > 0))
1399+ then [ScriptTransfer(aU, fe, fL)]
1400+ else nil
1401+ let hx = {
1402+ let hr = if ((this == aU))
1403+ then 0
1404+ else fe
1405+ if (fN)
1406+ then $Tuple2(-((bW + hr)), 0)
1407+ else $Tuple2(0, -((bW + hr)))
1408+ }
1409+ let eB = hx._1
1410+ let eC = hx._2
1411+ let hy = eA(eB, eC, 0)
1412+ let gR = hy._1
1413+ let er = hy._2
1414+ let gS = eE(ez, er)
1415+ if ((gS == gS))
1416+ then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
14331417 else throw("Strict value is not equal to itself.")
14341418 }
14351419 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 (ap) = makeString(["%s%s", "stakedBalance", ap], j)
134134
135135
136136 func aq (ap) = makeString(["%s%s", "shareAssetBalance", ap], j)
137137
138138
139139 func ar (ap) = valueOrElse(getInteger(this, ao(ap)), 0)
140140
141141
142142 func as (ap) = valueOrElse(getInteger(this, aq(ap)), 0)
143143
144144
145145 func at () = "%s__factoryConfig"
146146
147147
148148 func au () = "%s%s__matcher__publicKey"
149149
150150
151151 func av (aw) = (("%s%s%s__" + aw) + "__mappings__poolContract2LpAsset")
152152
153153
154154 func ax (ay,az) = (((("%d%d%s__" + ay) + "__") + az) + "__config")
155155
156156
157157 func aA (aB) = ("%s%s%s__mappings__baseAsset2internalId__" + aB)
158158
159159
160160 func aC () = "%s__shutdown"
161161
162162
163163 func aD (aE) = ("%s%s__poolWeight__" + aE)
164164
165165
166166 func aF () = "%s__allowedLpScriptHash"
167167
168168
169169 let aG = "%s__feeCollectorAddress"
170170
171171 func aH (aI,aJ,aK,aL) = throw((((((((("order validation failed: orderValid=" + toString(aI)) + " (") + aJ) + ")") + " senderValid=") + toString(aK)) + " matcherValid=") + toString(aL)))
172172
173173
174174 func aM (aN,aO) = valueOrErrorMessage(getString(aN, aO), makeString(["mandatory ", toString(aN), ".", aO, " is not defined"], ""))
175175
176176
177177 func aP (aN,aO) = valueOrErrorMessage(getInteger(aN, aO), makeString(["mandatory ", toString(aN), ".", aO, " is not defined"], ""))
178178
179179
180180 func aQ (aR) = throw(makeString(["lp.ride:", aR], " "))
181181
182182
183183 func aS (aR) = makeString(["lp.ride:", aR], " ")
184184
185185
186186 let aT = addressFromStringValue(aM(this, T()))
187187
188188 let aU = addressFromStringValue(aM(aT, aG))
189189
190190 let aV = {
191191 let aW = invoke(aT, "getInFeeREADONLY", [toString(this)], nil)
192192 if ($isInstanceOf(aW, "Int"))
193193 then aW
194194 else throw(($getType(aW) + " couldn't be cast to Int"))
195195 }
196196
197197 let aX = {
198198 let aW = invoke(aT, "getOutFeeREADONLY", [toString(this)], nil)
199199 if ($isInstanceOf(aW, "Int"))
200200 then aW
201201 else throw(($getType(aW) + " couldn't be cast to Int"))
202202 }
203203
204204 func aY () = valueOrElse(getBoolean(aT, aC()), false)
205205
206206
207207 func aZ () = fromBase58String(aM(aT, au()))
208208
209209
210210 func ba () = {
211211 let bb = aM(this, ae())
212212 let bc = aM(this, af())
213213 let az = aP(aT, aA(bc))
214214 let ay = aP(aT, aA(bb))
215215 split(aM(aT, ax(toString(ay), toString(az))), j)
216216 }
217217
218218
219219 func bd (be) = if ((be == i))
220220 then unit
221221 else fromBase58String(be)
222222
223223
224224 func bf (be) = if ((be == unit))
225225 then i
226226 else toBase58String(value(be))
227227
228228
229229 func bg (bh) = $Tuple7(addressFromStringValue(bh[o]), parseIntValue(bh[p]), fromBase58String(bh[q]), bd(bh[r]), bd(bh[s]), parseIntValue(bh[t]), parseIntValue(bh[u]))
230230
231231
232232 let bi = bg(ba())
233233
234234 let bj = bi
235235
236236 let bk = bj._1
237237
238238 let bl = bj._2
239239
240240 let bm = bj._3
241241
242242 let bn = bj._4
243243
244244 let bo = bj._5
245245
246246 let bp = bj._6
247247
248248 let bq = bj._7
249249
250250 func br () = split(aM(aT, at()), j)
251251
252252
253253 let bs = valueOrErrorMessage(addressFromString(br()[B]), "incorrect staking address")
254254
255255 let bt = valueOrErrorMessage(addressFromString(br()[C]), "incorrect staking address")
256256
257257 func bu (bv,bw,bx,by,bz,bA,bB,bC,bD,bE) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA), toString(bB), toString(bC), toString(bD), toString(bE)], j)
258258
259259
260260 func bF (bG,bH,bI,by,bB,bC) = makeString(["%d%d%d%d%d%d", toString(bG), toString(bH), toString(bI), toString(by), toString(bB), toString(bC)], j)
261261
262262
263263 func bJ (ap) = {
264264 let bK = if ((ap == "WAVES"))
265265 then wavesBalance(this).available
266266 else assetBalance(this, fromBase58String(ap))
267267 let bL = ((bK + ar(ap)) - as(ap))
268268 max([0, bL])
269269 }
270270
271271
272272 func bM (bN,bO) = fraction(bN, d, bO)
273273
274274
275275 func bP (bN,bO,L) = fraction(bN, d, bO, L)
276276
277277
278278 func bQ (bR) = {
279279 let bS = invoke(bR, "getRate", nil, nil)
280280 if ((bS == bS))
281281 then {
282282 let bT = bS
283283 if ($isInstanceOf(bT, "Int"))
284284 then {
285285 let bU = bT
286286 bU
287287 }
288288 else aQ("proxy.getRate() unexpected value")
289289 }
290290 else throw("Strict value is not equal to itself.")
291291 }
292292
293293
294294 func bV (ap,bW,bX,bR) = {
295295 let bY = ar(ap)
296296 if ((bY == bY))
297297 then {
298298 let bZ = as(bX)
299299 if ((bZ == bZ))
300300 then {
301301 let ca = bd(ap)
302302 if ((bW > 0))
303303 then {
304304 let cb = invoke(bR, "deposit", nil, [AttachedPayment(ca, bW)])
305305 if ((cb == cb))
306306 then {
307307 let bT = cb
308308 if ($isInstanceOf(bT, "Int"))
309309 then {
310310 let cc = bT
311311 let cd = (bY + bW)
312312 let ce = (bZ + cc)
313313 [IntegerEntry(ao(ap), cd), IntegerEntry(aq(bX), ce)]
314314 }
315315 else nil
316316 }
317317 else throw("Strict value is not equal to itself.")
318318 }
319319 else nil
320320 }
321321 else throw("Strict value is not equal to itself.")
322322 }
323323 else throw("Strict value is not equal to itself.")
324324 }
325325
326326
327327 func cf (ap,bW,bX,bR,cg,ch) = {
328328 let bY = ar(ap)
329329 if ((bY == bY))
330330 then {
331331 let bZ = as(bX)
332332 if ((bZ == bZ))
333333 then {
334334 let ci = bQ(bR)
335335 if ((ci == ci))
336336 then {
337337 let cj = fraction(cg, bY, bZ)
338338 let ck = bd(bX)
339339 let cl = fraction(cg, bW, cj)
340340 let cm = fraction(cg, bW, ci)
341341 let cn = max([0, (cl - cm)])
342342 if ((cm > 0))
343343 then {
344344 let co = invoke(bR, "withdraw", nil, [AttachedPayment(ck, cm)])
345345 if ((co == co))
346346 then {
347347 let bT = co
348348 if ($isInstanceOf(bT, "Int"))
349349 then {
350350 let cp = bT
351351 let cd = (bY - cp)
352352 let ce = ((bZ - cm) - cn)
353353 [IntegerEntry(ao(ap), cd), IntegerEntry(aq(bX), ce), ScriptTransfer(ch, cn, bd(bX))]
354354 }
355355 else nil
356356 }
357357 else throw("Strict value is not equal to itself.")
358358 }
359359 else nil
360360 }
361361 else throw("Strict value is not equal to itself.")
362362 }
363363 else throw("Strict value is not equal to itself.")
364364 }
365365 else throw("Strict value is not equal to itself.")
366366 }
367367
368368
369369 func cq (ap) = {
370370 let bT = invoke(aT, "getPoolLeaseConfigREADONLY", [toString(this), ap], nil)
371371 if ($isInstanceOf(bT, "(Boolean, Int, Int, String, String, Int, String)"))
372372 then {
373373 let cr = bT
374374 cr
375375 }
376376 else aQ((("[" + ap) + "] getLeaseProxyConfig() error"))
377377 }
378378
379379
380380 func cs (ct,ap,bX,cu,bR,cg,ch) = {
381381 let bY = ar(ap)
382382 if ((bY == bY))
383383 then {
384384 let bZ = as(bX)
385385 if ((bZ == bZ))
386386 then {
387387 let cv = {
388388 let bT = bd(ap)
389389 if ($isInstanceOf(bT, "ByteVector"))
390390 then {
391391 let cw = bT
392392 assetBalance(this, cw)
393393 }
394394 else if ($isInstanceOf(bT, "Unit"))
395395 then {
396396 let cx = bT
397397 wavesBalance(this).available
398398 }
399399 else throw("Match error")
400400 }
401401 if ((cv == cv))
402402 then {
403403 let cy = max([0, ((cv + bY) - cu)])
404404 let cz = fraction(ct, cy, 100)
405405 let cA = (bY - cz)
406406 if ((cA == 0))
407407 then nil
408408 else if ((0 > cA))
409409 then {
410410 let cB = -(cA)
411411 bV(ap, cB, bX, bR)
412412 }
413413 else {
414414 let cC = cA
415415 cf(ap, cC, bX, bR, cg, ch)
416416 }
417417 }
418418 else throw("Strict value is not equal to itself.")
419419 }
420420 else throw("Strict value is not equal to itself.")
421421 }
422422 else throw("Strict value is not equal to itself.")
423423 }
424424
425425
426426 func cD (ap) = {
427427 let cE = cq(ap)
428428 let cF = cE._1
429429 let cG = cE._2
430430 let cu = cE._3
431431 let cH = cE._4
432432 let cI = cE._5
433433 let cg = cE._6
434434 let cJ = cE._7
435435 if (cF)
436436 then cs(cG, ap, cI, cu, addressFromStringValue(cH), cg, addressFromStringValue(cJ))
437437 else nil
438438 }
439439
440440
441441 func cK (ap,cL) = {
442442 let cM = cq(ap)
443443 let cF = cM._1
444444 let cG = cM._2
445445 let cu = cM._3
446446 let cH = cM._4
447447 let cI = cM._5
448448 let cg = cM._6
449449 let cJ = cM._7
450450 if (cF)
451451 then {
452452 let cN = max([0, ((bJ(ap) - cL) - cu)])
453453 if ((cN == cN))
454454 then {
455455 let cd = fraction(cG, cN, 100)
456456 if ((cd == cd))
457457 then {
458458 let cO = max([0, (ar(ap) - cd)])
459459 if ((cO == cO))
460460 then cf(ap, cO, cI, addressFromStringValue(cH), cg, addressFromStringValue(cJ))
461461 else throw("Strict value is not equal to itself.")
462462 }
463463 else throw("Strict value is not equal to itself.")
464464 }
465465 else throw("Strict value is not equal to itself.")
466466 }
467467 else nil
468468 }
469469
470470
471471 func cP (cQ,cR,cS,cT) = {
472472 let cU = D(cS, cQ)
473473 let cV = D(cT, cR)
474474 bM(cV, cU)
475475 }
476476
477477
478478 func cW (cS,cT,cX) = {
479479 let cY = ba()
480480 let cZ = parseIntValue(cY[t])
481481 let da = parseIntValue(cY[u])
482482 let db = cP(cZ, da, cS, cT)
483483 let bO = D(cS, cZ)
484484 let bN = D(cT, da)
485485 let dc = D(cX, b)
486486 let dd = bM(bO, dc)
487487 let de = bM(bN, dc)
488488 [db, dd, de]
489489 }
490490
491491
492492 func df (cS,cT,cX) = {
493493 let dg = cW(cS, cT, cX)
494494 [H(dg[0], b), H(dg[1], b), H(dg[2], b)]
495495 }
496496
497497
498498 func dh (di,dj,dk,ab) = {
499499 let cY = ba()
500500 let dl = cY[q]
501501 let dm = cY[r]
502502 let dn = cY[s]
503503 let cQ = parseIntValue(cY[t])
504504 let cR = parseIntValue(cY[u])
505505 let do = cY[p]
506506 let dp = valueOrErrorMessage(assetInfo(fromBase58String(dl)), (("Asset " + dl) + " doesn't exist")).quantity
507507 if ((dl != dj))
508508 then throw("Invalid asset passed.")
509509 else {
510510 let dq = bJ(dm)
511511 let dr = D(dq, cQ)
512512 let ds = bJ(dn)
513513 let dt = D(ds, cR)
514514 let du = bM(dt, dr)
515515 let dv = H(du, b)
516516 let dw = D(dk, b)
517517 let dx = D(dp, b)
518518 let dy = fraction(dr, dw, dx)
519519 let dz = fraction(dt, dw, dx)
520520 let dA = K(dy, cQ, FLOOR)
521521 let dB = K(dz, cR, FLOOR)
522522 let dC = cK(dm, dA)
523- if ((dC == dC))
524- then {
525- let dD = cK(dn, dB)
526- if ((dD == dD))
527- then {
528- let dE = if ((di == ""))
529- then nil
530- else ((dC ++ dD) ++ [ScriptTransfer(ab, dA, if ((dm == "WAVES"))
531- then unit
532- else fromBase58String(dm)), ScriptTransfer(ab, dB, if ((dn == "WAVES"))
533- then unit
534- else fromBase58String(dn)), StringEntry(ad(toString(ab), di), bF(dA, dB, dk, dv, height, lastBlock.timestamp)), IntegerEntry(W(), dv), IntegerEntry(X(height, lastBlock.timestamp), dv)])
535- $Tuple10(dA, dB, dm, dn, dq, ds, dp, du, do, dE)
536- }
537- else throw("Strict value is not equal to itself.")
538- }
539- else throw("Strict value is not equal to itself.")
523+ let dD = cK(dn, dB)
524+ let dE = if ((di == ""))
525+ then nil
526+ else ((dC ++ dD) ++ [ScriptTransfer(ab, dA, if ((dm == "WAVES"))
527+ then unit
528+ else fromBase58String(dm)), ScriptTransfer(ab, dB, if ((dn == "WAVES"))
529+ then unit
530+ else fromBase58String(dn)), StringEntry(ad(toString(ab), di), bF(dA, dB, dk, dv, height, lastBlock.timestamp)), IntegerEntry(W(), dv), IntegerEntry(X(height, lastBlock.timestamp), dv)])
531+ $Tuple10(dA, dB, dm, dn, dq, ds, dp, du, do, dE)
540532 }
541533 }
542534
543535
544536 func dF (di,dG,dH,dI,dJ,dK,ab,dL,dM) = {
545537 let cY = ba()
546538 let dl = fromBase58String(cY[q])
547539 let dN = cY[r]
548540 let dO = cY[s]
549541 let dP = cY[v]
550542 let dQ = cY[w]
551543 let cZ = parseIntValue(cY[t])
552544 let da = parseIntValue(cY[u])
553545 let do = cY[p]
554546 let dp = valueOrErrorMessage(assetInfo(dl), (("Asset " + toBase58String(dl)) + " doesn't exist")).quantity
555547 let dR = toBase58String(valueOrElse(dI, fromBase58String("WAVES")))
556548 let dS = toBase58String(valueOrElse(dK, fromBase58String("WAVES")))
557549 if (if ((dN != dR))
558550 then true
559551 else (dO != dS))
560552 then throw("Invalid amt or price asset passed.")
561553 else {
562554 let dq = if (dL)
563555 then bJ(dN)
564556 else (bJ(dN) - dH)
565557 let ds = if (dL)
566558 then bJ(dO)
567559 else (bJ(dO) - dJ)
568560 let dT = D(dH, cZ)
569561 let dU = D(dJ, da)
570562 let dV = bM(dU, dT)
571563 let dr = D(dq, cZ)
572564 let dt = D(ds, da)
573565 let dW = if ((dp == 0))
574566 then {
575567 let du = e
576568 let dX = e
577569 let dc = pow((dT * dU), 0, toBigInt(5), 1, 0, DOWN)
578570 $Tuple5(H(dc, b), H(dT, cZ), H(dU, da), bM((dt + dU), (dr + dT)), dX)
579571 }
580572 else {
581573 let du = bM(dt, dr)
582574 let dX = fraction(R((du - dV)), d, du)
583575 let dY = D(dG, b)
584576 if (if ((du != e))
585577 then (dX > dY)
586578 else false)
587579 then throw(((("Price slippage " + toString(dX)) + " exceeded the passed limit of ") + toString(dY)))
588580 else {
589581 let dx = D(dp, b)
590582 let dZ = fraction(dT, bP(dt, dr, CEILING), d, CEILING)
591583 let ea = fraction(dU, d, bP(dt, dr, FLOOR), CEILING)
592584 let eb = if ((dZ > dU))
593585 then $Tuple2(ea, dU)
594586 else $Tuple2(dT, dZ)
595587 let ec = eb._1
596588 let ed = eb._2
597589 let dc = fraction(dx, ed, dt, FLOOR)
598590 $Tuple5(K(dc, b, FLOOR), K(ec, cZ, CEILING), K(ed, da, CEILING), du, dX)
599591 }
600592 }
601593 let ee = dW._1
602594 let ef = dW._2
603595 let eg = dW._3
604596 let dv = H(dW._4, b)
605597 let eh = H(dW._5, b)
606598 if ((0 >= ee))
607599 then throw("Invalid calculations. LP calculated is less than zero.")
608600 else {
609601 let ei = if (!(dM))
610602 then 0
611603 else ee
612604 let ej = (dH - ef)
613605 let ek = (dJ - eg)
614606 let el = [IntegerEntry(W(), dv), IntegerEntry(X(height, lastBlock.timestamp), dv), StringEntry(aa(ab, di), bu(ef, eg, ei, dv, dG, eh, height, lastBlock.timestamp, ej, ek))]
615607 $Tuple13(ee, ei, dv, dq, ds, dp, dl, do, el, ej, ek, dI, dK)
616608 }
617609 }
618610 }
619611
620612
621613 func em (en,eo,dp) = {
622614 let ep = G(en, toBigInt(bp))
623615 let eq = G(eo, toBigInt(bq))
624616 let er = fraction(pow((ep * eq), 0, toBigInt(5), 1, 18, DOWN), g, dp)
625617 if ((dp == f))
626618 then f
627619 else er
628620 }
629621
630622
631623 func es (et,eu,ev) = {
632624 let ew = (toBigInt(bJ(bf(bn))) - et)
633625 let ex = (toBigInt(bJ(bf(bo))) - eu)
634626 let ey = (toBigInt(value(assetInfo(bm)).quantity) - ev)
635627 let ez = em(ew, ex, ey)
636628 ez
637629 }
638630
639631
640632 func eA (eB,eC,ev) = {
641633 let ew = (bJ(bf(bn)) + eB)
642634 let ex = (bJ(bf(bo)) + eC)
643635 let ey = (value(assetInfo(bm)).quantity + ev)
644636 let er = em(toBigInt(ew), toBigInt(ex), toBigInt(ey))
645637 let eD = [IntegerEntry(ak, height), StringEntry(aj, toString(er))]
646638 $Tuple2(eD, er)
647639 }
648640
649641
650642 func eE (eF,er) = if ((er >= eF))
651643 then true
652644 else aQ(makeString(["updated KLp lower than current KLp", toString(eF), toString(er)], " "))
653645
654646
655647 func eG (eH) = {
656648 let ew = bJ(bf(bn))
657649 let ex = bJ(bf(bo))
658650 let eI = eH.amount
659651 let eJ = fraction(eH.amount, eH.price, b, FLOOR)
660652 let eK = if ((eH.orderType == Buy))
661653 then $Tuple2(eI, -(eJ))
662654 else $Tuple2(-(eI), eJ)
663655 let eB = eK._1
664656 let eC = eK._2
665657 if (if (if (aY())
666658 then true
667659 else (bl == m))
668660 then true
669661 else (bl == n))
670662 then throw("Exchange operations disabled")
671663 else if (if ((eH.assetPair.amountAsset != bn))
672664 then true
673665 else (eH.assetPair.priceAsset != bo))
674666 then throw("Wrong order assets.")
675667 else {
676668 let eL = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
677669 let eM = eA(eB, eC, 0)
678670 let eN = eM._1
679671 let eO = eM._2
680672 let eP = (eO >= eL)
681673 let eQ = makeString(["kLp=", toString(eL), " kLpNew=", toString(eO), " amountAssetBalance=", toString(ew), " priceAssetBalance=", toString(ex), " amountAssetBalanceDelta=", toString(eB), " priceAssetBalanceDelta=", toString(eC), " height=", toString(height)], "")
682674 $Tuple2(eP, eQ)
683675 }
684676 }
685677
686678
687679 func eR (eS) = if ((size(eS.payments) != 1))
688680 then throw("exactly 1 payment is expected")
689681 else {
690682 let eT = value(eS.payments[0])
691683 let dj = value(eT.assetId)
692684 let eU = eT.amount
693685 let dW = dh(toBase58String(eS.transactionId), toBase58String(dj), eU, eS.caller)
694686 let dA = dW._1
695687 let dB = dW._2
696688 let do = parseIntValue(dW._9)
697689 let dE = dW._10
698690 if (if (aY())
699691 then true
700692 else (do == n))
701693 then throw(("Get operation is blocked by admin. Status = " + toString(do)))
702694 else $Tuple5(dA, dB, eU, dj, dE)
703695 }
704696
705697
706698 func eV (eS,dG,dM) = if ((size(eS.payments) != 2))
707699 then throw("exactly 2 payments are expected")
708700 else {
709701 let eW = value(eS.payments[0])
710702 let eX = value(eS.payments[1])
711703 let eY = dF(toBase58String(eS.transactionId), dG, eW.amount, eW.assetId, eX.amount, eX.assetId, toString(eS.caller), false, dM)
712704 let do = parseIntValue(eY._8)
713705 if (if (if (aY())
714706 then true
715707 else (do == l))
716708 then true
717709 else (do == n))
718710 then throw(("Put operation is blocked by admin. Status = " + toString(do)))
719711 else eY
720712 }
721713
722714
723715 func eZ (bW) = {
724716 let fa = invoke(aT, "emit", [bW], nil)
725717 if ((fa == fa))
726718 then {
727719 let fb = {
728720 let bT = fa
729721 if ($isInstanceOf(bT, "Address"))
730722 then {
731723 let fc = bT
732724 invoke(fc, "emit", [bW], nil)
733725 }
734726 else unit
735727 }
736728 if ((fb == fb))
737729 then bW
738730 else throw("Strict value is not equal to itself.")
739731 }
740732 else throw("Strict value is not equal to itself.")
741733 }
742734
743735
744736 func fd (bW,ai) = {
745737 let fe = if ((ai == 0))
746738 then 0
747739 else fraction(bW, ai, b)
748740 $Tuple2((bW - fe), fe)
749741 }
750742
751743
752744 func ff (fg,fh,ab,ac) = {
753745 let fi = (ac == unit)
754746 let fj = bJ(bf(bn))
755747 let fk = bJ(bf(bo))
756748 let fl = if ((fh == bn))
757749 then true
758750 else if ((fh == bo))
759751 then false
760752 else aQ("invalid asset")
761753 let fm = if (fi)
762754 then $Tuple2(fj, fk)
763755 else if (fl)
764756 then $Tuple2((fj - fg), fk)
765757 else $Tuple2(fj, (fk - fg))
766758 let fn = fm._1
767759 let fo = fm._2
768760 let fp = if (fl)
769761 then $Tuple2(fg, 0)
770762 else $Tuple2(0, fg)
771763 let fq = fp._1
772764 let fr = fp._2
773765 let eI = fd(fq, aV)._1
774766 let eJ = fd(fr, aV)._1
775767 let fs = fd(fg, aV)
776768 let ft = fs._1
777769 let fe = fs._2
778770 let fu = (fn + eI)
779771 let fv = (fo + eJ)
780772 let fw = bM(D(fv, bq), D(fu, bp))
781773 let fx = H(fw, b)
782774 let fy = if (fl)
783775 then fn
784776 else fo
785777 let fz = toBigInt(fy)
786778 let fA = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
787779 let fB = if ((fA > f))
788780 then true
789781 else aQ("initial deposit requires all coins")
790782 if ((fB == fB))
791783 then {
792784 let fC = toBigInt(ft)
793785 let fD = max([0, toInt(((fA * (sqrtBigInt((d + ((fC * d) / fz)), 18, 18, DOWN) - d)) / d))])
794786 let el = if (fi)
795787 then nil
796788 else [IntegerEntry(W(), fx), IntegerEntry(X(height, lastBlock.timestamp), fx), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bu(fq, fr, fD, fx, 0, 0, height, lastBlock.timestamp, 0, 0))]
797789 let fE = bM(D(fo, bq), D(fn, bp))
798790 let fF = H(fE, b)
799791 let fG = {
800792 let fH = if (fl)
801793 then $Tuple2(fq, fn)
802794 else $Tuple2(fr, fo)
803795 let bW = fH._1
804796 let fI = fH._2
805797 let fJ = toInt(fraction(fA, toBigInt((bW / 2)), toBigInt(fI)))
806798 fraction((fD - fJ), b, fJ)
807799 }
808800 $Tuple5(fD, el, fe, fG, fl)
809801 }
810802 else throw("Strict value is not equal to itself.")
811803 }
812804
813805
814806 func fK (fL,ft,fh,ab,ac) = {
815807 let fi = (ac == unit)
816808 let cY = ba()
817809 let cZ = parseIntValue(cY[t])
818810 let da = parseIntValue(cY[u])
819811 let fM = [if ((fh == bm))
820812 then true
821813 else aQ("invalid lp asset")]
822814 if ((fM == fM))
823815 then {
824816 let fN = if ((fL == bn))
825817 then true
826818 else if ((fL == bo))
827819 then false
828820 else aQ("invalid asset")
829821 let fO = if (fN)
830822 then toBigInt(bJ(bf(bn)))
831823 else toBigInt(bJ(bf(bo)))
832824 let fP = if (fN)
833825 then cZ
834826 else da
835827 let fQ = bJ(bf(bn))
836828 let fR = bJ(bf(bo))
837829 let fS = if (fN)
838830 then fQ
839831 else fR
840832 let fT = toBigInt(fS)
841833 let fA = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
842834 let fU = toBigInt(ft)
843835 let fV = max([0, toInt(((fO * (d - pow((d - ((fU * d) / fA)), 18, h, 0, 18, DOWN))) / d))])
844836 let fW = fd(fV, aX)
845837 let fX = fW._1
846838 let fe = fW._2
847839 let fY = if (fN)
848840 then $Tuple4(fX, 0, (fQ - fV), fR)
849841 else $Tuple4(0, fX, fQ, (fR - fV))
850842 let fZ = fY._1
851843 let ga = fY._2
852844 let gb = fY._3
853845 let gc = fY._4
854846 let fw = bM(D(gc, bq), D(gb, bp))
855847 let fx = H(fw, b)
856848 let el = if (fi)
857849 then nil
858850 else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bF(fZ, ga, ft, fx, height, lastBlock.timestamp)), IntegerEntry(W(), fx), IntegerEntry(X(height, lastBlock.timestamp), fx)]
859851 let fE = bM(D(fR, bq), D(fQ, bp))
860852 let fF = H(fE, b)
861853 let fG = {
862854 let gd = (toInt(fraction(fO, fU, fA)) * 2)
863855 fraction((fX - gd), b, gd)
864856 }
865857 $Tuple5(fX, el, fe, fG, fN)
866858 }
867859 else throw("Strict value is not equal to itself.")
868860 }
869861
870862
871863 func ge () = {
872864 let bT = getString(U())
873865 if ($isInstanceOf(bT, "String"))
874866 then {
875867 let gf = bT
876868 fromBase58String(gf)
877869 }
878870 else if ($isInstanceOf(bT, "Unit"))
879871 then unit
880872 else throw("Match error")
881873 }
882874
883875
884876 func gg () = {
885877 let bT = getString(V())
886878 if ($isInstanceOf(bT, "String"))
887879 then {
888880 let gf = bT
889881 fromBase58String(gf)
890882 }
891883 else if ($isInstanceOf(bT, "Unit"))
892884 then unit
893885 else throw("Match error")
894886 }
895887
896888
897889 func gh (eS) = {
898890 let bT = ge()
899891 if ($isInstanceOf(bT, "ByteVector"))
900892 then {
901893 let gi = bT
902894 (eS.callerPublicKey == gi)
903895 }
904896 else if ($isInstanceOf(bT, "Unit"))
905897 then (eS.caller == this)
906898 else throw("Match error")
907899 }
908900
909901
910902 func gj (eS) = {
911903 let gk = throw("Permission denied")
912904 let bT = ge()
913905 if ($isInstanceOf(bT, "ByteVector"))
914906 then {
915907 let gi = bT
916908 if ((eS.callerPublicKey == gi))
917909 then true
918910 else gk
919911 }
920912 else if ($isInstanceOf(bT, "Unit"))
921913 then if ((eS.caller == this))
922914 then true
923915 else gk
924916 else throw("Match error")
925917 }
926918
927919
928920 @Callable(eS)
929921 func rebalance () = (cD(aM(this, ae())) ++ cD(aM(this, af())))
930922
931923
932924
933925 @Callable(eS)
934926 func calculateAmountOutForSwapREADONLY (gl,gm,gn) = {
935927 let go = if ((gm == false))
936928 then {
937929 let gp = aM(this, af())
938930 let gq = aM(this, ae())
939931 $Tuple2(gp, gq)
940932 }
941933 else {
942934 let gp = aM(this, ae())
943935 let gq = aM(this, af())
944936 $Tuple2(gp, gq)
945937 }
946938 let gp = go._1
947939 let gq = go._2
948940 let gr = bJ(gq)
949941 let gs = bJ(gp)
950942 let gt = fraction(gs, gl, (gr + gl))
951943 let gu = (toBigInt(gr) * toBigInt(gs))
952944 let gv = (((toBigInt(bJ(gq)) + toBigInt(gl)) + toBigInt(gn)) * (toBigInt(bJ(gp)) - toBigInt(gt)))
953945 let gw = if ((gv >= gu))
954946 then true
955947 else throw("new K is fewer error")
956948 if ((gw == gw))
957949 then $Tuple2(nil, gt)
958950 else throw("Strict value is not equal to itself.")
959951 }
960952
961953
962954
963955 @Callable(eS)
964956 func calculateAmountOutForSwapAndSendTokens (gl,gm,gx,gy,gn) = {
965957 let gz = {
966958 let aW = invoke(aT, "getSwapContractREADONLY", nil, nil)
967959 if ($isInstanceOf(aW, "String"))
968960 then aW
969961 else throw(($getType(aW) + " couldn't be cast to String"))
970962 }
971963 let fM = [if ((value(eS.payments[0]).amount >= gl))
972964 then true
973965 else aQ("Wrong amount"), if ((eS.caller == addressFromStringValue(gz)))
974966 then true
975967 else aQ("Permission denied")]
976968 if ((fM == fM))
977969 then {
978970 let eT = value(eS.payments[0])
979971 let gq = bf(eT.assetId)
980972 let gp = if ((gm == false))
981973 then aM(this, af())
982974 else aM(this, ae())
983975 let gr = (bJ(gq) - value(eS.payments[0]).amount)
984976 let gs = bJ(gp)
985977 let gt = fraction(gs, gl, (gr + gl))
986978 let gu = (toBigInt(gr) * toBigInt(gs))
987979 let gv = ((toBigInt(bJ(gq)) + toBigInt(gn)) * (toBigInt(bJ(gp)) - toBigInt(gt)))
988980 let gw = if ((gv >= gu))
989981 then true
990982 else throw("new K is fewer error")
991983 if ((gw == gw))
992984 then {
993985 let gA = if ((gt >= gx))
994986 then true
995987 else throw("Exchange result is fewer coins than expected")
996988 if ((gA == gA))
997989 then {
998990 let gB = cD(gq)
999991 if ((gB == gB))
1000992 then {
1001993 let gC = cK(gp, gt)
1002994 if ((gC == gC))
1003995 then $Tuple2(((gC ++ gB) ++ [ScriptTransfer(addressFromStringValue(gy), gt, bd(gp))]), gt)
1004996 else throw("Strict value is not equal to itself.")
1005997 }
1006998 else throw("Strict value is not equal to itself.")
1007999 }
10081000 else throw("Strict value is not equal to itself.")
10091001 }
10101002 else throw("Strict value is not equal to itself.")
10111003 }
10121004 else throw("Strict value is not equal to itself.")
10131005 }
10141006
10151007
10161008
10171009 @Callable(eS)
10181010 func setManager (gD) = {
10191011 let gE = gj(eS)
10201012 if ((gE == gE))
10211013 then {
10221014 let gF = fromBase58String(gD)
10231015 if ((gF == gF))
10241016 then [StringEntry(V(), gD)]
10251017 else throw("Strict value is not equal to itself.")
10261018 }
10271019 else throw("Strict value is not equal to itself.")
10281020 }
10291021
10301022
10311023
10321024 @Callable(eS)
10331025 func confirmManager () = {
10341026 let gG = gg()
10351027 let gH = if (isDefined(gG))
10361028 then true
10371029 else throw("No pending manager")
10381030 if ((gH == gH))
10391031 then {
10401032 let gI = if ((eS.callerPublicKey == value(gG)))
10411033 then true
10421034 else throw("You are not pending manager")
10431035 if ((gI == gI))
10441036 then [StringEntry(U(), toBase58String(value(gG))), DeleteEntry(V())]
10451037 else throw("Strict value is not equal to itself.")
10461038 }
10471039 else throw("Strict value is not equal to itself.")
10481040 }
10491041
10501042
10511043
10521044 @Callable(eS)
10531045 func put (dG,gJ) = if ((0 > dG))
10541046 then throw("Invalid slippageTolerance passed")
10551047 else {
10561048 let eY = eV(eS, dG, true)
10571049 let ei = eY._2
10581050 let dl = eY._7
10591051 let dE = eY._9
10601052 let ej = eY._10
10611053 let ek = eY._11
10621054 let gK = eY._12
10631055 let gL = eY._13
10641056 let eW = toBigInt(value(eS.payments[0]).amount)
10651057 let eX = toBigInt(value(eS.payments[1]).amount)
10661058 let ez = es(eW, eX, toBigInt(0))
10671059 if ((ez == ez))
10681060 then {
10691061 let fa = invoke(aT, "emit", [ei], nil)
10701062 if ((fa == fa))
10711063 then {
10721064 let fb = {
10731065 let bT = fa
10741066 if ($isInstanceOf(bT, "Address"))
10751067 then {
10761068 let fc = bT
10771069 invoke(fc, "emit", [ei], nil)
10781070 }
10791071 else unit
10801072 }
10811073 if ((fb == fb))
10821074 then {
10831075 let gM = if ((ej > 0))
10841076 then invoke(bt, "put", nil, [AttachedPayment(gK, ej)])
10851077 else nil
10861078 if ((gM == gM))
10871079 then {
10881080 let gN = if ((ek > 0))
10891081 then invoke(bt, "put", nil, [AttachedPayment(gL, ek)])
10901082 else nil
10911083 if ((gN == gN))
10921084 then {
10931085 let gO = if (gJ)
10941086 then {
10951087 let gP = invoke(bs, "stake", nil, [AttachedPayment(dl, ei)])
10961088 if ((gP == gP))
10971089 then nil
10981090 else throw("Strict value is not equal to itself.")
10991091 }
11001092 else [ScriptTransfer(eS.caller, ei, dl)]
11011093 let gQ = eA(0, 0, 0)
11021094 if ((gQ == gQ))
11031095 then {
11041096 let er = gQ._2
11051097 let gR = gQ._1
11061098 let gS = eE(ez, er)
11071099 if ((gS == gS))
11081100 then {
11091101 let gT = invoke(this, "rebalance", nil, nil)
11101102 if ((gT == gT))
11111103 then ((dE ++ gO) ++ gR)
11121104 else throw("Strict value is not equal to itself.")
11131105 }
11141106 else throw("Strict value is not equal to itself.")
11151107 }
11161108 else throw("Strict value is not equal to itself.")
11171109 }
11181110 else throw("Strict value is not equal to itself.")
11191111 }
11201112 else throw("Strict value is not equal to itself.")
11211113 }
11221114 else throw("Strict value is not equal to itself.")
11231115 }
11241116 else throw("Strict value is not equal to itself.")
11251117 }
11261118 else throw("Strict value is not equal to itself.")
11271119 }
11281120
11291121
11301122
11311123 @Callable(eS)
11321124 func putForFree (gU) = if ((0 > gU))
11331125 then throw("Invalid value passed")
11341126 else {
11351127 let eY = eV(eS, gU, false)
11361128 let dE = eY._9
11371129 let eW = toBigInt(value(eS.payments[0]).amount)
11381130 let eX = toBigInt(value(eS.payments[1]).amount)
11391131 let ez = es(eW, eX, toBigInt(0))
11401132 if ((ez == ez))
11411133 then {
11421134 let gV = eA(0, 0, 0)
11431135 let gR = gV._1
11441136 let er = gV._2
11451137 let gS = eE(ez, er)
11461138 if ((gS == gS))
11471139 then (dE ++ gR)
11481140 else throw("Strict value is not equal to itself.")
11491141 }
11501142 else throw("Strict value is not equal to itself.")
11511143 }
11521144
11531145
11541146
11551147 @Callable(eS)
11561148 func putOneTkn (gW,gX) = {
11571149 let gY = {
11581150 let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11591151 if ($isInstanceOf(aW, "Boolean"))
11601152 then aW
11611153 else throw(($getType(aW) + " couldn't be cast to Boolean"))
11621154 }
11631155 let gZ = if (if (if (aY())
11641156 then true
11651157 else (bl == l))
11661158 then true
11671159 else (bl == n))
11681160 then true
11691161 else gY
11701162 let fM = [if (if (!(gZ))
11711163 then true
11721164 else gh(eS))
11731165 then true
11741166 else aQ("put operation is blocked by admin"), if ((size(eS.payments) == 1))
11751167 then true
11761168 else aQ("exactly 1 payment are expected")]
11771169 if ((fM == fM))
11781170 then {
11791171 let ha = eS.payments[0]
11801172 let fh = ha.assetId
11811173 let fg = ha.amount
11821174 let ez = if ((fh == bn))
11831175 then es(toBigInt(fg), toBigInt(0), toBigInt(0))
11841176 else if ((fh == bo))
11851177 then es(toBigInt(0), toBigInt(fg), toBigInt(0))
11861178 else aQ("payment asset is not supported")
11871179 if ((ez == ez))
11881180 then {
11891181 let ab = eS.caller
11901182 let ac = eS.transactionId
11911183 let hb = ff(fg, fh, ab, ac)
11921184 if ((hb == hb))
11931185 then {
11941186 let fl = hb._5
11951187 let hc = hb._4
11961188 let fe = hb._3
11971189 let el = hb._2
11981190 let hd = hb._1
11991191 let he = if (if ((gW > 0))
12001192 then (gW > hd)
12011193 else false)
12021194 then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
12031195 else hd
12041196 let fa = eZ(he)
12051197 if ((fa == fa))
12061198 then {
12071199 let gO = if (gX)
12081200 then {
12091201 let hf = invoke(bs, "stake", nil, [AttachedPayment(bm, he)])
12101202 if ((hf == hf))
12111203 then nil
12121204 else throw("Strict value is not equal to itself.")
12131205 }
12141206 else [ScriptTransfer(eS.caller, he, bm)]
12151207 let hg = if ((fe > 0))
12161208 then [ScriptTransfer(aU, fe, fh)]
12171209 else nil
12181210 let hh = if ((this == aU))
12191211 then $Tuple2(0, 0)
12201212 else if (fl)
12211213 then $Tuple2(-(fe), 0)
12221214 else $Tuple2(0, -(fe))
12231215 let eB = hh._1
12241216 let eC = hh._2
12251217 let hi = eA(eB, eC, 0)
12261218 let gR = hi._1
12271219 let er = hi._2
12281220 let eL = value(getString(aj))
12291221 let gS = eE(ez, er)
12301222 if ((gS == gS))
12311223 then {
12321224 let gT = invoke(this, "rebalance", nil, nil)
12331225 if ((gT == gT))
12341226 then $Tuple2((((el ++ gO) ++ hg) ++ gR), he)
12351227 else throw("Strict value is not equal to itself.")
12361228 }
12371229 else throw("Strict value is not equal to itself.")
12381230 }
12391231 else throw("Strict value is not equal to itself.")
12401232 }
12411233 else throw("Strict value is not equal to itself.")
12421234 }
12431235 else throw("Strict value is not equal to itself.")
12441236 }
12451237 else throw("Strict value is not equal to itself.")
12461238 }
12471239
12481240
12491241
12501242 @Callable(eS)
12511243 func putOneTknREADONLY (fh,fg) = {
12521244 let hj = ff(fg, bd(fh), unit, unit)
12531245 let hd = hj._1
12541246 let el = hj._2
12551247 let fe = hj._3
12561248 let hc = hj._4
12571249 let fl = hj._5
12581250 $Tuple2(nil, $Tuple3(hd, fe, hc))
12591251 }
12601252
12611253
12621254
12631255 @Callable(eS)
12641256 func getOneTkn (hk,gW) = {
12651257 let gY = {
12661258 let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12671259 if ($isInstanceOf(aW, "Boolean"))
12681260 then aW
12691261 else throw(($getType(aW) + " couldn't be cast to Boolean"))
12701262 }
12711263 let hl = if (if (aY())
12721264 then true
12731265 else (bl == n))
12741266 then true
12751267 else gY
12761268 let fM = [if (if (!(hl))
12771269 then true
12781270 else gh(eS))
12791271 then true
12801272 else aQ("get operation is blocked by admin"), if ((size(eS.payments) == 1))
12811273 then true
12821274 else aQ("exactly 1 payment are expected")]
12831275 if ((fM == fM))
12841276 then {
12851277 let fL = bd(hk)
12861278 let ha = eS.payments[0]
12871279 let fh = ha.assetId
12881280 let ft = ha.amount
12891281 let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
12901282 if ((ez == ez))
12911283 then {
12921284 let ab = eS.caller
12931285 let ac = eS.transactionId
12941286 let hm = fK(fL, ft, fh, ab, ac)
12951287 if ((hm == hm))
12961288 then {
12971289 let fN = hm._5
12981290 let hc = hm._4
12991291 let fe = hm._3
13001292 let el = hm._2
13011293 let hn = hm._1
13021294 let bW = if (if ((gW > 0))
13031295 then (gW > hn)
13041296 else false)
13051297 then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
13061298 else hn
13071299 let ho = invoke(aT, "burn", [ft], [AttachedPayment(fh, ft)])
13081300 if ((ho == ho))
13091301 then {
13101302 let gC = cK(hk, bW)
1311- if ((gC == gC))
1312- then {
1313- let hp = [ScriptTransfer(ab, bW, fL)]
1314- let hg = if ((fe > 0))
1315- then [ScriptTransfer(aU, fe, fL)]
1316- else nil
1317- let hq = {
1318- let hr = if ((this == aU))
1319- then 0
1320- else fe
1321- if (fN)
1322- then $Tuple2(-((bW + hr)), 0)
1323- else $Tuple2(0, -((bW + hr)))
1324- }
1325- let eB = hq._1
1326- let eC = hq._2
1327- let hs = eA(eB, eC, 0)
1328- let gR = hs._1
1329- let er = hs._2
1330- let gS = eE(ez, er)
1331- if ((gS == gS))
1332- then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
1333- else throw("Strict value is not equal to itself.")
1334- }
1303+ let hp = [ScriptTransfer(ab, bW, fL)]
1304+ let hg = if ((fe > 0))
1305+ then [ScriptTransfer(aU, fe, fL)]
1306+ else nil
1307+ let hq = {
1308+ let hr = if ((this == aU))
1309+ then 0
1310+ else fe
1311+ if (fN)
1312+ then $Tuple2(-((bW + hr)), 0)
1313+ else $Tuple2(0, -((bW + hr)))
1314+ }
1315+ let eB = hq._1
1316+ let eC = hq._2
1317+ let hs = eA(eB, eC, 0)
1318+ let gR = hs._1
1319+ let er = hs._2
1320+ let gS = eE(ez, er)
1321+ if ((gS == gS))
1322+ then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
13351323 else throw("Strict value is not equal to itself.")
13361324 }
13371325 else throw("Strict value is not equal to itself.")
13381326 }
13391327 else throw("Strict value is not equal to itself.")
13401328 }
13411329 else throw("Strict value is not equal to itself.")
13421330 }
13431331 else throw("Strict value is not equal to itself.")
13441332 }
13451333
13461334
13471335
13481336 @Callable(eS)
13491337 func getOneTknREADONLY (fL,ft) = {
13501338 let ht = fK(bd(fL), ft, bm, unit, unit)
13511339 let hn = ht._1
13521340 let el = ht._2
13531341 let fe = ht._3
13541342 let hc = ht._4
13551343 let fN = ht._5
13561344 $Tuple2(nil, $Tuple3(hn, fe, hc))
13571345 }
13581346
13591347
13601348
13611349 @Callable(eS)
13621350 func unstakeAndGetOneTkn (hu,hk,gW) = {
13631351 let gY = {
13641352 let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13651353 if ($isInstanceOf(aW, "Boolean"))
13661354 then aW
13671355 else throw(($getType(aW) + " couldn't be cast to Boolean"))
13681356 }
13691357 let hl = if (if (aY())
13701358 then true
13711359 else (bl == n))
13721360 then true
13731361 else gY
13741362 let fM = [if (if (!(hl))
13751363 then true
13761364 else gh(eS))
13771365 then true
13781366 else aQ("get operation is blocked by admin"), if ((size(eS.payments) == 0))
13791367 then true
13801368 else aQ("no payments are expected")]
13811369 if ((fM == fM))
13821370 then {
13831371 let fL = bd(hk)
13841372 let ab = eS.caller
13851373 let ac = eS.transactionId
13861374 let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
13871375 if ((ez == ez))
13881376 then {
13891377 let hv = invoke(bs, "unstake", [toBase58String(bm), hu], nil)
13901378 if ((hv == hv))
13911379 then {
13921380 let hw = fK(fL, hu, bm, ab, ac)
13931381 if ((hw == hw))
13941382 then {
13951383 let fN = hw._5
13961384 let hc = hw._4
13971385 let fe = hw._3
13981386 let el = hw._2
13991387 let hn = hw._1
14001388 let bW = if (if ((gW > 0))
14011389 then (gW > hn)
14021390 else false)
14031391 then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
14041392 else hn
14051393 let ho = invoke(aT, "burn", [hu], [AttachedPayment(bm, hu)])
14061394 if ((ho == ho))
14071395 then {
14081396 let gC = cK(hk, bW)
1409- if ((gC == gC))
1410- then {
1411- let hp = [ScriptTransfer(eS.caller, bW, fL)]
1412- let hg = if ((fe > 0))
1413- then [ScriptTransfer(aU, fe, fL)]
1414- else nil
1415- let hx = {
1416- let hr = if ((this == aU))
1417- then 0
1418- else fe
1419- if (fN)
1420- then $Tuple2(-((bW + hr)), 0)
1421- else $Tuple2(0, -((bW + hr)))
1422- }
1423- let eB = hx._1
1424- let eC = hx._2
1425- let hy = eA(eB, eC, 0)
1426- let gR = hy._1
1427- let er = hy._2
1428- let gS = eE(ez, er)
1429- if ((gS == gS))
1430- then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
1431- else throw("Strict value is not equal to itself.")
1432- }
1397+ let hp = [ScriptTransfer(eS.caller, bW, fL)]
1398+ let hg = if ((fe > 0))
1399+ then [ScriptTransfer(aU, fe, fL)]
1400+ else nil
1401+ let hx = {
1402+ let hr = if ((this == aU))
1403+ then 0
1404+ else fe
1405+ if (fN)
1406+ then $Tuple2(-((bW + hr)), 0)
1407+ else $Tuple2(0, -((bW + hr)))
1408+ }
1409+ let eB = hx._1
1410+ let eC = hx._2
1411+ let hy = eA(eB, eC, 0)
1412+ let gR = hy._1
1413+ let er = hy._2
1414+ let gS = eE(ez, er)
1415+ if ((gS == gS))
1416+ then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
14331417 else throw("Strict value is not equal to itself.")
14341418 }
14351419 else throw("Strict value is not equal to itself.")
14361420 }
14371421 else throw("Strict value is not equal to itself.")
14381422 }
14391423 else throw("Strict value is not equal to itself.")
14401424 }
14411425 else throw("Strict value is not equal to itself.")
14421426 }
14431427 else throw("Strict value is not equal to itself.")
14441428 }
14451429
14461430
14471431
14481432 @Callable(eS)
14491433 func get () = {
14501434 let dW = eR(eS)
14511435 let hz = dW._1
14521436 let dB = dW._2
14531437 let eU = dW._3
14541438 let dj = dW._4
14551439 let dE = dW._5
14561440 let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
14571441 if ((ez == ez))
14581442 then {
14591443 let hA = invoke(aT, "burn", [eU], [AttachedPayment(dj, eU)])
14601444 if ((hA == hA))
14611445 then {
14621446 let hB = eA(-(hz), -(dB), 0)
14631447 let gR = hB._1
14641448 let er = hB._2
14651449 let gS = eE(ez, er)
14661450 if ((gS == gS))
14671451 then (dE ++ gR)
14681452 else throw("Strict value is not equal to itself.")
14691453 }
14701454 else throw("Strict value is not equal to itself.")
14711455 }
14721456 else throw("Strict value is not equal to itself.")
14731457 }
14741458
14751459
14761460
14771461 @Callable(eS)
14781462 func getNoLess (hC,hD) = {
14791463 let dW = eR(eS)
14801464 let dA = dW._1
14811465 let dB = dW._2
14821466 let eU = dW._3
14831467 let dj = dW._4
14841468 let dE = dW._5
14851469 if ((hC > dA))
14861470 then throw(((("noLessThenAmtAsset failed: " + toString(dA)) + " < ") + toString(hC)))
14871471 else if ((hD > dB))
14881472 then throw(((("noLessThenPriceAsset failed: " + toString(dB)) + " < ") + toString(hD)))
14891473 else {
14901474 let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
14911475 if ((ez == ez))
14921476 then {
14931477 let hA = invoke(aT, "burn", [eU], [AttachedPayment(dj, eU)])
14941478 if ((hA == hA))
14951479 then {
14961480 let hE = eA(-(dA), -(dB), 0)
14971481 let gR = hE._1
14981482 let er = hE._2
14991483 let gS = eE(ez, er)
15001484 if ((gS == gS))
15011485 then (dE ++ gR)
15021486 else throw("Strict value is not equal to itself.")
15031487 }
15041488 else throw("Strict value is not equal to itself.")
15051489 }
15061490 else throw("Strict value is not equal to itself.")
15071491 }
15081492 }
15091493
15101494
15111495
15121496 @Callable(eS)
15131497 func unstakeAndGet (bW) = {
15141498 let hF = if ((size(eS.payments) != 0))
15151499 then throw("No payments are expected")
15161500 else true
15171501 if ((hF == hF))
15181502 then {
15191503 let cY = ba()
15201504 let dl = fromBase58String(cY[q])
15211505 let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
15221506 if ((ez == ez))
15231507 then {
15241508 let hv = invoke(bs, "unstake", [toBase58String(dl), bW], nil)
15251509 if ((hv == hv))
15261510 then {
15271511 let dW = dh(toBase58String(eS.transactionId), toBase58String(dl), bW, eS.caller)
15281512 let dA = dW._1
15291513 let dB = dW._2
15301514 let do = parseIntValue(dW._9)
15311515 let dE = dW._10
15321516 let hG = if (if (aY())
15331517 then true
15341518 else (do == n))
15351519 then throw(("Get operation is blocked by admin. Status = " + toString(do)))
15361520 else true
15371521 if ((hG == hG))
15381522 then {
15391523 let hA = invoke(aT, "burn", [bW], [AttachedPayment(dl, bW)])
15401524 if ((hA == hA))
15411525 then {
15421526 let hH = eA(-(dA), -(dB), 0)
15431527 let gR = hH._1
15441528 let er = hH._2
15451529 let gS = eE(ez, er)
15461530 if ((gS == gS))
15471531 then (dE ++ gR)
15481532 else throw("Strict value is not equal to itself.")
15491533 }
15501534 else throw("Strict value is not equal to itself.")
15511535 }
15521536 else throw("Strict value is not equal to itself.")
15531537 }
15541538 else throw("Strict value is not equal to itself.")
15551539 }
15561540 else throw("Strict value is not equal to itself.")
15571541 }
15581542 else throw("Strict value is not equal to itself.")
15591543 }
15601544
15611545
15621546
15631547 @Callable(eS)
15641548 func unstakeAndGetNoLess (hu,hI,hD) = {
15651549 let hl = if (aY())
15661550 then true
15671551 else (bl == n)
15681552 let fM = [if (!(hl))
15691553 then true
15701554 else throw("get operation is blocked by admin"), if ((size(eS.payments) == 0))
15711555 then true
15721556 else throw("no payments are expected")]
15731557 if ((fM == fM))
15741558 then {
15751559 let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
15761560 if ((ez == ez))
15771561 then {
15781562 let hv = invoke(bs, "unstake", [toBase58String(bm), hu], nil)
15791563 if ((hv == hv))
15801564 then {
15811565 let dW = dh(toBase58String(eS.transactionId), toBase58String(bm), hu, eS.caller)
15821566 let dA = dW._1
15831567 let dB = dW._2
15841568 let dE = dW._10
15851569 let hJ = [if ((dA >= hI))
15861570 then true
15871571 else throw(makeString(["amount asset amount to receive is less than ", toString(hI)], "")), if ((dB >= hD))
15881572 then true
15891573 else throw(makeString(["price asset amount to receive is less than ", toString(hD)], ""))]
15901574 if ((hJ == hJ))
15911575 then {
15921576 let hA = invoke(aT, "burn", [hu], [AttachedPayment(bm, hu)])
15931577 if ((hA == hA))
15941578 then {
15951579 let hK = eA(-(dA), -(dB), 0)
15961580 let gR = hK._1
15971581 let er = hK._2
15981582 let gS = eE(ez, er)
15991583 if ((gS == gS))
16001584 then (dE ++ gR)
16011585 else throw("Strict value is not equal to itself.")
16021586 }
16031587 else throw("Strict value is not equal to itself.")
16041588 }
16051589 else throw("Strict value is not equal to itself.")
16061590 }
16071591 else throw("Strict value is not equal to itself.")
16081592 }
16091593 else throw("Strict value is not equal to itself.")
16101594 }
16111595 else throw("Strict value is not equal to itself.")
16121596 }
16131597
16141598
16151599
16161600 @Callable(eS)
16171601 func activate (hL,hM) = if ((toString(eS.caller) != toString(aT)))
16181602 then throw("permissions denied")
16191603 else $Tuple2([StringEntry(ae(), hL), StringEntry(af(), hM)], "success")
16201604
16211605
16221606
16231607 @Callable(eS)
16241608 func refreshKLp () = {
16251609 let hN = valueOrElse(getInteger(ak), 0)
16261610 let hO = if (((height - hN) >= an))
16271611 then unit
16281612 else aQ(makeString([toString(an), " blocks have not passed since the previous call"], ""))
16291613 if ((hO == hO))
16301614 then {
16311615 let eL = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
16321616 let hP = eA(0, 0, 0)
16331617 let hQ = hP._1
16341618 let er = hP._2
16351619 let eD = if ((eL != er))
16361620 then hQ
16371621 else aQ("nothing to refresh")
16381622 $Tuple2(eD, toString(er))
16391623 }
16401624 else throw("Strict value is not equal to itself.")
16411625 }
16421626
16431627
16441628
16451629 @Callable(eS)
16461630 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, ba())
16471631
16481632
16491633
16501634 @Callable(eS)
16511635 func getAccBalanceWrapperREADONLY (ap) = $Tuple2(nil, bJ(ap))
16521636
16531637
16541638
16551639 @Callable(eS)
16561640 func calcPricesWrapperREADONLY (cS,cT,cX) = {
16571641 let dg = cW(cS, cT, cX)
16581642 $Tuple2(nil, [toString(dg[0]), toString(dg[1]), toString(dg[2])])
16591643 }
16601644
16611645
16621646
16631647 @Callable(eS)
16641648 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
16651649
16661650
16671651
16681652 @Callable(eS)
16691653 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
16701654
16711655
16721656
16731657 @Callable(eS)
16741658 func calcPriceBigIntWrapperREADONLY (bN,bO) = $Tuple2(nil, toString(bM(parseBigIntValue(bN), parseBigIntValue(bO))))
16751659
16761660
16771661
16781662 @Callable(eS)
16791663 func estimatePutOperationWrapperREADONLY (di,dG,dH,dI,dJ,dK,ab,dL,dM) = $Tuple2(nil, dF(di, dG, dH, dI, dJ, dK, ab, dL, dM))
16801664
16811665
16821666
16831667 @Callable(eS)
16841668 func estimateGetOperationWrapperREADONLY (di,dj,dk,ab) = {
16851669 let dW = dh(di, dj, dk, addressFromStringValue(ab))
16861670 $Tuple2(nil, $Tuple10(dW._1, dW._2, dW._3, dW._4, dW._5, dW._6, dW._7, toString(dW._8), dW._9, dW._10))
16871671 }
16881672
16891673
16901674
16911675 @Callable(eS)
16921676 func statsREADONLY () = {
16931677 let cY = ba()
16941678 let dl = fromBase58String(cY[q])
16951679 let hR = cY[r]
16961680 let hS = cY[s]
16971681 let dP = cY[v]
16981682 let dQ = cY[w]
16991683 let cZ = parseIntValue(cY[t])
17001684 let da = parseIntValue(cY[u])
17011685 let hT = valueOrErrorMessage(assetInfo(dl), (("Asset " + toBase58String(dl)) + " doesn't exist")).quantity
17021686 let hU = bJ(hR)
17031687 let hV = bJ(hS)
17041688 let hW = if ((hT == 0))
17051689 then [e, e, e]
17061690 else cW(hU, hV, hT)
17071691 let dv = 0
17081692 let hX = H(hW[1], b)
17091693 let hY = H(hW[2], b)
17101694 let hZ = value(getInteger(aT, aD(toString(this))))
17111695 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hU), toString(hV), toString(hT), toString(dv), toString(hX), toString(hY), toString(hZ)], j))
17121696 }
17131697
17141698
17151699
17161700 @Callable(eS)
17171701 func evaluatePutByAmountAssetREADONLY (dH) = {
17181702 let cY = ba()
17191703 let dl = fromBase58String(cY[q])
17201704 let dN = cY[r]
17211705 let dm = fromBase58String(dN)
17221706 let dO = cY[s]
17231707 let dn = fromBase58String(dO)
17241708 let cZ = parseIntValue(cY[t])
17251709 let da = parseIntValue(cY[u])
17261710 let do = cY[p]
17271711 let hT = valueOrErrorMessage(assetInfo(dl), (("Asset " + toBase58String(dl)) + " doesn't exist")).quantity
17281712 let hU = bJ(dN)
17291713 let hV = bJ(dO)
17301714 let cU = D(hU, cZ)
17311715 let cV = D(hV, da)
17321716 let du = if ((hT == 0))
17331717 then e
17341718 else bM(cV, cU)
17351719 let dT = D(dH, cZ)
17361720 let dU = fraction(dT, du, d)
17371721 let dJ = H(dU, da)
17381722 let eY = dF("", 500000, dH, dm, dJ, dn, "", true, false)
17391723 let ee = eY._1
17401724 let ia = eY._3
17411725 let dq = eY._4
17421726 let ds = eY._5
17431727 let dp = eY._6
17441728 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ee), toString(H(du, b)), toString(dq), toString(ds), toString(dp), do, toString(dH), toString(dJ)], j))
17451729 }
17461730
17471731
17481732
17491733 @Callable(eS)
17501734 func evaluatePutByPriceAssetREADONLY (dJ) = {
17511735 let cY = ba()
17521736 let dl = fromBase58String(cY[q])
17531737 let dN = cY[r]
17541738 let dm = fromBase58String(dN)
17551739 let dO = cY[s]
17561740 let dn = fromBase58String(dO)
17571741 let cZ = parseIntValue(cY[t])
17581742 let da = parseIntValue(cY[u])
17591743 let do = cY[p]
17601744 let hT = valueOrErrorMessage(assetInfo(dl), (("Asset " + toBase58String(dl)) + " doesn't exist")).quantity
17611745 let ib = bJ(dN)
17621746 let ic = bJ(dO)
17631747 let id = D(ib, cZ)
17641748 let ie = D(ic, da)
17651749 let du = if ((hT == 0))
17661750 then e
17671751 else bM(ie, id)
17681752 let dU = D(dJ, da)
17691753 let dT = fraction(dU, d, du)
17701754 let dH = H(dT, cZ)
17711755 let eY = dF("", 500000, dH, dm, dJ, dn, "", true, false)
17721756 let ee = eY._1
17731757 let ia = eY._3
17741758 let dq = eY._4
17751759 let ds = eY._5
17761760 let dp = eY._6
17771761 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ee), toString(H(du, b)), toString(dq), toString(ds), toString(dp), do, toString(dH), toString(dJ)], j))
17781762 }
17791763
17801764
17811765
17821766 @Callable(eS)
17831767 func evaluateGetREADONLY (if,ig) = {
17841768 let dW = dh("", if, ig, this)
17851769 let dA = dW._1
17861770 let dB = dW._2
17871771 let dq = dW._5
17881772 let ds = dW._6
17891773 let dp = dW._7
17901774 let dv = dW._8
17911775 let do = parseIntValue(dW._9)
17921776 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dA), toString(dB), toString(dq), toString(ds), toString(dp), toString(dv), toString(do)], j))
17931777 }
17941778
17951779
17961780 @Verifier(ih)
17971781 func ii () = {
17981782 let ij = {
17991783 let bT = ge()
18001784 if ($isInstanceOf(bT, "ByteVector"))
18011785 then {
18021786 let gi = bT
18031787 gi
18041788 }
18051789 else if ($isInstanceOf(bT, "Unit"))
18061790 then ih.senderPublicKey
18071791 else throw("Match error")
18081792 }
18091793 let bT = ih
18101794 if ($isInstanceOf(bT, "Order"))
18111795 then {
18121796 let eH = bT
18131797 let ik = aZ()
18141798 let il = eG(eH)
18151799 let aI = il._1
18161800 let aJ = il._2
18171801 let aK = sigVerify(eH.bodyBytes, eH.proofs[0], eH.senderPublicKey)
18181802 let aL = sigVerify(eH.bodyBytes, eH.proofs[1], ik)
18191803 if (if (if (aI)
18201804 then aK
18211805 else false)
18221806 then aL
18231807 else false)
18241808 then true
18251809 else aH(aI, aJ, aK, aL)
18261810 }
18271811 else if ($isInstanceOf(bT, "SetScriptTransaction"))
18281812 then {
18291813 let gf = bT
18301814 if (sigVerify(ih.bodyBytes, ih.proofs[0], ij))
18311815 then true
18321816 else {
18331817 let im = blake2b256(value(gf.script))
18341818 let in = fromBase64String(value(getString(aT, aF())))
18351819 let io = scriptHash(this)
18361820 if ((in == im))
18371821 then (io != im)
18381822 else false
18391823 }
18401824 }
18411825 else sigVerify(ih.bodyBytes, ih.proofs[0], ij)
18421826 }
18431827

github/deemru/w8io/873ac7e 
160.20 ms