tx · 145XBoGWuDJUfYWF54bid5hxHfWcjp9LRTgsJwKLFP7q

3Msa444cj3rGwoUM28fK5iMwFXn61SfJpqs:  -0.03100000 Waves

2022.11.21 16:55 [2326965] smart account 3Msa444cj3rGwoUM28fK5iMwFXn61SfJpqs > SELF 0.00000000 Waves

{ "type": 13, "id": "145XBoGWuDJUfYWF54bid5hxHfWcjp9LRTgsJwKLFP7q", "fee": 3100000, "feeAssetId": null, "timestamp": 1669038958985, "version": 1, "sender": "3Msa444cj3rGwoUM28fK5iMwFXn61SfJpqs", "senderPublicKey": "Fv4cVRzKj6MwfJQ2BrrtpyPyc3dSbKxA91GqxHZCCqC3", "proofs": [ "28d4KSUvhAiY6p7hS8u3qmaKWzLoxM8eUMAu2t8WBSAWDkAB9re19AGYmq9MYBd8egcn8iMBgtjZACZ1C5G8mGCy" ], "script": "base64:BgK8JwgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASAwoBCBIFCgMBAQESBAoCAQESBAoCCAESBAoCCAgSCwoJCAEBAgECCAQEEgYKBAgIAQgSABIDCgEBEgMKAQESBAoCCAEiCmxQZGVjaW1hbHMiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgt3YXZlc1N0cmluZyIDU0VQIgpQb29sQWN0aXZlIg9Qb29sUHV0RGlzYWJsZWQiE1Bvb2xNYXRjaGVyRGlzYWJsZWQiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiDWlkeFBvb2xTdGF0dXMiEGlkeFBvb2xMUEFzc2V0SWQiDWlkeEFtdEFzc2V0SWQiD2lkeFByaWNlQXNzZXRJZCIOaWR4QW10QXNzZXREY20iEGlkeFByaWNlQXNzZXREY20iDmlkeElBbXRBc3NldElkIhBpZHhJUHJpY2VBc3NldElkIg1pZHhMUEFzc2V0RGNtIhJpZHhQb29sQW10QXNzZXRBbXQiFGlkeFBvb2xQcmljZUFzc2V0QW10IhFpZHhQb29sTFBBc3NldEFtdCIZaWR4RmFjdG9yeVN0YWtpbmdDb250cmFjdCIaaWR4RmFjdG9yeVNsaXBwYWdlQ29udHJhY3QiBXRvWDE4IgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0Igdmcm9tWDE4IgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIHdG9TY2FsZSIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50IgJmYyIDbXBrIgRwbXBrIgJwbCICcGgiAWgiCXRpbWVzdGFtcCIDcGF1Igt1c2VyQWRkcmVzcyIEdHhJZCIDZ2F1IgJhYSICcGEiBmtleUZlZSIKZmVlRGVmYXVsdCIDZmVlIhBrZXlGYWN0b3J5Q29uZmlnIg1rZXlNYXRjaGVyUHViIilrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cyITcG9vbENvbnRyYWN0QWRkcmVzcyINa2V5UG9vbENvbmZpZyIJaUFtdEFzc2V0IgtpUHJpY2VBc3NldCIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIhNrZXlBbGxQb29sc1NodXRkb3duIg1rZXlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiFmtleUFsbG93ZWRMcFNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiD3Rocm93T3JkZXJFcnJvciIKb3JkZXJWYWxpZCILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIPZ2V0U3RyaW5nT3JGYWlsIgdhZGRyZXNzIgNrZXkiDGdldEludE9yRmFpbCIIdGhyb3dFcnIiA21zZyIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDc1NDQ3NzEwIg5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIQcHJpdmF0ZUNhbGNQcmljZSIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10Ig5hbXRBc3NldEFtdFgxOCIQcHJpY2VBc3NldEFtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyILYW10QXNzZXREY20iDXByaWNlQXNzZXREY20iCHByaWNlWDE4IghscEFtdFgxOCITbHBQcmljZUluQW1Bc3NldFgxOCITbHBQcmljZUluUHJBc3NldFgxOCIPY2FsY3VsYXRlUHJpY2VzIgZwcmljZXMiFGVzdGltYXRlR2V0T3BlcmF0aW9uIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10IglscEFzc2V0SWQiCWFtQXNzZXRJZCIJcHJBc3NldElkIgpwb29sU3RhdHVzIgpscEVtaXNzaW9uIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiDWxwRW1pc3Npb25YMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIUZXN0aW1hdGVQdXRPcGVyYXRpb24iEXNsaXBwYWdlVG9sZXJhbmNlIgxpbkFtQXNzZXRBbXQiC2luQW1Bc3NldElkIgxpblByQXNzZXRBbXQiC2luUHJBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiDGFtQXNzZXRJZFN0ciIMcHJBc3NldElkU3RyIgtpQW10QXNzZXRJZCINaVByaWNlQXNzZXRJZCIOaW5BbUFzc2V0SWRTdHIiDmluUHJBc3NldElkU3RyIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgNyZXMiC3NsaXBwYWdlWDE4IhRzbGlwcGFnZVRvbGVyYW5jZVgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiILY29tbW9uU3RhdGUiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiCmFtdEFzc2V0SWQiDHByaWNlQXNzZXRJZCISYWNjQW10QXNzZXRCYWxhbmNlIhRhY2NQcmljZUFzc2V0QmFsYW5jZSINb3JkZXJBbXRBc3NldCIQb3JkZXJBbXRBc3NldFN0ciIPb3JkZXJQcmljZUFzc2V0IhJvcmRlclByaWNlQXNzZXRTdHIiCm9yZGVyUHJpY2UiCHByaWNlRGNtIhBjYXN0ZWRPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiBmFtb3VudCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIHJG1hdGNoMCIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMjI1NzEyMjg2NCIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAyMjg2ODIzMDE3IhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDIzMTM5MjMxOTgiDXBheW1lbnRBbW91bnQiEGFtb3VudEJhbGFuY2VOZXciD3ByaWNlQmFsYW5jZU5ldyILcHJpY2VOZXdYMTgiCHByaWNlTmV3Ig5wYXltZW50QmFsYW5jZSIUcGF5bWVudEJhbGFuY2VCaWdJbnQiDHN1cHBseUJpZ0ludCILY2hlY2hTdXBwbHkiDWRlcG9zaXRCaWdJbnQiC2lzc3VlQW1vdW50IgtwcmljZU9sZFgxOCIIcHJpY2VPbGQiBGxvc3MiDSR0MDI0Njc1MjQ4NDIiB2JhbGFuY2UiD2lzc3VlQW1vdW50Qm90aCIPY2FsY0dldE9uZVRva2VuIgpvdXRBc3NldElkIgZjaGVja3MiEG91dEluQW1vdW50QXNzZXQiDWJhbGFuY2VCaWdJbnQiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIgpvdXRCYWxhbmNlIhBvdXRCYWxhbmNlQmlnSW50Ig5yZWRlZW1lZEJpZ0ludCIJYW1vdW50UmF3Ig0kdDAyNjQyMjI2NDcyIgt0b3RhbEFtb3VudCINJHQwMjY0NzYyNjcwMiILb3V0QW1BbW91bnQiC291dFByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIYYW1vdW50Qm90aEluUGF5bWVudEFzc2V0IhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IgFzIh1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdCIJaXNNYW5hZ2VyIgJwayILbXVzdE1hbmFnZXIiAnBkIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSILY2hlY2tDYWxsZXIiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIg9zaG91bGRBdXRvU3Rha2UiBGFtSWQiBHBySWQiDHNsaXBwYWdlQUludiIMc2xpcHBhZ2VQSW52IgpscFRyYW5zZmVyIgtzbHBTdGFrZUludiILbWF4U2xpcHBhZ2UiDG1pbk91dEFtb3VudCIJYXV0b1N0YWtlIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCIBQCINaXNQdXREaXNhYmxlZCIHcGF5bWVudCINJHQwMzE2MDkzMTczOSIFYm9udXMiE2VtaXRBbW91bnRFc3RpbWF0ZWQiCmVtaXRBbW91bnQiCHN0YWtlSW52IgdzZW5kRmVlIg0kdDAzMjQ2ODMyNjAzIg1vdXRBc3NldElkU3RyIg1pc0dldERpc2FibGVkIg0kdDAzMzQwODMzNTQzIg9hbW91bnRFc3RpbWF0ZWQiB2J1cm5JbnYiDWFzc2V0VHJhbnNmZXIiDSR0MDM0MTc4MzQzMTYiDXVuc3Rha2VBbW91bnQiCnVuc3Rha2VJbnYiDSR0MDM1MTQxMzUyNzQiCW91dEFtdEFtdCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiDWNoZWNrUGF5bWVudHMiD2NoZWNrUG9vbFN0YXR1cyIVbm9MZXNzVGhlbkFtb3VudEFzc2V0IgxjaGVja0Ftb3VudHMiC2FtdEFzc2V0U3RyIg1wcmljZUFzc2V0U3RyIg1wb29sTFBCYWxhbmNlIgpwcmljZXNMaXN0Ig9scEFtdEFzc2V0U2hhcmUiEWxwUHJpY2VBc3NldFNoYXJlIgpwb29sV2VpZ2h0IgxjdXJQcmljZUNhbGMiDGFtQmFsYW5jZVJhdyIMcHJCYWxhbmNlUmF3Ig9hbUJhbGFuY2VSYXdYMTgiD3ByQmFsYW5jZVJhd1gxOCIQcGF5bWVudExwQXNzZXRJZCIMcGF5bWVudExwQW10IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaGMAAWEACAABYgCAwtcvAAFjCQC2AgEAgMLXLwABZAkAtgIBAICAkLu61q3wDQABZQkAtgIBAAAAAWYJALYCAQAAAAFnCQC2AgEAAQABaAkAtgIBAAIAAWkCBVdBVkVTAAFqAgJfXwABawABAAFsAAIAAW0AAwABbgAEAAFvAAEAAXAAAgABcQADAAFyAAQAAXMABQABdAAGAAF1AAcAAXYACAABdwAJAAF4AAoAAXkAAQABegACAAFBAAMAAUIAAQABQwAHAQFEAgFFAUYJALwCAwkAtgIBBQFFBQFkCQC2AgEFAUYBAUcCAUgBSQkAoAMBCQC8AgMFAUgJALYCAQUBSQUBZAEBSgMBSwFMAU0JAGsDBQFLBQFMBQFNAQFOAQFIAwkAZgIAAAUBSAkBAS0BBQFIBQFIAQFPAQFIAwkAvwICBQFlBQFICQC+AgEFAUgFAUgBAVAAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFRAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVIAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVMAAhElcyVzX19wcmljZV9fbGFzdAEBVAIBVQFWCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBVQkAzAgCCQCkAwEFAVYFA25pbAUBagEBVwIBWAFZCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUBWAICX18FAVkBAVoCAVgBWQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAVgCAl9fBQFZAQJhYQACDyVzX19hbW91bnRBc3NldAECYWIAAg4lc19fcHJpY2VBc3NldAACYWMCByVzX19mZWUAAmFkCQBrAwAKBQFiAJBOAAJhZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhYwUCYWQBAmFmAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFnAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhaAECYWkJAKwCAgkArAICAgglcyVzJXNfXwUCYWkCIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0AQJhagICYWsCYWwJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFrAgJfXwUCYWwCCF9fY29uZmlnAQJhbQECYW4JAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYW4BAmFvAAIMJXNfX3NodXRkb3duAQJhcAECYXEJAKwCAgISJXMlc19fcG9vbFdlaWdodF9fBQJhcQECYXIAAhclc19fYWxsb3dlZExwU2NyaXB0SGFzaAACYXMCFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhdAMCYXUCYXYCYXcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIkb3JkZXIgdmFsaWRhdGlvbiBmYWlsZWQ6IG9yZGVyVmFsaWQ9CQClAwEFAmF1Ag0gc2VuZGVyVmFsaWQ9CQClAwEFAmF2Ag4gbWF0Y2hlclZhbGlkPQkApQMBBQJhdwECYXgCAmF5AmF6CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYXkFAmF6CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF5CQDMCAICAS4JAMwIAgUCYXoJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYUECAmF5AmF6CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYXkFAmF6CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF5CQDMCAICAS4JAMwIAgUCYXoJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYUIBAmFDCQACAQkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmFDBQNuaWwCASAAAmFECQERQGV4dHJOYXRpdmUoMTA2MikBCQECYXgCBQR0aGlzCQEBUAAAAmFFCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYXgCBQJhRAUCYXMBAmFGAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhRAkBAmFvAAcBAmFHAAkA2QQBCQECYXgCBQJhRAkBAmFnAAECYUgABAJhSQkBAmF4AgUEdGhpcwkBAmFhAAQCYUoJAQJheAIFBHRoaXMJAQJhYgAEAmFsCQECYUECBQJhRAkBAmFtAQUCYUoEAmFrCQECYUECBQJhRAkBAmFtAQUCYUkJALUJAgkBAmF4AgUCYUQJAQJhagIJAKQDAQUCYWsJAKQDAQUCYWwFAWoBAmFLAQJhTAMJAAACBQJhTAUBaQUEdW5pdAkA2QQBBQJhTAECYU0BAmFMAwkAAAIFAmFMBQR1bml0BQFpCQDYBAEJAQV2YWx1ZQEFAmFMAQJhTgECYU8JAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhTwUBbwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFPBQFwCQDZBAEJAJEDAgUCYU8FAXEJAQJhSwEJAJEDAgUCYU8FAXIJAQJhSwEJAJEDAgUCYU8FAXMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhTwUBdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFPBQF1AAJhUAkBAmFOAQkBAmFIAAACYVEFAmFQAAJhUggFAmFRAl8xAAJhUwgFAmFRAl8yAAJhVAgFAmFRAl8zAAJhVQgFAmFRAl80AAJhVggFAmFRAl81AAJhVwgFAmFRAl82AAJhWAgFAmFRAl83AQJhWQAJALUJAgkBAmF4AgUCYUQJAQJhZgAFAWoAAmFaCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYVkABQFCAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAAJiYQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmFZAAUBQwIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwECYmIKAmJjAmJkAmJlAmJmAmJnAmJoAmJpAmJqAmJrAmJsCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiYwkAzAgCCQCkAwEFAmJkCQDMCAIJAKQDAQUCYmUJAMwIAgkApAMBBQJiZgkAzAgCCQCkAwEFAmJnCQDMCAIJAKQDAQUCYmgJAMwIAgkApAMBBQJiaQkAzAgCCQCkAwEFAmJqCQDMCAIJAKQDAQUCYmsJAMwIAgkApAMBBQJibAUDbmlsBQFqAQJibQYCYm4CYm8CYnACYmYCYmkCYmoJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJibgkAzAgCCQCkAwEFAmJvCQDMCAIJAKQDAQUCYnAJAMwIAgkApAMBBQJiZgkAzAgCCQCkAwEFAmJpCQDMCAIJAKQDAQUCYmoFA25pbAUBagECYnEBAmJyAwkAAAIFAmJyAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJicgECYnMCAmJ0AmJ1CQC8AgMFAmJ0BQFkBQJidQECYnYEAmJ3AmJ4AmJ5AmJ6BAJiQQkBAUQCBQJieQUCYncEAmJCCQEBRAIFAmJ6BQJieAkBAmJzAgUCYkIFAmJBAQJiQwMCYnkCYnoCYkQEAmJFCQECYUgABAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJiSAkBAmJ2BAUCYkYFAmJHBQJieQUCYnoEAmJ1CQEBRAIFAmJ5BQJiRgQCYnQJAQFEAgUCYnoFAmJHBAJiSQkBAUQCBQJiRAUBYgQCYkoJAQJicwIFAmJ1BQJiSQQCYksJAQJicwIFAmJ0BQJiSQkAzAgCBQJiSAkAzAgCBQJiSgkAzAgCBQJiSwUDbmlsAQJiTAMCYnkCYnoCYkQEAmJNCQECYkMDBQJieQUCYnoFAmJECQDMCAIJAQFHAgkAkQMCBQJiTQAABQFiCQDMCAIJAQFHAgkAkQMCBQJiTQABBQFiCQDMCAIJAQFHAgkAkQMCBQJiTQACBQFiBQNuaWwBAmJOBAJiTwJiUAJiUQFYBAJiRQkBAmFIAAQCYlIJAJEDAgUCYkUFAXEEAmJTCQCRAwIFAmJFBQFyBAJiVAkAkQMCBQJiRQUBcwQCYncJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdAQCYngJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdQQCYlUJAJEDAgUCYkUFAXAEAmJWCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCYlIJAKwCAgkArAICAgZBc3NldCAFAmJSAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQMJAQIhPQIFAmJSBQJiUAkAAgECFUludmFsaWQgYXNzZXQgcGFzc2VkLgQCYlcJAQJicQEFAmJTBAJiWAkBAUQCBQJiVwUCYncEAmJZCQECYnEBBQJiVAQCYloJAQFEAgUCYlkFAmJ4BAJjYQkBAmJzAgUCYloFAmJYBAJjYgkBAUcCBQJjYQUBYgQCY2MJAQFEAgUCYlEFAWIEAmNkCQEBRAIFAmJWBQFiBAJjZQkAvAIDBQJiWAUCY2MFAmNkBAJjZgkAvAIDBQJiWgUCY2MFAmNkBAJjZwkBAUcCBQJjZQUCYncEAmNoCQEBRwIFAmNmBQJieAQCY2kDCQAAAgUCYk8CAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVgFAmNnAwkAAAIFAmJTAgVXQVZFUwUEdW5pdAkA2QQBBQJiUwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFYBQJjaAMJAAACBQJiVAIFV0FWRVMFBHVuaXQJANkEAQUCYlQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoCCQClCAEFAVgFAmJPCQECYm0GBQJjZwUCY2gFAmJRBQJjYgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJjYgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjYgUDbmlsCQCcCgoFAmNnBQJjaAUCYlMFAmJUBQJiVwUCYlkFAmJWBQJjYQUCYlUFAmNpAQJjagkCYk8CY2sCY2wCY20CY24CY28BWAJjcAJjcQQCYkUJAQJhSAAEAmJSCQDZBAEJAJEDAgUCYkUFAXEEAmNyCQCRAwIFAmJFBQFyBAJjcwkAkQMCBQJiRQUBcwQCY3QJAJEDAgUCYkUFAXYEAmN1CQCRAwIFAmJFBQF3BAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJiVQkAkQMCBQJiRQUBcAQCYlYICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlIJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlICDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjdgkA2AQBCQELdmFsdWVPckVsc2UCBQJjbQkA2QQBAgVXQVZFUwQCY3cJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY28JANkEAQIFV0FWRVMDAwkBAiE9AgUCY3IFAmN2BgkBAiE9AgUCY3MFAmN3CQACAQIiSW52YWxpZCBhbXQgb3IgcHJpY2UgYXNzZXQgcGFzc2VkLgQCYlcDBQJjcAkBAmJxAQUCY3IJAGUCCQECYnEBBQJjcgUCY2wEAmJZAwUCY3AJAQJicQEFAmNzCQBlAgkBAmJxAQUCY3MFAmNuBAJjeAkBAUQCBQJjbAUCYkYEAmN5CQEBRAIFAmNuBQJiRwQCY3oJAQJicwIFAmN5BQJjeAQCYlgJAQFEAgUCYlcFAmJGBAJiWgkBAUQCBQJiWQUCYkcEAmNBAwkAAAIFAmJWAAAEAmNhBQFlBAJjQgUBZQQCYkkJAHYGCQC5AgIFAmN4BQJjeQAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUcCBQJiSQUBYgkBAUcCBQJjeAUCYkYJAQFHAgUCY3kFAmJHCQECYnMCCQC3AgIFAmJaBQJjeQkAtwICBQJiWAUCY3gFAmNCBAJjYQkBAmJzAgUCYloFAmJYBAJjQgkAvAIDCQEBTwEJALgCAgUCY2EFAmN6BQFkBQJjYQQCY0MJAQFEAgUCY2sFAWIDAwkBAiE9AgUCY2EFAWUJAL8CAgUCY0IFAmNDBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJjQgIeIGV4Y2VlZGVkIHRoZSBwYXNzZWQgbGltaXQgb2YgCQCmAwEFAmNDBAJjZAkBAUQCBQJiVgUBYgQCY0QJALwCAwUCY3gFAmNhBQFkBAJjRQkAvAIDBQJjeQUBZAUCY2EEAmNGAwkAvwICBQJjRAUCY3kJAJQKAgUCY0UFAmN5CQCUCgIFAmN4BQJjRAQCY0cIBQJjRgJfMQQCY0gIBQJjRgJfMgQCYkkJALwCAwUCY2QFAmNIBQJiWgkAlwoFCQEBRwIFAmJJBQFiCQEBRwIFAmNHBQJiRgkBAUcCBQJjSAUCYkcFAmNhBQJjQgQCY0kIBQJjQQJfMQQCY0oIBQJjQQJfMgQCY0sIBQJjQQJfMwQCY2IJAQFHAggFAmNBAl80BQFiBAJjTAkBAUcCCAUCY0ECXzUFAWIDCQBnAgAABQJjSQkAAgECNkludmFsaWQgY2FsY3VsYXRpb25zLiBMUCBjYWxjdWxhdGVkIGlzIGxlc3MgdGhhbiB6ZXJvLgQCY00DCQEBIQEFAmNxAAAFAmNJBAJjTgkAZQIFAmNsBQJjSgQCY08JAGUCBQJjbgUCY0sEAmNQCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwAFAmNiCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNiCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFXAgUBWAUCYk8JAQJiYgoFAmNKBQJjSwUCY00FAmNiBQJjawUCY0wFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNOBQJjTwUDbmlsCQCfCg0FAmNJBQJjTQUCY2IFAmJXBQJiWQUCYlYFAmJSBQJiVQUCY1AFAmNOBQJjTwUCY20FAmNvAQJjUQECY1IEAmJFCQECYUgABAJjUwkAkQMCBQJiRQUBcgQCY1QJAJEDAgUCYkUFAXMEAmJVCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXAEAmJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXQEAmJHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXUEAmNVCQECYnEBBQJjUwQCY1YJAQJicQEFAmNUBAJjYQMJAAACCAUCY1IJb3JkZXJUeXBlBQNCdXkJAQJidgQFAmJGBQJiRwkAZAIFAmNVCAUCY1IGYW1vdW50BQJjVgkBAmJ2BAUCYkYFAmJHCQBlAgUCY1UIBQJjUgZhbW91bnQFAmNWBAJjYgkBAUcCBQJjYQUBYgMDAwkBAmFGAAYJAAACBQJiVQUBbQYJAAACBQJiVQUBbgkAAgECHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQEAmNXCAgFAmNSCWFzc2V0UGFpcgthbW91bnRBc3NldAQCY1gDCQAAAgUCY1cFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmNXBAJjWQgIBQJjUglhc3NldFBhaXIKcHJpY2VBc3NldAQCY1oDCQAAAgUCY1kFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmNZAwMJAQIhPQIFAmNYBQJjUwYJAQIhPQIFAmNaBQJjVAkAAgECE1dyb25nIG9yZGVyIGFzc2V0cy4EAmRhCAUCY1IFcHJpY2UEAmRiCQBrAwUBYgUCYkcFAmJGBAJkYwkBAUoDBQJkYQUBYgUCZGIEAmRkAwkAAAIIBQJjUglvcmRlclR5cGUFA0J1eQkAZwIFAmNiBQJkYwkAZwIFAmRjBQJjYgYBAmRlAQJkZgMJAQIhPQIJAJADAQgFAmRmCHBheW1lbnRzAAEJAAIBAh1leGFjdGx5IDEgcGF5bWVudCBpcyBleHBlY3RlZAQCZGcJAQV2YWx1ZQEJAJEDAggFAmRmCHBheW1lbnRzAAAEAmJQCQEFdmFsdWUBCAUCZGcHYXNzZXRJZAQCZGgIBQJkZwZhbW91bnQEAmNBCQECYk4ECQDYBAEIBQJkZg10cmFuc2FjdGlvbklkCQDYBAEFAmJQBQJkaAgFAmRmBmNhbGxlcgQCY2cIBQJjQQJfMQQCY2gIBQJjQQJfMgQCYlUJAQ1wYXJzZUludFZhbHVlAQgFAmNBAl85BAJjaQgFAmNBA18xMAMDCQECYUYABgkAAAIFAmJVBQFuCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJiVQkAlwoFBQJjZwUCY2gFAmRoBQJiUAUCY2kBAmRpAwJkZgJjawJjcQMJAQIhPQIJAJADAQgFAmRmCHBheW1lbnRzAAIJAAIBAh9leGFjdGx5IDIgcGF5bWVudHMgYXJlIGV4cGVjdGVkBAJkagkBBXZhbHVlAQkAkQMCCAUCZGYIcGF5bWVudHMAAAQCZGsJAQV2YWx1ZQEJAJEDAggFAmRmCHBheW1lbnRzAAEEAmRsCQECY2oJCQDYBAEIBQJkZg10cmFuc2FjdGlvbklkBQJjawgFAmRqBmFtb3VudAgFAmRqB2Fzc2V0SWQIBQJkawZhbW91bnQIBQJkawdhc3NldElkCQClCAEIBQJkZgZjYWxsZXIHBQJjcQQCYlUJAQ1wYXJzZUludFZhbHVlAQgFAmRsAl84AwMDCQECYUYABgkAAAIFAmJVBQFsBgkAAAIFAmJVBQFuCQACAQkArAICAixQdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJiVQUCZGwBAmRtAQJkbgQCZG8JAPwHBAUCYUQCBGVtaXQJAMwIAgUCZG4FA25pbAUDbmlsAwkAAAIFAmRvBQJkbwQCZHAEAmRxBQJkbwMJAAECBQJkcQIHQWRkcmVzcwQCZHIFAmRxCQD8BwQFAmRyAgRlbWl0CQDMCAIFAmRuBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkcAUCZHAFAmRuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJkcwECZG4EAmR0CQBrAwUCZG4FAmFlBQFiCQCUCgIJAGUCBQJkbgUCZHQFAmR0AQJkdQQCZHYCZHcBWAFZBAJkeAkAAAIFAVkFBHVuaXQEAmR5CQECYnEBCQECYU0BBQJhVQQCZHoJAQJicQEJAQJhTQEFAmFWBAJkQQMJAAACBQJkdwUCYVUGAwkAAAIFAmR3BQJhVgcJAQJhQgECDWludmFsaWQgYXNzZXQEAmRCAwUCZHgJAJQKAgUCZHkFAmR6AwUCZEEJAJQKAgkAZQIFAmR5BQJkdgUCZHoJAJQKAgUCZHkJAGUCBQJkegUCZHYEAmRDCAUCZEICXzEEAmRECAUCZEICXzIEAmRFAwUCZEEJAJQKAgUCZHYAAAkAlAoCAAAFAmR2BAJkRggFAmRFAl8xBAJkRwgFAmRFAl8yBAJkSAgJAQJkcwEFAmRGAl8xBAJkSQgJAQJkcwEFAmRHAl8xBAJkSgkBAmRzAQUCZHYEAmRLCAUCZEoCXzEEAmR0CAUCZEoCXzIEAmRMCQBkAgUCZEMFAmRIBAJkTQkAZAIFAmREBQJkSQQCZE4JAQJicwIJAQFEAgUCZE0FAmFYCQEBRAIFAmRMBQJhVwQCZE8JAQFHAgUCZE4FAWIEAmRQAwUCZEEFAmRDBQJkRAQCZFEJALYCAQUCZFAEAmRSCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYVQJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYVQCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJkUwMJAL8CAgUCZFIFAWYGCQECYUIBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmRTBQJkUwQCZFQJALYCAQUCZEsEAmRVCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmRSCQC4AgIJAQpzcXJ0QmlnSW50BAkAtwICBQFkCQC6AgIJALkCAgUCZFQFAWQFAmRRABIAEgUERE9XTgUBZAUBZAUDbmlsBAJjUAMFAmR4BQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAAUCZE8JAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZE8JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVcCCQClCAEJAQV2YWx1ZQEFAVgJANgEAQkBBXZhbHVlAQUBWQkBAmJiCgUCZEYFAmRHBQJkVQUCZE8AAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJkVgkBAmJzAgkBAUQCBQJkRAUCYVgJAQFEAgUCZEMFAmFXBAJkVwkBAUcCBQJkVgUBYgQCZFgEAmRZAwUCZEEJAJQKAgUCZEYFAmRDCQCUCgIFAmRHBQJkRAQCZG4IBQJkWQJfMQQCZFoIBQJkWQJfMgQCZWEJAKADAQkAvAIDBQJkUgkAtgIBCQBpAgUCZG4AAgkAtgIBBQJkWgkAawMJAGUCBQJkVQUCZWEFAWIFAmVhCQCWCgQFAmRVBQJjUAUCZHQFAmRYCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlYgUCZWMCZEsCZHcBWAFZBAJkeAkAAAIFAVkFBHVuaXQEAmVkCQDMCAIDCQAAAgUCZHcFAmFUBgkBAmFCAQIQaW52YWxpZCBscCBhc3NldAUDbmlsAwkAAAIFAmVkBQJlZAQCZWUDCQAAAgUCZWMFAmFVBgMJAAACBQJlYwUCYVYHCQECYUIBAg1pbnZhbGlkIGFzc2V0BAJlZgMFAmVlCQC2AgEJAQJicQEJAQJhTQEFAmFVCQC2AgEJAQJicQEJAQJhTQEFAmFWBAJlZwkBAmJxAQkBAmFNAQUCYVUEAmVoCQECYnEBCQECYU0BBQJhVgQCZWkDBQJlZQUCZWcFAmVoBAJlagkAtgIBBQJlaQQCZFIJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJhVAkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJhVAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmVrCQC2AgEFAmRLBAJlbAkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJlZgkAuAICBQFkCQB2BgkAuAICBQFkCQC6AgIJALkCAgUCZWsFAWQFAmRSABIFAWgAAAASBQRET1dOBQFkBQNuaWwEAmVtCQECZHMBBQJlbAQCZW4IBQJlbQJfMQQCZHQIBQJlbQJfMgQCZW8DBQJlZQkAlgoEBQJlbgAACQBlAgUCZWcFAmVsBQJlaAkAlgoEAAAFAmVuBQJlZwkAZQIFAmVoBQJlbAQCZXAIBQJlbwJfMQQCZXEIBQJlbwJfMgQCZXIIBQJlbwJfMwQCZXMIBQJlbwJfNAQCZE4JAQJicwIJAQFEAgUCZXMFAmFYCQEBRAIFAmVyBQJhVwQCZE8JAQFHAgUCZE4FAWIEAmNQAwUCZHgFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIJAKUIAQkBBXZhbHVlAQUBWAkA2AQBCQEFdmFsdWUBBQFZCQECYm0GBQJlcAUCZXEFAmRLBQJkTwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJkTwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkTwUDbmlsBAJkVgkBAmJzAgkBAUQCBQJlaAUCYVgJAQFEAgUCZWcFAmFXBAJkVwkBAUcCBQJkVgUBYgQCZFgEAmV0CQBoAgkAoAMBCQC8AgMFAmVmBQJlawUCZFIAAgkAawMJAGUCBQJlbgUCZXQFAWIFAmV0CQCWCgQFAmVuBQJjUAUCZHQFAmRYCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJldQAEAmRxCQCiCAEJAQFRAAMJAAECBQJkcQIGU3RyaW5nBAJldgUCZHEJANkEAQUCZXYDCQABAgUCZHECBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZXcABAJkcQkAoggBCQEBUgADCQABAgUCZHECBlN0cmluZwQCZXYFAmRxCQDZBAEFAmV2AwkAAQIFAmRxAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmV4AQJkZgQCZHEJAQJldQADCQABAgUCZHECCkJ5dGVWZWN0b3IEAmV5BQJkcQkAAAIIBQJkZg9jYWxsZXJQdWJsaWNLZXkFAmV5AwkAAQIFAmRxAgRVbml0CQAAAggFAmRmBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJlegECZGYEAmVBCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmRxCQECZXUAAwkAAQIFAmRxAgpCeXRlVmVjdG9yBAJleQUCZHEDCQAAAggFAmRmD2NhbGxlclB1YmxpY0tleQUCZXkGBQJlQQMJAAECBQJkcQIEVW5pdAMJAAACCAUCZGYGY2FsbGVyBQR0aGlzBgUCZUEJAAIBAgtNYXRjaCBlcnJvchoCZGYBCnNldE1hbmFnZXIBAmVCBAJlQwkBAmV6AQUCZGYDCQAAAgUCZUMFAmVDBAJlRAkA2QQBBQJlQgMJAAACBQJlRAUCZUQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVIABQJlQgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQ5jb25maXJtTWFuYWdlcgAEAmVFCQECZXcABAJlRgMJAQlpc0RlZmluZWQBBQJlRQYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZUYFAmVGBAJlRwMJAAACCAUCZGYPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJlRQYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZUcFAmVHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAAkA2AQBCQEFdmFsdWUBBQJlRQkAzAgCCQELRGVsZXRlRW50cnkBCQEBUgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgEDcHV0AgJjawJlSAMJAGYCAAAFAmNrCQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmRsCQECZGkDBQJkZgUCY2sGBAJjTQgFAmRsAl8yBAJiUggFAmRsAl83BAJjaQgFAmRsAl85BAJjTggFAmRsA18xMAQCY08IBQJkbANfMTEEAmVJCAUCZGwDXzEyBAJlSggFAmRsA18xMwQCZG8JAPwHBAUCYUQCBGVtaXQJAMwIAgUCY00FA25pbAUDbmlsAwkAAAIFAmRvBQJkbwQCZHAEAmRxBQJkbwMJAAECBQJkcQIHQWRkcmVzcwQCZHIFAmRxCQD8BwQFAmRyAgRlbWl0CQDMCAIFAmNNBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkcAUCZHAEAmVLAwkAZgIFAmNOAAAJAPwHBAUCYmECA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJlSQUCY04FA25pbAUDbmlsAwkAAAIFAmVLBQJlSwQCZUwDCQBmAgUCY08AAAkA/AcEBQJiYQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmVKBQJjTwUDbmlsBQNuaWwDCQAAAgUCZUwFAmVMBAJlTQMFAmVIBAJlTgkA/AcEBQJhWgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlIFAmNNBQNuaWwDCQAAAgUCZU4FAmVOBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRmBmNhbGxlcgUCY00FAmJSBQNuaWwJAM4IAgUCY2kFAmVNCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQpwdXRGb3JGcmVlAQJlTwMJAGYCAAAFAmVPCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEAmRsCQECZGkDBQJkZgUCZU8HCAUCZGwCXzkCZGYBCXB1dE9uZVRrbgICZVACZVEEAmVSCgACZVMJAPwHBAUCYUQCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJlUwIHQm9vbGVhbgUCZVMJAAIBCQCsAgIJAAMBBQJlUwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZVQDAwMJAQJhRgAGCQAAAgUCYVMFAWwGCQAAAgUCYVMFAW4GBQJlUgQCZWQJAMwIAgMDCQEBIQEFAmVUBgkBAmV4AQUCZGYGCQECYUIBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkZghwYXltZW50cwABBgkBAmFCAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWQFAmVkBAJlVQkAkQMCCAUCZGYIcGF5bWVudHMAAAQCZHcIBQJlVQdhc3NldElkBAJkdggFAmVVBmFtb3VudAQBWAgFAmRmBmNhbGxlcgQBWQgFAmRmDXRyYW5zYWN0aW9uSWQEAmVWCQECZHUEBQJkdgUCZHcFAVgFAVkDCQAAAgUCZVYFAmVWBAJlVwgFAmVWAl80BAJkdAgFAmVWAl8zBAJjUAgFAmVWAl8yBAJlWAgFAmVWAl8xBAJlWQMDCQBmAgUCZVAAAAkAZgIFAmVQBQJlWAcJAQJhQgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZVAFA25pbAIABQJlWAQCZG8JAQJkbQEFAmVZAwkAAAIFAmRvBQJkbwQCZU0DBQJlUQQCZVoJAPwHBAUCYVoCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFUBQJlWQUDbmlsAwkAAAIFAmVaBQJlWgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkZgZjYWxsZXIFAmVZBQJhVAUDbmlsBAJmYQMJAGYCBQJkdAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFFBQJkdAUCZHcFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCBQJjUAUCZU0FAmZhBQJlWQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgERcHV0T25lVGtuUkVBRE9OTFkCAmR3AmR2BAJmYgkBAmR1BAUCZHYJAQJhSwEFAmR3BQR1bml0BQR1bml0BAJlWAgFAmZiAl8xBAJjUAgFAmZiAl8yBAJkdAgFAmZiAl8zBAJlVwgFAmZiAl80CQCUCgIFA25pbAkAlQoDBQJlWAUCZHQFAmVXAmRmAQlnZXRPbmVUa24CAmZjAmVQBAJlUgoAAmVTCQD8BwQFAmFEAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZVMCB0Jvb2xlYW4FAmVTCQACAQkArAICCQADAQUCZVMCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZkAwMJAQJhRgAGCQAAAgUCYVMFAW4GBQJlUgQCZWQJAMwIAgMDCQEBIQEFAmZkBgkBAmV4AQUCZGYGCQECYUIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkZghwYXltZW50cwABBgkBAmFCAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWQFAmVkBAJlYwkBAmFLAQUCZmMEAmVVCQCRAwIIBQJkZghwYXltZW50cwAABAJkdwgFAmVVB2Fzc2V0SWQEAmRLCAUCZVUGYW1vdW50BAFYCAUCZGYGY2FsbGVyBAFZCAUCZGYNdHJhbnNhY3Rpb25JZAQCZmUJAQJlYgUFAmVjBQJkSwUCZHcFAVgFAVkDCQAAAgUCZmUFAmZlBAJlVwgFAmZlAl80BAJkdAgFAmZlAl8zBAJjUAgFAmZlAl8yBAJmZggFAmZlAl8xBAJkbgMDCQBmAgUCZVAAAAkAZgIFAmVQBQJmZgcJAQJhQgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZVAFA25pbAIABQJmZgQCZmcJAPwHBAUCYUQCBGJ1cm4JAMwIAgUCZEsFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZHcFAmRLBQNuaWwDCQAAAgUCZmcFAmZnBAJmaAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFYBQJkbgUCZWMFA25pbAQCZmEDCQBmAgUCZHQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRQUCZHQFAmVjBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgUCY1AFAmZoBQJmYQUCZG4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBEWdldE9uZVRrblJFQURPTkxZAgJlYwJkSwQCZmkJAQJlYgUJAQJhSwEFAmVjBQJkSwUCYVQFBHVuaXQFBHVuaXQEAmZmCAUCZmkCXzEEAmNQCAUCZmkCXzIEAmR0CAUCZmkCXzMEAmVXCAUCZmkCXzQJAJQKAgUDbmlsCQCVCgMFAmZmBQJkdAUCZVcCZGYBE3Vuc3Rha2VBbmRHZXRPbmVUa24DAmZqAmZjAmVQBAJlUgoAAmVTCQD8BwQFAmFEAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZVMCB0Jvb2xlYW4FAmVTCQACAQkArAICCQADAQUCZVMCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZkAwMJAQJhRgAGCQAAAgUCYVMFAW4GBQJlUgQCZWQJAMwIAgMDCQEBIQEFAmZkBgkBAmV4AQUCZGYGCQECYUIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkZghwYXltZW50cwAABgkBAmFCAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWQFAmVkBAJlYwkBAmFLAQUCZmMEAVgIBQJkZgZjYWxsZXIEAVkIBQJkZg10cmFuc2FjdGlvbklkBAJmawkA/AcEBQJhWgIHdW5zdGFrZQkAzAgCCQDYBAEFAmFUCQDMCAIFAmZqBQNuaWwFA25pbAMJAAACBQJmawUCZmsEAmZsCQECZWIFBQJlYwUCZmoFAmFUBQFYBQFZAwkAAAIFAmZsBQJmbAQCZVcIBQJmbAJfNAQCZHQIBQJmbAJfMwQCY1AIBQJmbAJfMgQCZmYIBQJmbAJfMQQCZG4DAwkAZgIFAmVQAAAJAGYCBQJlUAUCZmYHCQECYUIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmVQBQNuaWwCAAUCZmYEAmZnCQD8BwQFAmFEAgRidXJuCQDMCAIFAmZqBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFUBQJmagUDbmlsAwkAAAIFAmZnBQJmZwQCZmgJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRmBmNhbGxlcgUCZG4FAmVjBQNuaWwEAmZhAwkAZgIFAmR0AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUUFAmR0BQJlYwUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIFAmNQBQJmaAUCZmEFAmRuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQNnZXQABAJjQQkBAmRlAQUCZGYEAmZtCAUCY0ECXzEEAmNoCAUCY0ECXzIEAmRoCAUCY0ECXzMEAmJQCAUCY0ECXzQEAmNpCAUCY0ECXzUEAmZuCQD8BwQFAmFEAgRidXJuCQDMCAIFAmRoBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJQBQJkaAUDbmlsAwkAAAIFAmZuBQJmbgUCY2kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBCWdldE5vTGVzcwICZm8CZnAEAmNBCQECZGUBBQJkZgQCY2cIBQJjQQJfMQQCY2gIBQJjQQJfMgQCZGgIBQJjQQJfMwQCYlAIBQJjQQJfNAQCY2kIBQJjQQJfNQMJAGYCBQJmbwUCY2cJAAIBCQCsAgIJAKwCAgkArAICAhxub0xlc3NUaGVuQW10QXNzZXQgZmFpbGVkOiAgCQCkAwEFAmNnAgMgPCAJAKQDAQUCZm8DCQBmAgUCZnAFAmNoCQACAQkArAICCQCsAgIJAKwCAgIdbm9MZXNzVGhlblByaWNlQXNzZXQgZmFpbGVkOiAJAKQDAQUCY2gCAyA8IAkApAMBBQJmcAQCZm4JAPwHBAUCYUQCBGJ1cm4JAMwIAgUCZGgFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlAFAmRoBQNuaWwDCQAAAgUCZm4FAmZuBQJjaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgENdW5zdGFrZUFuZEdldAECZG4EAmZxAwkBAiE9AgkAkAMBCAUCZGYIcGF5bWVudHMAAAkAAgECGE5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAYDCQAAAgUCZnEFAmZxBAJiRQkBAmFIAAQCYlIJANkEAQkAkQMCBQJiRQUBcQQCZmsJAPwHBAUCYVoCB3Vuc3Rha2UJAMwIAgkA2AQBBQJiUgkAzAgCBQJkbgUDbmlsBQNuaWwDCQAAAgUCZmsFAmZrBAJjQQkBAmJOBAkA2AQBCAUCZGYNdHJhbnNhY3Rpb25JZAkA2AQBBQJiUgUCZG4IBQJkZgZjYWxsZXIEAmJVCQENcGFyc2VJbnRWYWx1ZQEIBQJjQQJfOQQCY2kIBQJjQQNfMTAEAmZyAwMJAQJhRgAGCQAAAgUCYlUFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmJVBgMJAAACBQJmcgUCZnIEAmZuCQD8BwQFAmFEAgRidXJuCQDMCAIFAmRuBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJSBQJkbgUDbmlsAwkAAAIFAmZuBQJmbgUCY2kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmZqAmZzAmZwBAJmZAMJAQJhRgAGCQAAAgUCYVMFAW4EAmVkCQDMCAIDCQEBIQEFAmZkBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRmCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWQFAmVkBAJmawkA/AcEBQJhWgIHdW5zdGFrZQkAzAgCCQDYBAEFAmFUCQDMCAIFAmZqBQNuaWwFA25pbAMJAAACBQJmawUCZmsEAmNBCQECYk4ECQDYBAEIBQJkZg10cmFuc2FjdGlvbklkCQDYBAEFAmFUBQJmaggFAmRmBmNhbGxlcgQCY2cIBQJjQQJfMQQCY2gIBQJjQQJfMgQCY2kIBQJjQQNfMTAEAmZ0CQDMCAIDCQBnAgUCY2cFAmZzBgkAAgEJALkJAgkAzAgCAixhbW91bnQgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZzBQNuaWwCAAkAzAgCAwkAZwIFAmNoBQJmcAYJAAIBCQC5CQIJAMwIAgIrcHJpY2UgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZwBQNuaWwCAAUDbmlsAwkAAAIFAmZ0BQJmdAQCZm4JAPwHBAUCYUQCBGJ1cm4JAMwIAgUCZmoFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYVQFAmZqBQNuaWwDCQAAAgUCZm4FAmZuBQJjaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgEIYWN0aXZhdGUCAmZ1AmZ2AwkBAiE9AgkApQgBCAUCZGYGY2FsbGVyCQClCAEFAmFECQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAAUCZnUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAAUCZnYFA25pbAIHc3VjY2VzcwJkZgEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYUgAAmRmARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJicgkAlAoCBQNuaWwJAQJicQEFAmJyAmRmARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJieQJiegJiRAQCYk0JAQJiQwMFAmJ5BQJiegUCYkQJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJiTQAACQDMCAIJAKYDAQkAkQMCBQJiTQABCQDMCAIJAKYDAQkAkQMCBQJiTQACBQNuaWwCZGYBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFFAUYJAJQKAgUDbmlsCQCmAwEJAQFEAgUBRQUBRgJkZgEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBSAFJCQCUCgIFA25pbAkBAUcCCQCnAwEFAUgFAUkCZGYBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYnQCYnUJAJQKAgUDbmlsCQCmAwEJAQJicwIJAKcDAQUCYnQJAKcDAQUCYnUCZGYBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJiTwJjawJjbAJjbQJjbgJjbwFYAmNwAmNxCQCUCgIFA25pbAkBAmNqCQUCYk8FAmNrBQJjbAUCY20FAmNuBQJjbwUBWAUCY3AFAmNxAmRmASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCYk8CYlACYlEBWAQCY0EJAQJiTgQFAmJPBQJiUAUCYlEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAVgJAJQKAgUDbmlsCQCcCgoIBQJjQQJfMQgFAmNBAl8yCAUCY0ECXzMIBQJjQQJfNAgFAmNBAl81CAUCY0ECXzYIBQJjQQJfNwkApgMBCAUCY0ECXzgIBQJjQQJfOQgFAmNBA18xMAJkZgENc3RhdHNSRUFET05MWQAEAmJFCQECYUgABAJiUgkA2QQBCQCRAwIFAmJFBQFxBAJjUwkAkQMCBQJiRQUBcgQCY1QJAJEDAgUCYkUFAXMEAmN0CQCRAwIFAmJFBQF2BAJjdQkAkQMCBQJiRQUBdwQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdAQCYkcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdQQCZncICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlIJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlICDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjVQkBAmJxAQUCY1MEAmNWCQECYnEBBQJjVAQCZngDCQAAAgUCZncAAAkAzAgCBQFlCQDMCAIFAWUJAMwIAgUBZQUDbmlsCQECYkMDBQJjVQUCY1YFAmZ3BAJjYgAABAJmeQkBAUcCCQCRAwIFAmZ4AAEFAWIEAmZ6CQEBRwIJAJEDAgUCZngAAgUBYgQCZkEJAQV2YWx1ZQEJAJoIAgUCYUQJAQJhcAEJAKUIAQUEdGhpcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNVCQDMCAIJAKQDAQUCY1YJAMwIAgkApAMBBQJmdwkAzAgCCQCkAwEFAmNiCQDMCAIJAKQDAQUCZnkJAMwIAgkApAMBBQJmegkAzAgCCQCkAwEFAmZBBQNuaWwFAWoCZGYBIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAQJjbAQCYkUJAQJhSAAEAmJSCQDZBAEJAJEDAgUCYkUFAXEEAmNyCQCRAwIFAmJFBQFyBAJiUwkA2QQBBQJjcgQCY3MJAJEDAgUCYkUFAXMEAmJUCQDZBAEFAmNzBAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJiVQkAkQMCBQJiRQUBcAQCZncICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlIJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlICDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjVQkBAmJxAQUCY3IEAmNWCQECYnEBBQJjcwQCYkEJAQFEAgUCY1UFAmJGBAJiQgkBAUQCBQJjVgUCYkcEAmNhAwkAAAIFAmZ3AAAFAWUJAQJicwIFAmJCBQJiQQQCY3gJAQFEAgUCY2wFAmJGBAJjeQkAvAIDBQJjeAUCY2EFAWQEAmNuCQEBRwIFAmN5BQJiRwQCZGwJAQJjagkCAACgwh4FAmNsBQJiUwUCY24FAmJUAgAGBwQCY0kIBQJkbAJfMQQCZkIIBQJkbAJfMwQCYlcIBQJkbAJfNAQCYlkIBQJkbAJfNQQCYlYIBQJkbAJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY0kJAMwIAgkApAMBCQEBRwIFAmNhBQFiCQDMCAIJAKQDAQUCYlcJAMwIAgkApAMBBQJiWQkAzAgCCQCkAwEFAmJWCQDMCAIFAmJVCQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgUDbmlsBQFqAmRmAR9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAQJjbgQCYkUJAQJhSAAEAmJSCQDZBAEJAJEDAgUCYkUFAXEEAmNyCQCRAwIFAmJFBQFyBAJiUwkA2QQBBQJjcgQCY3MJAJEDAgUCYkUFAXMEAmJUCQDZBAEFAmNzBAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJiVQkAkQMCBQJiRQUBcAQCZncICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlIJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlICDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJmQwkBAmJxAQUCY3IEAmZECQECYnEBBQJjcwQCZkUJAQFEAgUCZkMFAmJGBAJmRgkBAUQCBQJmRAUCYkcEAmNhAwkAAAIFAmZ3AAAFAWUJAQJicwIFAmZGBQJmRQQCY3kJAQFEAgUCY24FAmJHBAJjeAkAvAIDBQJjeQUBZAUCY2EEAmNsCQEBRwIFAmN4BQJiRgQCZGwJAQJjagkCAACgwh4FAmNsBQJiUwUCY24FAmJUAgAGBwQCY0kIBQJkbAJfMQQCZkIIBQJkbAJfMwQCYlcIBQJkbAJfNAQCYlkIBQJkbAJfNQQCYlYIBQJkbAJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY0kJAMwIAgkApAMBCQEBRwIFAmNhBQFiCQDMCAIJAKQDAQUCYlcJAMwIAgkApAMBBQJiWQkAzAgCCQCkAwEFAmJWCQDMCAIFAmJVCQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgUDbmlsBQFqAmRmARNldmFsdWF0ZUdldFJFQURPTkxZAgJmRwJmSAQCY0EJAQJiTgQCAAUCZkcFAmZIBQR0aGlzBAJjZwgFAmNBAl8xBAJjaAgFAmNBAl8yBAJiVwgFAmNBAl81BAJiWQgFAmNBAl82BAJiVggFAmNBAl83BAJjYggFAmNBAl84BAJiVQkBDXBhcnNlSW50VmFsdWUBCAUCY0ECXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjZwkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCYlcJAMwIAgkApAMBBQJiWQkAzAgCCQCkAwEFAmJWCQDMCAIJAKYDAQUCY2IJAMwIAgkApAMBBQJiVQUDbmlsBQFqAQJmSQECZkoABAJmSwQCZHEJAQJldQADCQABAgUCZHECCkJ5dGVWZWN0b3IEAmV5BQJkcQUCZXkDCQABAgUCZHECBFVuaXQIBQJmSQ9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCZHEFAmZJAwkAAQIFAmRxAgVPcmRlcgQCY1IFAmRxBAJmTAkBAmFHAAQCYXUJAQJjUQEFAmNSBAJhdgkA9AMDCAUCY1IJYm9keUJ5dGVzCQCRAwIIBQJjUgZwcm9vZnMAAAgFAmNSD3NlbmRlclB1YmxpY0tleQQCYXcJAPQDAwgFAmNSCWJvZHlCeXRlcwkAkQMCCAUCY1IGcHJvb2ZzAAEFAmZMAwMDBQJhdQUCYXYHBQJhdwcGCQECYXQDBQJhdQUCYXYFAmF3AwkAAQIFAmRxAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZXYFAmRxBAJmTQkA9gMBCQEFdmFsdWUBCAUCZXYGc2NyaXB0BAJmTgkA2wQBCQEFdmFsdWUBCQCdCAIFAmFECQECYXIABAJmTwkA8QcBBQR0aGlzAwMJAAACBQJmTgUCZk0JAQIhPQIFAmZPBQJmTQcGCQD0AwMIBQJmSQlib2R5Qnl0ZXMJAJEDAggFAmZJBnByb29mcwAABQJmSwkA9AMDCAUCZkkJYm9keUJ5dGVzCQCRAwIIBQJmSQZwcm9vZnMAAAUCZkuCh+//", "chainId": 84, "height": 2326965, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BN65TPbyTQ2T1eJibjVWfnGjNCUPDjQH5nJfAisEBN3x Next: 2StEmwQk7KLBpwnY1aj4py36xdSPGoEq6FXXvQ8Vtass Diff:
OldNewDifferences
917917 if ((fk == fk))
918918 then {
919919 let fl = eb(ec, fj, aT, X, Y)
920- let ff = fl._1
921- let cP = fl._2
922- let dt = fl._3
923- let eW = fl._4
924- let dn = if (if ((eP > 0))
925- then (eP > ff)
926- else false)
927- then aB(makeString(["amount to receive is less than ", toString(eP)], ""))
928- else ff
929- let fg = invoke(aD, "burn", [fj], [AttachedPayment(aT, fj)])
930- if ((fg == fg))
920+ if ((fl == fl))
931921 then {
932- let fh = [ScriptTransfer(df.caller, dn, ec)]
933- let fa = if ((dt > 0))
934- then [ScriptTransfer(aE, dt, ec)]
935- else nil
936- $Tuple2(((cP ++ fh) ++ fa), dn)
922+ let eW = fl._4
923+ let dt = fl._3
924+ let cP = fl._2
925+ let ff = fl._1
926+ let dn = if (if ((eP > 0))
927+ then (eP > ff)
928+ else false)
929+ then aB(makeString(["amount to receive is less than ", toString(eP)], ""))
930+ else ff
931+ let fg = invoke(aD, "burn", [fj], [AttachedPayment(aT, fj)])
932+ if ((fg == fg))
933+ then {
934+ let fh = [ScriptTransfer(df.caller, dn, ec)]
935+ let fa = if ((dt > 0))
936+ then [ScriptTransfer(aE, dt, ec)]
937+ else nil
938+ $Tuple2(((cP ++ fh) ++ fa), dn)
939+ }
940+ else throw("Strict value is not equal to itself.")
937941 }
938942 else throw("Strict value is not equal to itself.")
939943 }
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 (H,I) = toInt(fraction(H, toBigInt(I), d))
6666
6767
6868 func J (K,L,M) = fraction(K, L, M)
6969
7070
7171 func N (H) = if ((0 > H))
7272 then -(H)
7373 else H
7474
7575
7676 func O (H) = if ((e > H))
7777 then -(H)
7878 else H
7979
8080
8181 func P () = "%s__factoryContract"
8282
8383
8484 func Q () = "%s__managerPublicKey"
8585
8686
8787 func R () = "%s__pendingManagerPublicKey"
8888
8989
9090 func S () = "%s%s__price__last"
9191
9292
9393 func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], j)
9494
9595
9696 func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
9797
9898
9999 func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
100100
101101
102102 func aa () = "%s__amountAsset"
103103
104104
105105 func ab () = "%s__priceAsset"
106106
107107
108108 let ac = "%s__fee"
109109
110110 let ad = fraction(10, b, 10000)
111111
112112 let ae = valueOrElse(getInteger(this, ac), ad)
113113
114114 func af () = "%s__factoryConfig"
115115
116116
117117 func ag () = "%s%s__matcher__publicKey"
118118
119119
120120 func ah (ai) = (("%s%s%s__" + ai) + "__mappings__poolContract2LpAsset")
121121
122122
123123 func aj (ak,al) = (((("%d%d%s__" + ak) + "__") + al) + "__config")
124124
125125
126126 func am (an) = ("%s%s%s__mappings__baseAsset2internalId__" + an)
127127
128128
129129 func ao () = "%s__shutdown"
130130
131131
132132 func ap (aq) = ("%s%s__poolWeight__" + aq)
133133
134134
135135 func ar () = "%s__allowedLpScriptHash"
136136
137137
138138 let as = "%s__feeCollectorAddress"
139139
140140 func at (au,av,aw) = throw(((((("order validation failed: orderValid=" + toString(au)) + " senderValid=") + toString(av)) + " matcherValid=") + toString(aw)))
141141
142142
143143 func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " is not defined"], ""))
144144
145145
146146 func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " is not defined"], ""))
147147
148148
149149 func aB (aC) = throw(makeString(["lp.ride:", aC], " "))
150150
151151
152152 let aD = addressFromStringValue(ax(this, P()))
153153
154154 let aE = addressFromStringValue(ax(aD, as))
155155
156156 func aF () = valueOrElse(getBoolean(aD, ao()), false)
157157
158158
159159 func aG () = fromBase58String(ax(aD, ag()))
160160
161161
162162 func aH () = {
163163 let aI = ax(this, aa())
164164 let aJ = ax(this, ab())
165165 let al = aA(aD, am(aJ))
166166 let ak = aA(aD, am(aI))
167167 split(ax(aD, aj(toString(ak), toString(al))), j)
168168 }
169169
170170
171171 func aK (aL) = if ((aL == i))
172172 then unit
173173 else fromBase58String(aL)
174174
175175
176176 func aM (aL) = if ((aL == unit))
177177 then i
178178 else toBase58String(value(aL))
179179
180180
181181 func aN (aO) = $Tuple7(addressFromStringValue(aO[o]), parseIntValue(aO[p]), fromBase58String(aO[q]), aK(aO[r]), aK(aO[s]), parseIntValue(aO[t]), parseIntValue(aO[u]))
182182
183183
184184 let aP = aN(aH())
185185
186186 let aQ = aP
187187
188188 let aR = aQ._1
189189
190190 let aS = aQ._2
191191
192192 let aT = aQ._3
193193
194194 let aU = aQ._4
195195
196196 let aV = aQ._5
197197
198198 let aW = aQ._6
199199
200200 let aX = aQ._7
201201
202202 func aY () = split(ax(aD, af()), j)
203203
204204
205205 let aZ = valueOrErrorMessage(addressFromString(aY()[B]), "incorrect staking address")
206206
207207 let ba = valueOrErrorMessage(addressFromString(aY()[C]), "incorrect staking address")
208208
209209 func bb (bc,bd,be,bf,bg,bh,bi,bj,bk,bl) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bc), toString(bd), toString(be), toString(bf), toString(bg), toString(bh), toString(bi), toString(bj), toString(bk), toString(bl)], j)
210210
211211
212212 func bm (bn,bo,bp,bf,bi,bj) = makeString(["%d%d%d%d%d%d", toString(bn), toString(bo), toString(bp), toString(bf), toString(bi), toString(bj)], j)
213213
214214
215215 func bq (br) = if ((br == "WAVES"))
216216 then wavesBalance(this).available
217217 else assetBalance(this, fromBase58String(br))
218218
219219
220220 func bs (bt,bu) = fraction(bt, d, bu)
221221
222222
223223 func bv (bw,bx,by,bz) = {
224224 let bA = D(by, bw)
225225 let bB = D(bz, bx)
226226 bs(bB, bA)
227227 }
228228
229229
230230 func bC (by,bz,bD) = {
231231 let bE = aH()
232232 let bF = parseIntValue(bE[t])
233233 let bG = parseIntValue(bE[u])
234234 let bH = bv(bF, bG, by, bz)
235235 let bu = D(by, bF)
236236 let bt = D(bz, bG)
237237 let bI = D(bD, b)
238238 let bJ = bs(bu, bI)
239239 let bK = bs(bt, bI)
240240 [bH, bJ, bK]
241241 }
242242
243243
244244 func bL (by,bz,bD) = {
245245 let bM = bC(by, bz, bD)
246246 [G(bM[0], b), G(bM[1], b), G(bM[2], b)]
247247 }
248248
249249
250250 func bN (bO,bP,bQ,X) = {
251251 let bE = aH()
252252 let bR = bE[q]
253253 let bS = bE[r]
254254 let bT = bE[s]
255255 let bw = parseIntValue(bE[t])
256256 let bx = parseIntValue(bE[u])
257257 let bU = bE[p]
258258 let bV = valueOrErrorMessage(assetInfo(fromBase58String(bR)), (("Asset " + bR) + " doesn't exist")).quantity
259259 if ((bR != bP))
260260 then throw("Invalid asset passed.")
261261 else {
262262 let bW = bq(bS)
263263 let bX = D(bW, bw)
264264 let bY = bq(bT)
265265 let bZ = D(bY, bx)
266266 let ca = bs(bZ, bX)
267267 let cb = G(ca, b)
268268 let cc = D(bQ, b)
269269 let cd = D(bV, b)
270270 let ce = fraction(bX, cc, cd)
271271 let cf = fraction(bZ, cc, cd)
272272 let cg = G(ce, bw)
273273 let ch = G(cf, bx)
274274 let ci = if ((bO == ""))
275275 then nil
276276 else [ScriptTransfer(X, cg, if ((bS == "WAVES"))
277277 then unit
278278 else fromBase58String(bS)), ScriptTransfer(X, ch, if ((bT == "WAVES"))
279279 then unit
280280 else fromBase58String(bT)), StringEntry(Z(toString(X), bO), bm(cg, ch, bQ, cb, height, lastBlock.timestamp)), IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb)]
281281 $Tuple10(cg, ch, bS, bT, bW, bY, bV, ca, bU, ci)
282282 }
283283 }
284284
285285
286286 func cj (bO,ck,cl,cm,cn,co,X,cp,cq) = {
287287 let bE = aH()
288288 let bR = fromBase58String(bE[q])
289289 let cr = bE[r]
290290 let cs = bE[s]
291291 let ct = bE[v]
292292 let cu = bE[w]
293293 let bF = parseIntValue(bE[t])
294294 let bG = parseIntValue(bE[u])
295295 let bU = bE[p]
296296 let bV = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
297297 let cv = toBase58String(valueOrElse(cm, fromBase58String("WAVES")))
298298 let cw = toBase58String(valueOrElse(co, fromBase58String("WAVES")))
299299 if (if ((cr != cv))
300300 then true
301301 else (cs != cw))
302302 then throw("Invalid amt or price asset passed.")
303303 else {
304304 let bW = if (cp)
305305 then bq(cr)
306306 else (bq(cr) - cl)
307307 let bY = if (cp)
308308 then bq(cs)
309309 else (bq(cs) - cn)
310310 let cx = D(cl, bF)
311311 let cy = D(cn, bG)
312312 let cz = bs(cy, cx)
313313 let bX = D(bW, bF)
314314 let bZ = D(bY, bG)
315315 let cA = if ((bV == 0))
316316 then {
317317 let ca = e
318318 let cB = e
319319 let bI = pow((cx * cy), 0, toBigInt(5), 1, 0, DOWN)
320320 $Tuple5(G(bI, b), G(cx, bF), G(cy, bG), bs((bZ + cy), (bX + cx)), cB)
321321 }
322322 else {
323323 let ca = bs(bZ, bX)
324324 let cB = fraction(O((ca - cz)), d, ca)
325325 let cC = D(ck, b)
326326 if (if ((ca != e))
327327 then (cB > cC)
328328 else false)
329329 then throw(((("Price slippage " + toString(cB)) + " exceeded the passed limit of ") + toString(cC)))
330330 else {
331331 let cd = D(bV, b)
332332 let cD = fraction(cx, ca, d)
333333 let cE = fraction(cy, d, ca)
334334 let cF = if ((cD > cy))
335335 then $Tuple2(cE, cy)
336336 else $Tuple2(cx, cD)
337337 let cG = cF._1
338338 let cH = cF._2
339339 let bI = fraction(cd, cH, bZ)
340340 $Tuple5(G(bI, b), G(cG, bF), G(cH, bG), ca, cB)
341341 }
342342 }
343343 let cI = cA._1
344344 let cJ = cA._2
345345 let cK = cA._3
346346 let cb = G(cA._4, b)
347347 let cL = G(cA._5, b)
348348 if ((0 >= cI))
349349 then throw("Invalid calculations. LP calculated is less than zero.")
350350 else {
351351 let cM = if (!(cq))
352352 then 0
353353 else cI
354354 let cN = (cl - cJ)
355355 let cO = (cn - cK)
356356 let cP = [IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb), StringEntry(W(X, bO), bb(cJ, cK, cM, cb, ck, cL, height, lastBlock.timestamp, cN, cO))]
357357 $Tuple13(cI, cM, cb, bW, bY, bV, bR, bU, cP, cN, cO, cm, co)
358358 }
359359 }
360360 }
361361
362362
363363 func cQ (cR) = {
364364 let bE = aH()
365365 let cS = bE[r]
366366 let cT = bE[s]
367367 let bU = parseIntValue(bE[p])
368368 let bF = parseIntValue(bE[t])
369369 let bG = parseIntValue(bE[u])
370370 let cU = bq(cS)
371371 let cV = bq(cT)
372372 let ca = if ((cR.orderType == Buy))
373373 then bv(bF, bG, (cU + cR.amount), cV)
374374 else bv(bF, bG, (cU - cR.amount), cV)
375375 let cb = G(ca, b)
376376 if (if (if (aF())
377377 then true
378378 else (bU == m))
379379 then true
380380 else (bU == n))
381381 then throw("Exchange operations disabled")
382382 else {
383383 let cW = cR.assetPair.amountAsset
384384 let cX = if ((cW == unit))
385385 then "WAVES"
386386 else toBase58String(value(cW))
387387 let cY = cR.assetPair.priceAsset
388388 let cZ = if ((cY == unit))
389389 then "WAVES"
390390 else toBase58String(value(cY))
391391 if (if ((cX != cS))
392392 then true
393393 else (cZ != cT))
394394 then throw("Wrong order assets.")
395395 else {
396396 let da = cR.price
397397 let db = fraction(b, bG, bF)
398398 let dc = J(da, b, db)
399399 let dd = if ((cR.orderType == Buy))
400400 then (cb >= dc)
401401 else (dc >= cb)
402402 true
403403 }
404404 }
405405 }
406406
407407
408408 func de (df) = if ((size(df.payments) != 1))
409409 then throw("exactly 1 payment is expected")
410410 else {
411411 let dg = value(df.payments[0])
412412 let bP = value(dg.assetId)
413413 let dh = dg.amount
414414 let cA = bN(toBase58String(df.transactionId), toBase58String(bP), dh, df.caller)
415415 let cg = cA._1
416416 let ch = cA._2
417417 let bU = parseIntValue(cA._9)
418418 let ci = cA._10
419419 if (if (aF())
420420 then true
421421 else (bU == n))
422422 then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
423423 else $Tuple5(cg, ch, dh, bP, ci)
424424 }
425425
426426
427427 func di (df,ck,cq) = if ((size(df.payments) != 2))
428428 then throw("exactly 2 payments are expected")
429429 else {
430430 let dj = value(df.payments[0])
431431 let dk = value(df.payments[1])
432432 let dl = cj(toBase58String(df.transactionId), ck, dj.amount, dj.assetId, dk.amount, dk.assetId, toString(df.caller), false, cq)
433433 let bU = parseIntValue(dl._8)
434434 if (if (if (aF())
435435 then true
436436 else (bU == l))
437437 then true
438438 else (bU == n))
439439 then throw(("Put operation is blocked by admin. Status = " + toString(bU)))
440440 else dl
441441 }
442442
443443
444444 func dm (dn) = {
445445 let do = invoke(aD, "emit", [dn], nil)
446446 if ((do == do))
447447 then {
448448 let dp = {
449449 let dq = do
450450 if ($isInstanceOf(dq, "Address"))
451451 then {
452452 let dr = dq
453453 invoke(dr, "emit", [dn], nil)
454454 }
455455 else unit
456456 }
457457 if ((dp == dp))
458458 then dn
459459 else throw("Strict value is not equal to itself.")
460460 }
461461 else throw("Strict value is not equal to itself.")
462462 }
463463
464464
465465 func ds (dn) = {
466466 let dt = fraction(dn, ae, b)
467467 $Tuple2((dn - dt), dt)
468468 }
469469
470470
471471 func du (dv,dw,X,Y) = {
472472 let dx = (Y == unit)
473473 let dy = bq(aM(aU))
474474 let dz = bq(aM(aV))
475475 let dA = if ((dw == aU))
476476 then true
477477 else if ((dw == aV))
478478 then false
479479 else aB("invalid asset")
480480 let dB = if (dx)
481481 then $Tuple2(dy, dz)
482482 else if (dA)
483483 then $Tuple2((dy - dv), dz)
484484 else $Tuple2(dy, (dz - dv))
485485 let dC = dB._1
486486 let dD = dB._2
487487 let dE = if (dA)
488488 then $Tuple2(dv, 0)
489489 else $Tuple2(0, dv)
490490 let dF = dE._1
491491 let dG = dE._2
492492 let dH = ds(dF)._1
493493 let dI = ds(dG)._1
494494 let dJ = ds(dv)
495495 let dK = dJ._1
496496 let dt = dJ._2
497497 let dL = (dC + dH)
498498 let dM = (dD + dI)
499499 let dN = bs(D(dM, aX), D(dL, aW))
500500 let dO = G(dN, b)
501501 let dP = if (dA)
502502 then dC
503503 else dD
504504 let dQ = toBigInt(dP)
505505 let dR = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
506506 let dS = if ((dR > f))
507507 then true
508508 else aB("initial deposit requires all coins")
509509 if ((dS == dS))
510510 then {
511511 let dT = toBigInt(dK)
512512 let dU = max([0, toInt(((dR * (sqrtBigInt((d + ((dT * d) / dQ)), 18, 18, DOWN) - d)) / d))])
513513 let cP = if (dx)
514514 then nil
515515 else [IntegerEntry(S(), dO), IntegerEntry(T(height, lastBlock.timestamp), dO), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bb(dF, dG, dU, dO, 0, 0, height, lastBlock.timestamp, 0, 0))]
516516 let dV = bs(D(dD, aX), D(dC, aW))
517517 let dW = G(dV, b)
518518 let dX = {
519519 let dY = if (dA)
520520 then $Tuple2(dF, dC)
521521 else $Tuple2(dG, dD)
522522 let dn = dY._1
523523 let dZ = dY._2
524524 let ea = toInt(fraction(dR, toBigInt((dn / 2)), toBigInt(dZ)))
525525 fraction((dU - ea), b, ea)
526526 }
527527 $Tuple4(dU, cP, dt, dX)
528528 }
529529 else throw("Strict value is not equal to itself.")
530530 }
531531
532532
533533 func eb (ec,dK,dw,X,Y) = {
534534 let dx = (Y == unit)
535535 let ed = [if ((dw == aT))
536536 then true
537537 else aB("invalid lp asset")]
538538 if ((ed == ed))
539539 then {
540540 let ee = if ((ec == aU))
541541 then true
542542 else if ((ec == aV))
543543 then false
544544 else aB("invalid asset")
545545 let ef = if (ee)
546546 then toBigInt(bq(aM(aU)))
547547 else toBigInt(bq(aM(aV)))
548548 let eg = bq(aM(aU))
549549 let eh = bq(aM(aV))
550550 let ei = if (ee)
551551 then eg
552552 else eh
553553 let ej = toBigInt(ei)
554554 let dR = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
555555 let ek = toBigInt(dK)
556556 let el = max([0, toInt(((ef * (d - pow((d - ((ek * d) / dR)), 18, h, 0, 18, DOWN))) / d))])
557557 let em = ds(el)
558558 let en = em._1
559559 let dt = em._2
560560 let eo = if (ee)
561561 then $Tuple4(en, 0, (eg - el), eh)
562562 else $Tuple4(0, en, eg, (eh - el))
563563 let ep = eo._1
564564 let eq = eo._2
565565 let er = eo._3
566566 let es = eo._4
567567 let dN = bs(D(es, aX), D(er, aW))
568568 let dO = G(dN, b)
569569 let cP = if (dx)
570570 then nil
571571 else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bm(ep, eq, dK, dO, height, lastBlock.timestamp)), IntegerEntry(S(), dO), IntegerEntry(T(height, lastBlock.timestamp), dO)]
572572 let dV = bs(D(eh, aX), D(eg, aW))
573573 let dW = G(dV, b)
574574 let dX = {
575575 let et = (toInt(fraction(ef, ek, dR)) * 2)
576576 fraction((en - et), b, et)
577577 }
578578 $Tuple4(en, cP, dt, dX)
579579 }
580580 else throw("Strict value is not equal to itself.")
581581 }
582582
583583
584584 func eu () = {
585585 let dq = getString(Q())
586586 if ($isInstanceOf(dq, "String"))
587587 then {
588588 let ev = dq
589589 fromBase58String(ev)
590590 }
591591 else if ($isInstanceOf(dq, "Unit"))
592592 then unit
593593 else throw("Match error")
594594 }
595595
596596
597597 func ew () = {
598598 let dq = getString(R())
599599 if ($isInstanceOf(dq, "String"))
600600 then {
601601 let ev = dq
602602 fromBase58String(ev)
603603 }
604604 else if ($isInstanceOf(dq, "Unit"))
605605 then unit
606606 else throw("Match error")
607607 }
608608
609609
610610 func ex (df) = {
611611 let dq = eu()
612612 if ($isInstanceOf(dq, "ByteVector"))
613613 then {
614614 let ey = dq
615615 (df.callerPublicKey == ey)
616616 }
617617 else if ($isInstanceOf(dq, "Unit"))
618618 then (df.caller == this)
619619 else throw("Match error")
620620 }
621621
622622
623623 func ez (df) = {
624624 let eA = throw("Permission denied")
625625 let dq = eu()
626626 if ($isInstanceOf(dq, "ByteVector"))
627627 then {
628628 let ey = dq
629629 if ((df.callerPublicKey == ey))
630630 then true
631631 else eA
632632 }
633633 else if ($isInstanceOf(dq, "Unit"))
634634 then if ((df.caller == this))
635635 then true
636636 else eA
637637 else throw("Match error")
638638 }
639639
640640
641641 @Callable(df)
642642 func setManager (eB) = {
643643 let eC = ez(df)
644644 if ((eC == eC))
645645 then {
646646 let eD = fromBase58String(eB)
647647 if ((eD == eD))
648648 then [StringEntry(R(), eB)]
649649 else throw("Strict value is not equal to itself.")
650650 }
651651 else throw("Strict value is not equal to itself.")
652652 }
653653
654654
655655
656656 @Callable(df)
657657 func confirmManager () = {
658658 let eE = ew()
659659 let eF = if (isDefined(eE))
660660 then true
661661 else throw("No pending manager")
662662 if ((eF == eF))
663663 then {
664664 let eG = if ((df.callerPublicKey == value(eE)))
665665 then true
666666 else throw("You are not pending manager")
667667 if ((eG == eG))
668668 then [StringEntry(Q(), toBase58String(value(eE))), DeleteEntry(R())]
669669 else throw("Strict value is not equal to itself.")
670670 }
671671 else throw("Strict value is not equal to itself.")
672672 }
673673
674674
675675
676676 @Callable(df)
677677 func put (ck,eH) = if ((0 > ck))
678678 then throw("Invalid slippageTolerance passed")
679679 else {
680680 let dl = di(df, ck, true)
681681 let cM = dl._2
682682 let bR = dl._7
683683 let ci = dl._9
684684 let cN = dl._10
685685 let cO = dl._11
686686 let eI = dl._12
687687 let eJ = dl._13
688688 let do = invoke(aD, "emit", [cM], nil)
689689 if ((do == do))
690690 then {
691691 let dp = {
692692 let dq = do
693693 if ($isInstanceOf(dq, "Address"))
694694 then {
695695 let dr = dq
696696 invoke(dr, "emit", [cM], nil)
697697 }
698698 else unit
699699 }
700700 if ((dp == dp))
701701 then {
702702 let eK = if ((cN > 0))
703703 then invoke(ba, "put", nil, [AttachedPayment(eI, cN)])
704704 else nil
705705 if ((eK == eK))
706706 then {
707707 let eL = if ((cO > 0))
708708 then invoke(ba, "put", nil, [AttachedPayment(eJ, cO)])
709709 else nil
710710 if ((eL == eL))
711711 then {
712712 let eM = if (eH)
713713 then {
714714 let eN = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
715715 if ((eN == eN))
716716 then nil
717717 else throw("Strict value is not equal to itself.")
718718 }
719719 else [ScriptTransfer(df.caller, cM, bR)]
720720 (ci ++ eM)
721721 }
722722 else throw("Strict value is not equal to itself.")
723723 }
724724 else throw("Strict value is not equal to itself.")
725725 }
726726 else throw("Strict value is not equal to itself.")
727727 }
728728 else throw("Strict value is not equal to itself.")
729729 }
730730
731731
732732
733733 @Callable(df)
734734 func putForFree (eO) = if ((0 > eO))
735735 then throw("Invalid value passed")
736736 else {
737737 let dl = di(df, eO, false)
738738 dl._9
739739 }
740740
741741
742742
743743 @Callable(df)
744744 func putOneTkn (eP,eQ) = {
745745 let eR = {
746746 let eS = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
747747 if ($isInstanceOf(eS, "Boolean"))
748748 then eS
749749 else throw(($getType(eS) + " couldn't be cast to Boolean"))
750750 }
751751 let eT = if (if (if (aF())
752752 then true
753753 else (aS == l))
754754 then true
755755 else (aS == n))
756756 then true
757757 else eR
758758 let ed = [if (if (!(eT))
759759 then true
760760 else ex(df))
761761 then true
762762 else aB("put operation is blocked by admin"), if ((size(df.payments) == 1))
763763 then true
764764 else aB("exactly 1 payment are expected")]
765765 if ((ed == ed))
766766 then {
767767 let eU = df.payments[0]
768768 let dw = eU.assetId
769769 let dv = eU.amount
770770 let X = df.caller
771771 let Y = df.transactionId
772772 let eV = du(dv, dw, X, Y)
773773 if ((eV == eV))
774774 then {
775775 let eW = eV._4
776776 let dt = eV._3
777777 let cP = eV._2
778778 let eX = eV._1
779779 let eY = if (if ((eP > 0))
780780 then (eP > eX)
781781 else false)
782782 then aB(makeString(["amount to receive is less than ", toString(eP)], ""))
783783 else eX
784784 let do = dm(eY)
785785 if ((do == do))
786786 then {
787787 let eM = if (eQ)
788788 then {
789789 let eZ = invoke(aZ, "stake", nil, [AttachedPayment(aT, eY)])
790790 if ((eZ == eZ))
791791 then nil
792792 else throw("Strict value is not equal to itself.")
793793 }
794794 else [ScriptTransfer(df.caller, eY, aT)]
795795 let fa = if ((dt > 0))
796796 then [ScriptTransfer(aE, dt, dw)]
797797 else nil
798798 $Tuple2(((cP ++ eM) ++ fa), eY)
799799 }
800800 else throw("Strict value is not equal to itself.")
801801 }
802802 else throw("Strict value is not equal to itself.")
803803 }
804804 else throw("Strict value is not equal to itself.")
805805 }
806806
807807
808808
809809 @Callable(df)
810810 func putOneTknREADONLY (dw,dv) = {
811811 let fb = du(dv, aK(dw), unit, unit)
812812 let eX = fb._1
813813 let cP = fb._2
814814 let dt = fb._3
815815 let eW = fb._4
816816 $Tuple2(nil, $Tuple3(eX, dt, eW))
817817 }
818818
819819
820820
821821 @Callable(df)
822822 func getOneTkn (fc,eP) = {
823823 let eR = {
824824 let eS = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
825825 if ($isInstanceOf(eS, "Boolean"))
826826 then eS
827827 else throw(($getType(eS) + " couldn't be cast to Boolean"))
828828 }
829829 let fd = if (if (aF())
830830 then true
831831 else (aS == n))
832832 then true
833833 else eR
834834 let ed = [if (if (!(fd))
835835 then true
836836 else ex(df))
837837 then true
838838 else aB("get operation is blocked by admin"), if ((size(df.payments) == 1))
839839 then true
840840 else aB("exactly 1 payment are expected")]
841841 if ((ed == ed))
842842 then {
843843 let ec = aK(fc)
844844 let eU = df.payments[0]
845845 let dw = eU.assetId
846846 let dK = eU.amount
847847 let X = df.caller
848848 let Y = df.transactionId
849849 let fe = eb(ec, dK, dw, X, Y)
850850 if ((fe == fe))
851851 then {
852852 let eW = fe._4
853853 let dt = fe._3
854854 let cP = fe._2
855855 let ff = fe._1
856856 let dn = if (if ((eP > 0))
857857 then (eP > ff)
858858 else false)
859859 then aB(makeString(["amount to receive is less than ", toString(eP)], ""))
860860 else ff
861861 let fg = invoke(aD, "burn", [dK], [AttachedPayment(dw, dK)])
862862 if ((fg == fg))
863863 then {
864864 let fh = [ScriptTransfer(X, dn, ec)]
865865 let fa = if ((dt > 0))
866866 then [ScriptTransfer(aE, dt, ec)]
867867 else nil
868868 $Tuple2(((cP ++ fh) ++ fa), dn)
869869 }
870870 else throw("Strict value is not equal to itself.")
871871 }
872872 else throw("Strict value is not equal to itself.")
873873 }
874874 else throw("Strict value is not equal to itself.")
875875 }
876876
877877
878878
879879 @Callable(df)
880880 func getOneTknREADONLY (ec,dK) = {
881881 let fi = eb(aK(ec), dK, aT, unit, unit)
882882 let ff = fi._1
883883 let cP = fi._2
884884 let dt = fi._3
885885 let eW = fi._4
886886 $Tuple2(nil, $Tuple3(ff, dt, eW))
887887 }
888888
889889
890890
891891 @Callable(df)
892892 func unstakeAndGetOneTkn (fj,fc,eP) = {
893893 let eR = {
894894 let eS = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
895895 if ($isInstanceOf(eS, "Boolean"))
896896 then eS
897897 else throw(($getType(eS) + " couldn't be cast to Boolean"))
898898 }
899899 let fd = if (if (aF())
900900 then true
901901 else (aS == n))
902902 then true
903903 else eR
904904 let ed = [if (if (!(fd))
905905 then true
906906 else ex(df))
907907 then true
908908 else aB("get operation is blocked by admin"), if ((size(df.payments) == 0))
909909 then true
910910 else aB("no payments are expected")]
911911 if ((ed == ed))
912912 then {
913913 let ec = aK(fc)
914914 let X = df.caller
915915 let Y = df.transactionId
916916 let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
917917 if ((fk == fk))
918918 then {
919919 let fl = eb(ec, fj, aT, X, Y)
920- let ff = fl._1
921- let cP = fl._2
922- let dt = fl._3
923- let eW = fl._4
924- let dn = if (if ((eP > 0))
925- then (eP > ff)
926- else false)
927- then aB(makeString(["amount to receive is less than ", toString(eP)], ""))
928- else ff
929- let fg = invoke(aD, "burn", [fj], [AttachedPayment(aT, fj)])
930- if ((fg == fg))
920+ if ((fl == fl))
931921 then {
932- let fh = [ScriptTransfer(df.caller, dn, ec)]
933- let fa = if ((dt > 0))
934- then [ScriptTransfer(aE, dt, ec)]
935- else nil
936- $Tuple2(((cP ++ fh) ++ fa), dn)
922+ let eW = fl._4
923+ let dt = fl._3
924+ let cP = fl._2
925+ let ff = fl._1
926+ let dn = if (if ((eP > 0))
927+ then (eP > ff)
928+ else false)
929+ then aB(makeString(["amount to receive is less than ", toString(eP)], ""))
930+ else ff
931+ let fg = invoke(aD, "burn", [fj], [AttachedPayment(aT, fj)])
932+ if ((fg == fg))
933+ then {
934+ let fh = [ScriptTransfer(df.caller, dn, ec)]
935+ let fa = if ((dt > 0))
936+ then [ScriptTransfer(aE, dt, ec)]
937+ else nil
938+ $Tuple2(((cP ++ fh) ++ fa), dn)
939+ }
940+ else throw("Strict value is not equal to itself.")
937941 }
938942 else throw("Strict value is not equal to itself.")
939943 }
940944 else throw("Strict value is not equal to itself.")
941945 }
942946 else throw("Strict value is not equal to itself.")
943947 }
944948
945949
946950
947951 @Callable(df)
948952 func get () = {
949953 let cA = de(df)
950954 let fm = cA._1
951955 let ch = cA._2
952956 let dh = cA._3
953957 let bP = cA._4
954958 let ci = cA._5
955959 let fn = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
956960 if ((fn == fn))
957961 then ci
958962 else throw("Strict value is not equal to itself.")
959963 }
960964
961965
962966
963967 @Callable(df)
964968 func getNoLess (fo,fp) = {
965969 let cA = de(df)
966970 let cg = cA._1
967971 let ch = cA._2
968972 let dh = cA._3
969973 let bP = cA._4
970974 let ci = cA._5
971975 if ((fo > cg))
972976 then throw(((("noLessThenAmtAsset failed: " + toString(cg)) + " < ") + toString(fo)))
973977 else if ((fp > ch))
974978 then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fp)))
975979 else {
976980 let fn = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
977981 if ((fn == fn))
978982 then ci
979983 else throw("Strict value is not equal to itself.")
980984 }
981985 }
982986
983987
984988
985989 @Callable(df)
986990 func unstakeAndGet (dn) = {
987991 let fq = if ((size(df.payments) != 0))
988992 then throw("No payments are expected")
989993 else true
990994 if ((fq == fq))
991995 then {
992996 let bE = aH()
993997 let bR = fromBase58String(bE[q])
994998 let fk = invoke(aZ, "unstake", [toBase58String(bR), dn], nil)
995999 if ((fk == fk))
9961000 then {
9971001 let cA = bN(toBase58String(df.transactionId), toBase58String(bR), dn, df.caller)
9981002 let bU = parseIntValue(cA._9)
9991003 let ci = cA._10
10001004 let fr = if (if (aF())
10011005 then true
10021006 else (bU == n))
10031007 then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
10041008 else true
10051009 if ((fr == fr))
10061010 then {
10071011 let fn = invoke(aD, "burn", [dn], [AttachedPayment(bR, dn)])
10081012 if ((fn == fn))
10091013 then ci
10101014 else throw("Strict value is not equal to itself.")
10111015 }
10121016 else throw("Strict value is not equal to itself.")
10131017 }
10141018 else throw("Strict value is not equal to itself.")
10151019 }
10161020 else throw("Strict value is not equal to itself.")
10171021 }
10181022
10191023
10201024
10211025 @Callable(df)
10221026 func unstakeAndGetNoLess (fj,fs,fp) = {
10231027 let fd = if (aF())
10241028 then true
10251029 else (aS == n)
10261030 let ed = [if (!(fd))
10271031 then true
10281032 else throw("get operation is blocked by admin"), if ((size(df.payments) == 0))
10291033 then true
10301034 else throw("no payments are expected")]
10311035 if ((ed == ed))
10321036 then {
10331037 let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
10341038 if ((fk == fk))
10351039 then {
10361040 let cA = bN(toBase58String(df.transactionId), toBase58String(aT), fj, df.caller)
10371041 let cg = cA._1
10381042 let ch = cA._2
10391043 let ci = cA._10
10401044 let ft = [if ((cg >= fs))
10411045 then true
10421046 else throw(makeString(["amount asset amount to receive is less than ", toString(fs)], "")), if ((ch >= fp))
10431047 then true
10441048 else throw(makeString(["price asset amount to receive is less than ", toString(fp)], ""))]
10451049 if ((ft == ft))
10461050 then {
10471051 let fn = invoke(aD, "burn", [fj], [AttachedPayment(aT, fj)])
10481052 if ((fn == fn))
10491053 then ci
10501054 else throw("Strict value is not equal to itself.")
10511055 }
10521056 else throw("Strict value is not equal to itself.")
10531057 }
10541058 else throw("Strict value is not equal to itself.")
10551059 }
10561060 else throw("Strict value is not equal to itself.")
10571061 }
10581062
10591063
10601064
10611065 @Callable(df)
10621066 func activate (fu,fv) = if ((toString(df.caller) != toString(aD)))
10631067 then throw("permissions denied")
10641068 else $Tuple2([StringEntry(aa(), fu), StringEntry(ab(), fv)], "success")
10651069
10661070
10671071
10681072 @Callable(df)
10691073 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aH())
10701074
10711075
10721076
10731077 @Callable(df)
10741078 func getAccBalanceWrapperREADONLY (br) = $Tuple2(nil, bq(br))
10751079
10761080
10771081
10781082 @Callable(df)
10791083 func calcPricesWrapperREADONLY (by,bz,bD) = {
10801084 let bM = bC(by, bz, bD)
10811085 $Tuple2(nil, [toString(bM[0]), toString(bM[1]), toString(bM[2])])
10821086 }
10831087
10841088
10851089
10861090 @Callable(df)
10871091 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
10881092
10891093
10901094
10911095 @Callable(df)
10921096 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
10931097
10941098
10951099
10961100 @Callable(df)
10971101 func calcPriceBigIntWrapperREADONLY (bt,bu) = $Tuple2(nil, toString(bs(parseBigIntValue(bt), parseBigIntValue(bu))))
10981102
10991103
11001104
11011105 @Callable(df)
11021106 func estimatePutOperationWrapperREADONLY (bO,ck,cl,cm,cn,co,X,cp,cq) = $Tuple2(nil, cj(bO, ck, cl, cm, cn, co, X, cp, cq))
11031107
11041108
11051109
11061110 @Callable(df)
11071111 func estimateGetOperationWrapperREADONLY (bO,bP,bQ,X) = {
11081112 let cA = bN(bO, bP, bQ, addressFromStringValue(X))
11091113 $Tuple2(nil, $Tuple10(cA._1, cA._2, cA._3, cA._4, cA._5, cA._6, cA._7, toString(cA._8), cA._9, cA._10))
11101114 }
11111115
11121116
11131117
11141118 @Callable(df)
11151119 func statsREADONLY () = {
11161120 let bE = aH()
11171121 let bR = fromBase58String(bE[q])
11181122 let cS = bE[r]
11191123 let cT = bE[s]
11201124 let ct = bE[v]
11211125 let cu = bE[w]
11221126 let bF = parseIntValue(bE[t])
11231127 let bG = parseIntValue(bE[u])
11241128 let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
11251129 let cU = bq(cS)
11261130 let cV = bq(cT)
11271131 let fx = if ((fw == 0))
11281132 then [e, e, e]
11291133 else bC(cU, cV, fw)
11301134 let cb = 0
11311135 let fy = G(fx[1], b)
11321136 let fz = G(fx[2], b)
11331137 let fA = value(getInteger(aD, ap(toString(this))))
11341138 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fw), toString(cb), toString(fy), toString(fz), toString(fA)], j))
11351139 }
11361140
11371141
11381142
11391143 @Callable(df)
11401144 func evaluatePutByAmountAssetREADONLY (cl) = {
11411145 let bE = aH()
11421146 let bR = fromBase58String(bE[q])
11431147 let cr = bE[r]
11441148 let bS = fromBase58String(cr)
11451149 let cs = bE[s]
11461150 let bT = fromBase58String(cs)
11471151 let bF = parseIntValue(bE[t])
11481152 let bG = parseIntValue(bE[u])
11491153 let bU = bE[p]
11501154 let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
11511155 let cU = bq(cr)
11521156 let cV = bq(cs)
11531157 let bA = D(cU, bF)
11541158 let bB = D(cV, bG)
11551159 let ca = if ((fw == 0))
11561160 then e
11571161 else bs(bB, bA)
11581162 let cx = D(cl, bF)
11591163 let cy = fraction(cx, ca, d)
11601164 let cn = G(cy, bG)
11611165 let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
11621166 let cI = dl._1
11631167 let fB = dl._3
11641168 let bW = dl._4
11651169 let bY = dl._5
11661170 let bV = dl._6
11671171 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
11681172 }
11691173
11701174
11711175
11721176 @Callable(df)
11731177 func evaluatePutByPriceAssetREADONLY (cn) = {
11741178 let bE = aH()
11751179 let bR = fromBase58String(bE[q])
11761180 let cr = bE[r]
11771181 let bS = fromBase58String(cr)
11781182 let cs = bE[s]
11791183 let bT = fromBase58String(cs)
11801184 let bF = parseIntValue(bE[t])
11811185 let bG = parseIntValue(bE[u])
11821186 let bU = bE[p]
11831187 let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
11841188 let fC = bq(cr)
11851189 let fD = bq(cs)
11861190 let fE = D(fC, bF)
11871191 let fF = D(fD, bG)
11881192 let ca = if ((fw == 0))
11891193 then e
11901194 else bs(fF, fE)
11911195 let cy = D(cn, bG)
11921196 let cx = fraction(cy, d, ca)
11931197 let cl = G(cx, bF)
11941198 let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
11951199 let cI = dl._1
11961200 let fB = dl._3
11971201 let bW = dl._4
11981202 let bY = dl._5
11991203 let bV = dl._6
12001204 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
12011205 }
12021206
12031207
12041208
12051209 @Callable(df)
12061210 func evaluateGetREADONLY (fG,fH) = {
12071211 let cA = bN("", fG, fH, this)
12081212 let cg = cA._1
12091213 let ch = cA._2
12101214 let bW = cA._5
12111215 let bY = cA._6
12121216 let bV = cA._7
12131217 let cb = cA._8
12141218 let bU = parseIntValue(cA._9)
12151219 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cg), toString(ch), toString(bW), toString(bY), toString(bV), toString(cb), toString(bU)], j))
12161220 }
12171221
12181222
12191223 @Verifier(fI)
12201224 func fJ () = {
12211225 let fK = {
12221226 let dq = eu()
12231227 if ($isInstanceOf(dq, "ByteVector"))
12241228 then {
12251229 let ey = dq
12261230 ey
12271231 }
12281232 else if ($isInstanceOf(dq, "Unit"))
12291233 then fI.senderPublicKey
12301234 else throw("Match error")
12311235 }
12321236 let dq = fI
12331237 if ($isInstanceOf(dq, "Order"))
12341238 then {
12351239 let cR = dq
12361240 let fL = aG()
12371241 let au = cQ(cR)
12381242 let av = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
12391243 let aw = sigVerify(cR.bodyBytes, cR.proofs[1], fL)
12401244 if (if (if (au)
12411245 then av
12421246 else false)
12431247 then aw
12441248 else false)
12451249 then true
12461250 else at(au, av, aw)
12471251 }
12481252 else if ($isInstanceOf(dq, "SetScriptTransaction"))
12491253 then {
12501254 let ev = dq
12511255 let fM = blake2b256(value(ev.script))
12521256 let fN = fromBase64String(value(getString(aD, ar())))
12531257 let fO = scriptHash(this)
12541258 if (if ((fN == fM))
12551259 then (fO != fM)
12561260 else false)
12571261 then true
12581262 else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
12591263 }
12601264 else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
12611265 }
12621266

github/deemru/w8io/026f985 
121.09 ms