tx · B2xhnz7vEsqM2BvPsZMRag1e4UFpd1MFUmf8KN7p5S6g

3MsMP2pb2p8MDd6Rxb7XEXqqwEhE8ATfyai:  -0.02300000 Waves

2023.02.20 16:51 [2458058] smart account 3MsMP2pb2p8MDd6Rxb7XEXqqwEhE8ATfyai > SELF 0.00000000 Waves

{ "type": 13, "id": "B2xhnz7vEsqM2BvPsZMRag1e4UFpd1MFUmf8KN7p5S6g", "fee": 2300000, "feeAssetId": null, "timestamp": 1676901161097, "version": 2, "chainId": 84, "sender": "3MsMP2pb2p8MDd6Rxb7XEXqqwEhE8ATfyai", "senderPublicKey": "2JEaBjtjvMoNGKZmL9QxYefa1VkMJM3vMW8rNvTs9R2H", "proofs": [ "393cxLKqB7JMXbXdo2SY92WKGA5C7h1MDQA58Gx8XfbfmVvJwDu8df4vHHbDB3CLqzGVGfLvZ5iduXhSuTxux1BJ" ], "script": "base64:BgKrJggCEgASBAoCCAgSAwoBCBIKCggICAgICAgIARIDCgEIEgYKBAgICAgSBAoCCBgSAwoBCBIECgIIGBIDCgEIEgASAwoBGBIKCggICAgICAEICBIECgIIARIDCgEBEgMKAQESBAoCCAESBgoECAgICBIECgIICBIECgIICBIECgIICBIDCgEIEgMKAQgSAwoBCBIDCgEIEgMKAQgSBAoCCAgiBlNDQUxFOCIFTVVMVDgiB1NDQUxFMTgiBk1VTFQxOCIOUE9PTFdFSUdIVE1VTFQiDkdXWHZpcnR1YWxQT09MIgxsYWJlbFBvb2xzTHAiDWRlZmF1bHRTcHJlYWQiEWRlY2ltYWxzTXVsdFByaWNlIgNTRVAiBUVNUFRZIgpQb29sQWN0aXZlIg9Qb29sUHV0RGlzYWJsZWQiE1Bvb2xNYXRjaGVyRGlzYWJsZWQiDFBvb2xTaHV0ZG93biISaWR4SW50ZXJuYWxBc3NldElkIg9pZHhSZXN1dEFjdGlvbnMiIGlkeElmQXNzZXRJZENhbGN1bGF0aW9uUGVyZm9ybWVkIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iC2lkeFBvb2xUeXBlIhNwb29sTGFiZWxXeEVtaXNzaW9uIg92YWxpZFBvb2xMYWJlbHMiFmtleUFsbG93ZWRMcFNjcmlwdEhhc2giHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2giIWtleUFsbG93ZWRMcFN0YWJsZUFkZG9uU2NyaXB0SGFzaCIMc3dhcENvbnRyYWN0IhBrZXlGYWN0b3J5Q29uZmlnIg9rZXlMcFRva2Vuc0xpc3QiEWtleVBvb2xTY3JpcHRIYXNoIg1rZXlNYXRjaGVyUHViIhhrZXlMZWdhY3lGYWN0b3J5Q29udHJhY3QiDmtleUxlZ2FjeVBvb2xzIhNrZXlNYW5hZ2VyUHVibGljS2V5IhprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleSIPa2V5QWRtaW5QdWJLZXlzIhZrZXlBc3NldHNTdG9yZUNvbnRyYWN0IhlrZXlWb3RpbmdFbWlzc2lvbkNvbnRyYWN0Ig5rZXlQcmljZUFzc2V0cyIQa2V5UHJpY2VEZWNpbWFscyITa2V5QWxsUG9vbHNTaHV0ZG93biIWa2V5TmV4dEludGVybmFsQXNzZXRJZCIPa2V5UG9vbFRvV2VpZ2h0Igtwb29sQWRkcmVzcyIWa2V5UG9vbFRvV2VpZ2h0SGlzdG9yeSIDbnVtIh9rZXlNYXBwaW5nc0ludGVybmFsMmJhc2VBc3NldElkIhFpbnRlcm5hbEJhc2VBc3NldCIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIg1rZXlQb29sQ29uZmlnIhNhbW91bnRBc3NldEludGVybmFsIhJwcmljZUFzc2V0SW50ZXJuYWwiIWtleVBvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCIOYXNzZXRzSW50ZXJuYWwiCyR0MDM3MDAzNzYyIiVrZXlBbGxQb29sc09uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkIh1rZXlNYXBwaW5nTHBBc3NldFRvUG9vbEFzc2V0cyIKbHBBc3NldFN0ciIda2V5TWFwcGluZ1Bvb2xBc3NldHNUb0xwYXNzZXQiGGludGVybmFsQW1vdW50QXNzZXRJZFN0ciIXaW50ZXJuYWxQcmljZUFzc2V0SWRTdHIiDWtleVBvb2xTcHJlYWQiKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzIhNwb29sQ29udHJhY3RBZGRyZXNzIilrZXlNYXBwaW5nUG9vbEFzc2V0c1RvUG9vbENvbnRyYWN0QWRkcmVzcyIfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldCIqa2V5TWFwcGluZ1Bvb2xMUEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzIg1rZXlXeEVtaXNzaW9uIg1hbW91bnRBc3NldElkIgxwcmljZUFzc2V0SWQiCGtleUluRmVlIg9rZXlJbkZlZURlZmF1bHQiCWtleU91dEZlZSIQa2V5T3V0RmVlRGVmYXVsdCIPZ2V0U3RyaW5nT3JGYWlsIgNrZXkiEGdldEJvb2xlYW5PckZhaWwiDGdldEludE9yRmFpbCIYSWR4RmFjdG9yeUNmZ1N0YWtpbmdEYXBwIhlJZHhGYWN0b3J5Q2ZnQm9vc3RpbmdEYXBwIhRJZHhGYWN0b3J5Q2ZnSWRvRGFwcCIVSWR4RmFjdG9yeUNmZ1RlYW1EYXBwIhlJZHhGYWN0b3J5Q2ZnRW1pc3Npb25EYXBwIhVJZHhGYWN0b3J5Q2ZnUmVzdERhcHAiGUlkeEZhY3RvcnlDZmdTbGlwcGFnZURhcHAiFElkeEZhY3RvcnlDZmdEYW9EYXBwIhpJZHhGYWN0b3J5Q2ZnTWFya2V0aW5nRGFwcCIaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHAiFklkeEZhY3RvcnlDZmdCaXJkc0RhcHAiGGdldEJvb3N0aW5nQWRkcmVzc09yRmFpbCIKZmFjdG9yeUNmZyIYZ2V0RW1pc3Npb25BZGRyZXNzT3JGYWlsIhdnZXRTdGFraW5nQWRkcmVzc09yRmFpbCIZZ2V0R3d4UmV3YXJkQWRkcmVzc09yRmFpbCIOZ2V0UHJpY2VBc3NldHMiByRtYXRjaDAiAXMiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0IhVwZXJtaXNzaW9uRGVuaWVkRXJyb3IiCXRlc3RFcnJvciIIbXVzdFRoaXMiAWkiC211c3RNYW5hZ2VyIgJwayIQZGF0YUZhY3RvcnlDZmdWMyIOc3Rha2luZ0FkZHJlc3MiD2Jvb3N0aW5nQWRkcmVzcyILaWRvQ29udHJhY3QiDHRlYW1Db250cmFjdCIQZW1pc3Npb25Db250cmFjdCIMcmVzdENvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IgtkYW9Db250cmFjdCIRbWFya2V0aW5nQ29udHJhY3QiEmd3eFJld2FyZHNDb250cmFjdCINYmlyZHNDb250cmFjdCIOZGF0YUZhY3RvcnlDZmciC2RhdGFQb29sQ2ZnIgpwb29sU3RhdHVzIglscEFzc2V0SWQiDmFtb3VudEFzc2V0U3RyIg1wcmljZUFzc2V0U3RyIhNhbW91bnRBc3NldERlY2ltYWxzIhJwcmljZUFzc2V0RGVjaW1hbHMiFWFtb3VudEFzc2V0SW50ZXJuYWxJZCIUcHJpY2VBc3NldEludGVybmFsSWQiD2xwQXNzZXREZWNpbWFscyIIcG9vbFR5cGUiFWRhdGFNYXBwaW5nUG9vbEFzc2V0cyIWaW50ZXJuYWxBbW91bnRBc3NldFN0ciIVaW50ZXJuYWxQcmljZUFzc2V0U3RyIg1nZXRQb29sQ29uZmlnIgpwb29sQXNzZXRzIhpnZXRJbnRlcm5hbEFzc2V0SWRPckNyZWF0ZSIKYXNzZXRJZFN0ciILaW5jcmVtZW50b3IiD2ludGVybmFsQXNzZXRJZCIYY3VycmVudEluZGV4T2ZJbnRlcm5hbElkIgZyZXN1bHQiEm5ld0ludGVybmFsQXNzZXRJZCIJbXVzdEFkbWluIghhZG1pblBLcyIJaXNNYW5hZ2VyIhZpbnRPckRlZmF1bHRPckZhbGxiYWNrIgprZXlEZWZhdWx0Ig12YWx1ZUZhbGxiYWNrIhJwb29sRXhpc3RzSW50ZXJuYWwiBGFtQXMiBHByQXMiA2NmZyIKY2ZnUmV2ZXJzZSIGZXhpc3RzIgZhc3NldDEiBmFzc2V0MiIJYXNzZXROdW0xIglhc3NldE51bTIiAmVlIgNyZXMiAmxwIg9zdGFraW5nQ29udHJhY3QiEGJvb3N0aW5nQ29udHJhY3QiEHNscGlwYWdlQ29udHJhY3QiDXByaWNlRGVjaW1hbHMiC2NoZWNrQ2FsbGVyIhBtYXRoY2hlclB1YjU4U3RyIgptYXRoY2VyUHViIhVsZWdhY3lGYWN0b3J5Q29udHJhY3QiC2xlZ2FjeVBvb2xzIhNhc3NldHNTdG9yZUNvbnRyYWN0IhZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0IgtwcmljZUFzc2V0cyIFY2hla3MiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSIMYWRtaW5QdWJLZXlzIgtscEFzc2V0TmFtZSIMbHBBc3NldERlc2NyIgpwb29sV2VpZ2h0IgRsb2dvIhdpbnRlcm5hbEFtb3VudEFzc2V0RGF0YSIVaW50ZXJuYWxBbW91bnRBc3NldElkIhZpbnRlcm5hbFByaWNlQXNzZXREYXRhIhRpbnRlcm5hbFByaWNlQXNzZXRJZCIVcG9vbEFjY291bnRTY3JpcHRIYXNoIhxldGhhbG9uUG9vbEFjY291bnRTY3JpcHRIYXNoIgpwb29sRXhpc3RzIg9wb29sQ29uZmlnVmFsdWUiFGFtb3VudEFzc2V0c0RlY2ltYWxzIhNwcmljZUFzc2V0c0RlY2ltYWxzIhJscEFzc2V0SXNzdWVBY3Rpb24iDGxwQXNzZXRJZFN0ciIYcG9vbEFjdGl2YXRlSW52b2tlUmVzdWx0IhhjcmVhdGVPclVwZGF0ZUxwQXNzZXRJbnYiEmFkZFBvb2xzTHBMYWJlbEludiIKc2V0TG9nb0ludiIQYWRkQXNzZXRzTGlua0ludiIbaW5jcmVhc2VBc3NldFBvb2xzTnVtYmVySW52IgluZXdTdGF0dXMiCnBvb2xDb25maWciCmxwQXNzZXREY20iDGFtb3VudFRvRW1pdCIGY2FsbGVyIgxvcmlnaW5DYWxsZXIiEGxwQXNzZXRSZXF1ZXN0ZWQiB2xwQXNzZXQiDGFtb3VudFRvQnVybiIHcGF5bWVudCINcGF5bWVudEFtb3VudCIPaW5BbW91bnRBc3NldElkIhpscEFzc2V0UmVxdWVzdGVkRm9yQnVybmluZyIFc2hhcmUiDXBvb2xXZWlnaHRLZXkiDGd3eFdlaWdodEtleSIJZ3d4V2VpZ2h0Ig1wb29sV2VpZ2h0TmV3IhFvbk1vZGlmeVdlaWdodEludiIVZ3d4VmlydHVhbFBvb2xBY3Rpb25zIhRwb29sV2VpZ2h0SGlzdG9yeUtleSIXcG9vbFdlaWdodEhpc3RvcnlPclVuaXQiGHBvb2xXZWlnaHRIaXN0b3J5QWN0aW9ucyIOYnRjUG9vbEFkZHJlc3MiDmV0aFBvb2xBZGRyZXNzIhFldGhCdGNQb29sQWRkcmVzcyITdXNkY1VzZHRQb29sQWRkcmVzcyIPZXRoQnRjV2VpZ2h0TmV3IhF1c2RjVXNkdFdlaWdodE5ldyIPd2VpZ2h0RGVjcmVtZW50IgtzdGFraW5nRGFwcCINZ3d4UmV3YXJkRGFwcCIMYnRjV2VpZ2h0S0VZIgxldGhXZWlnaHRLRVkiD2V0aEJ0Y1dlaWdodEtFWSIRdXNkY1VzZHRXZWlnaHRLRVkiCWJ0Y1dlaWdodCIJZXRoV2VpZ2h0IgxidGNXZWlnaHROZXciDGV0aFdlaWdodE5ldyIPYnRjTHBBc3NldElkU3RyIg9ldGhMcEFzc2V0SWRTdHIiEmV0aEJ0Y0xwQXNzZXRJZFN0ciIUdXNkY1VzZHRMcEFzc2V0SWRTdHIiEW9uTW9kaWZ5V2VpZ2h0QnRjIhFvbk1vZGlmeVdlaWdodEV0aCIUb25Nb2RpZnlXZWlnaHRFdGhCdGMiFm9uTW9kaWZ5V2VpZ2h0VXNkY1VzZHQiCWhhdmVMYWJlbCIBYiIHYXNzZXRJZCIUY2hlY2tQcmljZUFzc2V0c1NpemUiAmNiIgNhY2MiCnByaWNlQXNzZXQiAXIiB2FjdGlvbnMiAiRsIgIkcyIFJGFjYzAiBSRmMF8xIgIkYSICJGkiBSRmMF8yIh5wb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiImFsbFBvb2xzT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiA2ZlZSICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5ZwABYQAIAAFiAIDC1y8AAWMAEgABZAkAtgIBAICAkLu61q3wDQABZQUBYgABZgIOR1dYdmlydHVhbFBPT0wAAWcCCFBPT0xTX0xQAAFoAICJegABaQkAaAIJAGgCAGQA6AcA6AcAAWoCAl9fAAFrAgAAAWwAAQABbQACAAFuAAMAAW8ABAABcAABAAFxAAIAAXIAAwABcwABAAF0AAIAAXUAAwABdgAEAAF3AAUAAXgABgABeQAHAAF6AAgAAUEACQABQgAKAAFDAAsAAUQCC1dYX0VNSVNTSU9OAAFFCQDMCAIFAUQFA25pbAEBRgACFyVzX19hbGxvd2VkTHBTY3JpcHRIYXNoAQFHAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBAUgAAiIlc19fYWxsb3dlZExwU3RhYmxlQWRkb25TY3JpcHRIYXNoAQFJAAIQJXNfX3N3YXBDb250cmFjdAEBSgACESVzX19mYWN0b3J5Q29uZmlnAQFLAAIQJXNfX2xwVG9rZW5zTGlzdAEBTAACFiVzJXNfX3Bvb2xfX3NjcmlwdEhhc2gBAU0AAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAU4AAhklc19fbGVnYWN5RmFjdG9yeUNvbnRyYWN0AQFPAAIPJXNfX2xlZ2FjeVBvb2xzAQFQAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVEAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVIAAhAlc19fYWRtaW5QdWJLZXlzAQFTAAIXJXNfX2Fzc2V0c1N0b3JlQ29udHJhY3QBAVQAAholc19fdm90aW5nRW1pc3Npb25Db250cmFjdAEBVQAJALkJAgkAzAgCAgIlcwkAzAgCAgtwcmljZUFzc2V0cwUDbmlsBQFqAQFWAAIRJXNfX3ByaWNlRGVjaW1hbHMBAVcAAgwlc19fc2h1dGRvd24BAVgAAhclc19fbmV4dEludGVybmFsQXNzZXRJZAEBWQEBWgkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FAVoBAmFhAgFaAmFiCQCsAgIJAKwCAgkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FAVoCAl9fCQCkAwEFAmFiAQJhYwECYWQJAKwCAgIoJXMlcyVkX19tYXBwaW5nc19faW50ZXJuYWwyYmFzZUFzc2V0SWRfXwkApAMBBQJhZAECYWUBAmFmCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmFmAQJhZwICYWgCYWkJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFoAgJfXwUCYWkCCF9fY29uZmlnAQJhagECYWsEAmFsBQJhawQCYWgIBQJhbAJfMQQCYWkIBQJhbAJfMgkAuQkCCQDMCAICBiVkJWQlcwkAzAgCCQCkAwEFAmFoCQDMCAIJAKQDAQUCYWkJAMwIAgIab25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQFA25pbAUBagECYW0ACQC5CQIJAMwIAgICJXMJAMwIAgIab25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQFA25pbAUBagECYW4BAmFvCQCsAgIJAKwCAgIIJXMlcyVzX18FAmFvAhhfX21hcHBpbmdzX19scEFzc2V0MlBvb2wBAmFwAgJhcQJhcgkArAICCQCsAgIJAKwCAgkArAICAgolZCVkJXMlc19fBQJhcQICX18FAmFyAh5fX21hcHBpbmdzX19Qb29sQXNzZXRzMkxwQXNzZXQBAmFzAQFaCQCsAgICDiVzJXNfX3NwcmVhZF9fBQFaAQJhdAECYXUJAKwCAgkArAICAgglcyVzJXNfXwUCYXUCI19fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJQb29sQXNzZXRzAQJhdgICYXECYXIJAKwCAgkArAICCQCsAgIJAKwCAgIKJWQlZCVzJXNfXwkApAMBBQJhcQICX18JAKQDAQUCYXICI19fbWFwcGluZ3NfX3Bvb2xBc3NldHMyUG9vbENvbnRyYWN0AQJhdwECYXUJAKwCAgkArAICAgglcyVzJXNfXwUCYXUCIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0AQJheAECYW8JAKwCAgkArAICAgglcyVzJXNfXwUCYW8CIF9fbWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0AQJheQICYXoCYUEJAKwCAgkArAICCQCsAgICFCVzJXMlc19fd3hFbWlzc2lvbl9fBQJhegICX18FAmFBAQJhQgEBWgkArAICAg0lcyVzX19pbkZlZV9fBQFaAQJhQwACECVzX19pbkZlZURlZmF1bHQBAmFEAQFaCQCsAgICDiVzJXNfX291dEZlZV9fBQFaAQJhRQACESVzX19vdXRGZWVEZWZhdWx0AQJhRgECYUcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQJhRwkArAICAhVObyBkYXRhIGZvciB0aGlzLmtleT0FAmFHAQJhSAECYUcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmwgCBQR0aGlzBQJhRwkArAICAhVObyBkYXRhIGZvciB0aGlzLmtleT0FAmFHAQJhSQECYUcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBQJhRwkArAICAhVObyBkYXRhIGZvciB0aGlzLmtleT0FAmFHAAJhSgABAAJhSwACAAJhTAADAAJhTQAEAAJhTgAFAAJhTwAGAAJhUAAHAAJhUQAIAAJhUgAJAAJhUwAKAAJhVAALAQJhVQECYVYJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYVYFAmFLAQJhVwECYVYJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYVYFAmFOAQJhWAECYVYJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYVYFAmFKAQJhWQECYVYJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYVYFAmFTAQJhWgAEAmJhCQCiCAEJAQFVAAMJAAECBQJiYQIGU3RyaW5nBAJiYgUCYmEDCQAAAgkAsQIBBQJiYgAABQNuaWwJALUJAgUCYmIFAWoFA25pbAECYmMABAJiYQkAoggBCQEBUAADCQABAgUCYmECBlN0cmluZwQCYmIFAmJhCQDZBAEFAmJiAwkAAQIFAmJhAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmJkAAQCYmEJAKIIAQkBAVEAAwkAAQIFAmJhAgZTdHJpbmcEAmJiBQJiYQkA2QQBBQJiYgMJAAECBQJiYQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJiZQkAAgECEVBlcm1pc3Npb24gZGVuaWVkAAJiZgkAAgECD1Rlc3QgZXJyb3IgaGVyZQECYmcBAmJoAwkAAAIIBQJiaAZjYWxsZXIFBHRoaXMGBQJiZQECYmkBAmJoBAJiYQkBAmJjAAMJAAECBQJiYQIKQnl0ZVZlY3RvcgQCYmoFAmJhAwkAAAIIBQJiaA9jYWxsZXJQdWJsaWNLZXkFAmJqBgUCYmUDCQABAgUCYmECBFVuaXQJAQJiZwEFAmJoCQACAQILTWF0Y2ggZXJyb3IBAmJrCwJibAJibQJibgJibwJicAJicQJicgJicwJidAJidQJidgkAuQkCCQDMCAICFiVzJXMlcyVzJXMlcyVzJXMlcyVzJXMJAMwIAgUCYmwJAMwIAgUCYm0JAMwIAgUCYm4JAMwIAgUCYm8JAMwIAgUCYnAJAMwIAgUCYnEJAMwIAgUCYnIJAMwIAgUCYnMJAMwIAgUCYnQJAMwIAgUCYnUJAMwIAgUCYnYFA25pbAUBagECYncHAmJsAmJtAmJuAmJvAmJwAmJxAmJyCQC5CQIJAMwIAgIMJXMlcyVzJXMlcyVzCQDMCAIFAmJsCQDMCAIFAmJtCQDMCAIFAmJuCQDMCAIFAmJvCQDMCAIFAmJwCQDMCAIFAmJxCQDMCAIFAmJyBQNuaWwFAWoBAmJ4CwFaAmJ5AmJ6AmJBAmJCAmJDAmJEAmJFAmJGAmJHAmJICQC5CQIJAMwIAgIWJXMlZCVzJXMlcyVkJWQlZCVkJWQlcwkAzAgCBQFaCQDMCAIFAmJ5CQDMCAIFAmJ6CQDMCAIFAmJBCQDMCAIFAmJCCQDMCAIJAKQDAQUCYkMJAMwIAgkApAMBBQJiRAkAzAgCCQCkAwEFAmJFCQDMCAIJAKQDAQUCYkYJAMwIAgkApAMBBQJiRwkAzAgCBQJiSAUDbmlsBQFqAQJiSQICYkoCYksJALkJAgkAzAgCAgQlZCVkCQDMCAIJAKQDAQUCYkoJAMwIAgkApAMBBQJiSwUDbmlsBQFqAQJiTAEBWgQCYk0JALUJAgkBAmFGAQkBAmF0AQUBWgUBagQCYWgJAJEDAgUCYk0AAQQCYWkJAJEDAgUCYk0AAgkAtQkCCQECYUYBCQECYWcCBQJhaAUCYWkFAWoBAmJOAgJiTwJiUAQCYlEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmFlAQUCYk8AAAQCYlIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAVgAAAAEAmJTAwkAAAIFAmJRAAAEAmJUCQBkAgUCYlIFAmJQCQCVCgMFAmJUCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAAFAmJUCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWUBBQJiTwUCYlQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFjAQUCYlQFAmJPBQNuaWwGCQCVCgMFAmJRBQNuaWwHBQJiUwECYlUBAmJoBAJiVgkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEJAQFSAAUBawUBagMJAQ9jb250YWluc0VsZW1lbnQCBQJiVgkA2AQBCAUCYmgPY2FsbGVyUHVibGljS2V5BgQCYlcJAQJiaQEFAmJoAwkAAAIFAmJXBQJiVwYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmJYAwJhRwJiWQJiWgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhRwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJiWQUCYloBAmNhAgJhegJhQQQCYWgJAJ8IAQkBAmFlAQUCYXoEAmFpCQCfCAEJAQJhZQEFAmFBAwMJAAACBQJhaAUEdW5pdAYJAAACBQJhaQUEdW5pdAcEAmNiCQCkAwEJAQV2YWx1ZQEFAmFoBAJjYwkApAMBCQEFdmFsdWUBBQJhaQQCY2QJAKIIAQkBAmFnAgUCY2IFAmNjBAJjZQkAoggBCQECYWcCBQJjYwUCY2IEAmNmAwkBAiE9AgUCY2QFBHVuaXQGCQECIT0CBQJjZQUEdW5pdAUCY2YbAmJoARdnZXRTd2FwQ29udHJhY3RSRUFET05MWQAJAJQKAgUDbmlsCQECYUYBCQEBSQACYmgBIGdldExwQXNzZXRGcm9tUG9vbEFzc2V0c1JFQURPTkxZAgJjZwJjaAMDCQAAAgUCY2cCLDhMUVc4ZjdQNWQ1UFpNN0d0WkVCZ2FxUlBHU3pTM0RmUHVpWHJVUko0QUpTCQAAAgUCY2gCBVdBVkVTBwkAlAoCBQNuaWwFBHVuaXQEAmNpCQEFdmFsdWUBCQCaCAIFBHRoaXMJAQJhZQEFAmNnBAJjagkBBXZhbHVlAQkAmggCBQR0aGlzCQECYWUBBQJjaAQCY2sJAJ0IAgUEdGhpcwkBAmFwAgkApAMBBQJjaQkApAMBBQJjagQCY2wDCQAAAgUCY2sFBHVuaXQFBHVuaXQJALACAgkBBXZhbHVlAQUCY2sABAkAlAoCBQNuaWwFAmNsAmJoASFnZXRQb29sQWRkcmVzc0Zyb21McEFzc2V0UkVBRE9OTFkBAmNtCQCUCgIFA25pbAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQECYXgBBQJjbQIAAmJoAQtjb25zdHJ1Y3RvcggCY24CY28CYm4CYm8CYnACYnECY3ACY3EEAmNyCQECYmkBBQJiaAMJAAACBQJjcgUCY3IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAUoACQECYncHBQJjbgUCY28FAmJuBQJibwUCYnAFAmJxBQJjcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYABQJjcQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJoAQ1jb25zdHJ1Y3RvclYyAQJjcwQCY3IJAQJiaQEFAmJoAwkAAAIFAmNyBQJjcgQCY3QJAKcIAQkA2QQBBQJjcwMJAAACBQJjdAUCY3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAU0ABQJjcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJoAQ1jb25zdHJ1Y3RvclYzBAJicwJidAJidQJidgQCY3IJAQJiaQEFAmJoAwkAAAIFAmNyBQJjcgQCYVYJALUJAgkBAmFGAQkBAUoABQFqCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFKAAkBAmJrCwkAkQMCBQJhVgABCQCRAwIFAmFWAAIJAJEDAgUCYVYAAwkAkQMCBQJhVgAECQCRAwIFAmFWAAUJAJEDAgUCYVYABgkAkQMCBQJhVgAHBQJicwUCYnQFAmJ1BQJidgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJoAQ1jb25zdHJ1Y3RvclY0AgJjdQJjdgQCY3IJAQJiaQEFAmJoAwkAAAIFAmNyBQJjcgkAzAgCCQELU3RyaW5nRW50cnkCCQEBTgAFAmN1CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFPAAkAuQkCBQJjdgUBagUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJoAQ1jb25zdHJ1Y3RvclY1AQJjdwQCY3IJAQJiaQEFAmJoAwkAAAIFAmNyBQJjcgkAzAgCCQELU3RyaW5nRW50cnkCCQEBUwAFAmN3BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYmgBDWNvbnN0cnVjdG9yVjYCAmN4AmN5BAJjegkAzAgCCQECYmkBBQJiaAkAzAgCAwkBAiE9AgkApggBBQJjeAUEdW5pdAYCKGludmFsaWQgdm90aW5nIGVtaXNzaW9uIGNvbnRyYWN0IGFkZHJlc3MFA25pbAMJAAACBQJjegUCY3oJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVQABQJjeAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVQAJALkJAgUCY3kFAWoFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiaAEKc2V0TWFuYWdlcgECY0EEAmNyCQECYmkBBQJiaAMJAAACBQJjcgUCY3IEAmNCCQDZBAEFAmNB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YkEFA25pbAUDbmlsAwkAAAIFAmRiBQJkYgkAlAoCCQDOCAIJAM4IAggFAmNLAl8yCAUCY00CXzIJAMwIAgUCY1UJAMwIAgkBBEJ1cm4CBQJiegABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZwIJAKQDAQUCY0wJAKQDAQUCY04JAQJieAsFAVoJAKQDAQUBbAUCY1YFAmJBBQJiQgUCY1MFAmNUBQJjTAUCY04FAWkFAmJICQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhbgEFAmNWCQECYkkCBQJjTAUCY04JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFwAgkApAMBBQJjTAkApAMBBQJjTgkArAICAgQlc19fBQJjVgkAzAgCCQELU3RyaW5nRW50cnkCCQECYXQBBQFaCQECYkkCBQJjTAUCY04JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmF2AgUCY0wFAmNOBQFaCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJheAEFAmNWBQFaCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhdwEFAVoFAmNWCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWQEFAVoFAmNJCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXMBBQFaBQFoBQNuaWwFAmNWCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJoAQptYW5hZ2VQb29sAgFaAmRjBAJjcgkBAmJpAQUCYmgDCQAAAgUCY3IFAmNyBAJkZAkBAmJMAQUBWgQCYnkJAJEDAgUCZGQFAXQEAmNWCQCRAwIFAmRkBQF1BAJiQQkAkQMCBQJkZAUBdgQCYkIJAJEDAgUCZGQFAXcEAmNTCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGQFAXgEAmNUCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGQFAXkEAmNMCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGQFAXoEAmNOCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGQFAUEEAmRlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGQFAUIEAmJICQCRAwIFAmRkBQFDCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZwIJAKQDAQUCY0wJAKQDAQUCY04JAQJieAsFAVoJAKQDAQUCZGMFAmNWBQJiQQUCYkIFAmNTBQJjVAUCY0wFAmNOBQJkZQUCYkgFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiaAEEZW1pdAECZGYEAmRnCAUCYmgGY2FsbGVyBAJkaAgFAmJoDG9yaWdpbkNhbGxlcgQCZGkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQECYXcBCQClCAEFAmRnAh1JbnZhbGlkIExQIGFkZHJlc3MgY2FsbGVkIG1lLgQCZGoJANkEAQUCZGkEAmN2CQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBAU8ABQFrBQFqBAJjdQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJAQFOAAIoTGVnYWN5IGZhY3RvcnkgY29udHJhY3QgZG9lcyBub3QgZXhpc3RzLgMJAGcCAAAFAmRmBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUCY3YJAKUIAQUCZGcJAJQKAgUDbmlsBQJjdQkAlAoCCQDMCAIJAQdSZWlzc3VlAwUCZGoFAmRmBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCYmgGY2FsbGVyBQJkZgUCZGoFA25pbAIHc3VjY2VzcwJiaAEEYnVybgECZGsEAmRnCAUCYmgGY2FsbGVyBAJkaAgFAmJoDG9yaWdpbkNhbGxlcgQCZGwJAQV2YWx1ZQEJAJEDAggFAmJoCHBheW1lbnRzAAAEAmRtCQEFdmFsdWUBCAUCZGwGYW1vdW50BAJkbgkA2AQBCQEFdmFsdWUBCAUCZGwHYXNzZXRJZAQCZG8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQECYXcBCQClCAEFAmRnAh1JbnZhbGlkIExQIGFkZHJlc3MgY2FsbGVkIG1lLgMJAQIhPQIFAmRuBQJkbwkAAgECFUludmFsaWQgYXNzZXQgcGFzc2VkLgMJAQIhPQIFAmRrBQJkbQkAAgECFkludmFsaWQgYW1vdW50IHBhc3NlZC4EAmRqCQDZBAEFAmRvCQCUCgIJAMwIAgkBBEJ1cm4CBQJkagUCZGsFA25pbAIHc3VjY2VzcwJiaAEMbW9kaWZ5V2VpZ2h0AgJiegJkcAQCY3IDCQAAAgkA2AQBCAgFAmJoBmNhbGxlcgVieXRlcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEBVAACAAYJAQJiaQEFAmJoAwkAAAIFAmNyBQJjcgQCYXUJAQJhRgEJAQJheAEFAmJ6BAJkcQkBAVkBBQJhdQQCZHIJAQFZAQUBZgQCZHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUCZHIAAAQCY0kJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUCZHEAAAQCZHQFAmRwBAJhVgkAtQkCCQECYUYBCQEBSgAFAWoEAmNuCQECYVgBBQJhVgQCZHUJAPwHBAUCY24CDm9uTW9kaWZ5V2VpZ2h0CQDMCAIFAmJ6CQDMCAIFAmF1BQNuaWwFA25pbAMJAAACBQJkdQUCZHUEAmR2AwkAAAIFAmRzAAAFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZHIAAAUDbmlsBAJkdwkBAmFhAgUCYXUAAAQCZHgJAJ8IAQUCZHcEAmR5AwkAAAIFAmR4BQR1bml0BQNuaWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQUCZHcFA25pbAkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFAmRxBQJkdAUDbmlsBQJkdgUCZHkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYmgBDW1vZGlmeVdlaWdodHMEAmR6AmRBAmRCAmRDBAJjcgkBAmJpAQUCYmgDCQAAAgUCY3IFAmNyBAJkRAkAaQIJAGgCAAUFAWUAZAQCZEUJAGkCCQBoAgAFBQFlAGQEAmRGCQBpAgkAaAIABQUBZQBkBAJhVgkAtQkCCQECYUYBCQEBSgAFAWoEAmRHCQECYVgBBQJhVgQCZEgJAQJhWQEFAmFWBAJkSQkBAVkBBQJkegQCZEoJAQFZAQUCZEEEAmRLCQEBWQEFAmRCBAJkTAkBAVkBBQJkQwQCZE0JAQJhSQEFAmRJBAJkTgkBAmFJAQUCZEoEAmRPCQBlAgUCZE0FAmRGBAJkUAkAZQIFAmROBQJkRgMJAGcCAAAFAmRPCQACAQkArAICAhZpbnZhbGlkIGJ0Y1dlaWdodE5ldzogCQCkAwEFAmRPAwkAZwIAAAUCZFAJAAIBCQCsAgICFmludmFsaWQgZXRoV2VpZ2h0TmV3OiAJAKQDAQUCZFAEAmRRCQECYUYBCQECYXcBBQJkegQCZFIJAQJhRgEJAQJhdwEFAmRBBAJkUwkBAmFGAQkBAmF3AQUCZEIEAmRUCQECYUYBCQECYXcBBQJkQwQCZFUJAPwHBAUCZEcCDm9uTW9kaWZ5V2VpZ2h0CQDMCAIFAmRRCQDMCAIFAmR6BQNuaWwFA25pbAMJAAACBQJkVQUCZFUEAmRWCQD8BwQFAmRHAg5vbk1vZGlmeVdlaWdodAkAzAgCBQJkUgkAzAgCBQJkQQUDbmlsBQNuaWwDCQAAAgUCZFYFAmRWBAJkVwkA/AcEBQJkRwIOb25Nb2RpZnlXZWlnaHQJAMwIAgUCZFMJAMwIAgUCZEIFA25pbAUDbmlsAwkAAAIFAmRXBQJkVwQCZFgJAPwHBAUCZEcCDm9uTW9kaWZ5V2VpZ2h0CQDMCAIFAmRUCQDMCAIFAmRDBQNuaWwFA25pbAMJAAACBQJkWAUCZFgJAMwIAgkBDEludGVnZXJFbnRyeQIFAmRJBQJkTwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZEoFAmRQCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJkSwUCZEQJAMwIAgkBDEludGVnZXJFbnRyeQIFAmRMBQJkRQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFhAgUCZHoAAAUCZE0JAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYQIFAmRBAAAFAmROCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWECBQJkQgAABQJkRAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFhAgUCZEMAAAUCZEUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiaAEYY2hlY2tXeEVtaXNzaW9uUG9vbExhYmVsAgJhegJhQQQCZFkEAmJhCQCgCAEJAQJheQIFAmF6BQJhQQMJAAECBQJiYQIHQm9vbGVhbgQCZFoFAmJhBQJkWgcJAJQKAgUDbmlsBQJkWQJiaAEWc2V0V3hFbWlzc2lvblBvb2xMYWJlbAICYXoCYUEEAmNyCQECYlUBBQJiaAMJAAACBQJjcgUCY3IJAJQKAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAmF5AgUCYXoFAmFBBgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJoARlkZWxldGVXeEVtaXNzaW9uUG9vbExhYmVsAgJhegJhQQQCY3IDCQECYmcBBQJiaAYJAQJiVQEFAmJoAwkAAAIFAmNyBQJjcgkAlAoCCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJheQIFAmF6BQJhQQUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJoARJvblZlcmlmaWNhdGlvbkxvc3MBAmVhBAJjcgMJAAACCQDYBAEICAUCYmgGY2FsbGVyBWJ5dGVzCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQFTAAIABgkBAmJpAQUCYmgDCQAAAgUCY3IFAmNyBAJjeQkBAmFaAAQCZWIDCQBmAgkAkAMBBQJjeQAABgkAAgECFGludmFsaWQgcHJpY2UgYXNzZXRzAwkAAAIFAmViBQJlYgoBAmVjAgJlZAJlZQQCZWYJAPwHBAUEdGhpcwIZZGVsZXRlV3hFbWlzc2lvblBvb2xMYWJlbAkAzAgCBQJlYQkAzAgCBQJlZQUDbmlsBQNuaWwDCQAAAgUCZWYFAmVmBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAJlZwoAAmVoBQJjeQoAAmVpCQCQAwEFAmVoCgACZWoFBHVuaXQKAQJlawICZWwCZW0DCQBnAgUCZW0FAmVpBQJlbAkBAmVjAgUCZWwJAJEDAgUCZWgFAmVtCgECZW4CAmVsAmVtAwkAZwIFAmVtBQJlaQUCZWwJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAxCQECZW4CCQECZWsCBQJlagAAAAEDCQAAAgUCZWcFAmVnCQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJiaAEoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQEBWgQCZGQJAQJiTAEFAVoEAmFrCQCUCgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkZAUBegkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRkBQFBBAJlbwkBC3ZhbHVlT3JFbHNlAgkAoAgBCQECYWoBBQJhawcEAmVwCQELdmFsdWVPckVsc2UCCQCgCAEJAQJhbQAHCQCUCgIFA25pbAMFAmVwBgUCZW8CYmgBEGdldEluRmVlUkVBRE9OTFkBAVoEAmVxCQECYlgDCQECYUIBBQFaCQECYUMAAAAJAJQKAgUDbmlsBQJlcQJiaAERZ2V0T3V0RmVlUkVBRE9OTFkBAVoEAmVxCQECYlgDCQECYUQBBQFaCQECYUUACQBrAwAKBQFiAJBOCQCUCgIFA25pbAUCZXECYmgBFWdldFBvb2xTdGF0dXNSRUFET05MWQEBWgQCYk0JALUJAgkBAmFGAQkBAmF0AQUBWgUBagQCYWgJAJEDAgUCYk0AAQQCYWkJAJEDAgUCYk0AAgQCY2QJALUJAgkBAmFGAQkBAmFnAgUCYWgFAmFpBQFqCQCUCgIFA25pbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNkBQF0AmJoARJwb29sRXhpc3RzUkVBRE9OTFkCAmF6AmFBCQCUCgIFA25pbAkBAmNhAgUCYXoFAmFBAQJlcgECZXMABAJldAQCYmEJAQJiYwADCQABAgUCYmECCkJ5dGVWZWN0b3IEAmJqBQJiYQUCYmoDCQABAgUCYmECBFVuaXQIBQJlcg9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgkA9AMDCAUCZXIJYm9keUJ5dGVzCQCRAwIIBQJlcgZwcm9vZnMAAAUCZXQvXyNR", "height": 2458058, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GDy6DKPHHxygNKUq9udograSwJjBVz2kEcNaJrdPLF7E Next: BmtWjQQ8BMn8ZTHQBxmi3gQCzuba3ZnSiVdo3fWriUyQ Diff:
OldNewDifferences
840840
841841
842842 @Callable(bh)
843-func getPoolConfigByLpAssetId (cV) = {
844- let bM = split(aF(an(cV)), j)
845- let ah = bM[1]
846- let ai = bM[2]
847- let cd = split(aF(ag(ah, ai)), j)
848- $Tuple2(nil, cd)
849- }
850-
851-
852-
853-@Callable(bh)
854843 func poolExistsREADONLY (az,aA) = $Tuple2(nil, ca(az, aA))
855844
856845
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 = 18
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = b
1313
1414 let f = "GWXvirtualPOOL"
1515
1616 let g = "POOLS_LP"
1717
1818 let h = 2000000
1919
2020 let i = ((100 * 1000) * 1000)
2121
2222 let j = "__"
2323
2424 let k = ""
2525
2626 let l = 1
2727
2828 let m = 2
2929
3030 let n = 3
3131
3232 let o = 4
3333
3434 let p = 1
3535
3636 let q = 2
3737
3838 let r = 3
3939
4040 let s = 1
4141
4242 let t = 2
4343
4444 let u = 3
4545
4646 let v = 4
4747
4848 let w = 5
4949
5050 let x = 6
5151
5252 let y = 7
5353
5454 let z = 8
5555
5656 let A = 9
5757
5858 let B = 10
5959
6060 let C = 11
6161
6262 let D = "WX_EMISSION"
6363
6464 let E = [D]
6565
6666 func F () = "%s__allowedLpScriptHash"
6767
6868
6969 func G () = "%s__allowedLpStableScriptHash"
7070
7171
7272 func H () = "%s__allowedLpStableAddonScriptHash"
7373
7474
7575 func I () = "%s__swapContract"
7676
7777
7878 func J () = "%s__factoryConfig"
7979
8080
8181 func K () = "%s__lpTokensList"
8282
8383
8484 func L () = "%s%s__pool__scriptHash"
8585
8686
8787 func M () = "%s%s__matcher__publicKey"
8888
8989
9090 func N () = "%s__legacyFactoryContract"
9191
9292
9393 func O () = "%s__legacyPools"
9494
9595
9696 func P () = "%s__managerPublicKey"
9797
9898
9999 func Q () = "%s__pendingManagerPublicKey"
100100
101101
102102 func R () = "%s__adminPubKeys"
103103
104104
105105 func S () = "%s__assetsStoreContract"
106106
107107
108108 func T () = "%s__votingEmissionContract"
109109
110110
111111 func U () = makeString(["%s", "priceAssets"], j)
112112
113113
114114 func V () = "%s__priceDecimals"
115115
116116
117117 func W () = "%s__shutdown"
118118
119119
120120 func X () = "%s__nextInternalAssetId"
121121
122122
123123 func Y (Z) = ("%s%s__poolWeight__" + Z)
124124
125125
126126 func aa (Z,ab) = ((("%s%s__poolWeight__" + Z) + "__") + toString(ab))
127127
128128
129129 func ac (ad) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(ad))
130130
131131
132132 func ae (af) = ("%s%s%s__mappings__baseAsset2internalId__" + af)
133133
134134
135135 func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
136136
137137
138138 func aj (ak) = {
139139 let al = ak
140140 let ah = al._1
141141 let ai = al._2
142142 makeString(["%d%d%s", toString(ah), toString(ai), "oneTokenOperationsDisabled"], j)
143143 }
144144
145145
146146 func am () = makeString(["%s", "oneTokenOperationsDisabled"], j)
147147
148148
149149 func an (ao) = (("%s%s%s__" + ao) + "__mappings__lpAsset2Pool")
150150
151151
152152 func ap (aq,ar) = (((("%d%d%s%s__" + aq) + "__") + ar) + "__mappings__PoolAssets2LpAsset")
153153
154154
155155 func as (Z) = ("%s%s__spread__" + Z)
156156
157157
158158 func at (au) = (("%s%s%s__" + au) + "__mappings__poolContract2PoolAssets")
159159
160160
161161 func av (aq,ar) = (((("%d%d%s%s__" + toString(aq)) + "__") + toString(ar)) + "__mappings__poolAssets2PoolContract")
162162
163163
164164 func aw (au) = (("%s%s%s__" + au) + "__mappings__poolContract2LpAsset")
165165
166166
167167 func ax (ao) = (("%s%s%s__" + ao) + "__mappings__lpAsset2PoolContract")
168168
169169
170170 func ay (az,aA) = ((("%s%s%s__wxEmission__" + az) + "__") + aA)
171171
172172
173173 func aB (Z) = ("%s%s__inFee__" + Z)
174174
175175
176176 func aC () = "%s__inFeeDefault"
177177
178178
179179 func aD (Z) = ("%s%s__outFee__" + Z)
180180
181181
182182 func aE () = "%s__outFeeDefault"
183183
184184
185185 func aF (aG) = valueOrErrorMessage(getString(this, aG), ("No data for this.key=" + aG))
186186
187187
188188 func aH (aG) = valueOrErrorMessage(getBoolean(this, aG), ("No data for this.key=" + aG))
189189
190190
191191 func aI (aG) = valueOrErrorMessage(getInteger(this, aG), ("No data for this.key=" + aG))
192192
193193
194194 let aJ = 1
195195
196196 let aK = 2
197197
198198 let aL = 3
199199
200200 let aM = 4
201201
202202 let aN = 5
203203
204204 let aO = 6
205205
206206 let aP = 7
207207
208208 let aQ = 8
209209
210210 let aR = 9
211211
212212 let aS = 10
213213
214214 let aT = 11
215215
216216 func aU (aV) = addressFromStringValue(aV[aK])
217217
218218
219219 func aW (aV) = addressFromStringValue(aV[aN])
220220
221221
222222 func aX (aV) = addressFromStringValue(aV[aJ])
223223
224224
225225 func aY (aV) = addressFromStringValue(aV[aS])
226226
227227
228228 func aZ () = {
229229 let ba = getString(U())
230230 if ($isInstanceOf(ba, "String"))
231231 then {
232232 let bb = ba
233233 if ((size(bb) == 0))
234234 then nil
235235 else split(bb, j)
236236 }
237237 else nil
238238 }
239239
240240
241241 func bc () = {
242242 let ba = getString(P())
243243 if ($isInstanceOf(ba, "String"))
244244 then {
245245 let bb = ba
246246 fromBase58String(bb)
247247 }
248248 else if ($isInstanceOf(ba, "Unit"))
249249 then unit
250250 else throw("Match error")
251251 }
252252
253253
254254 func bd () = {
255255 let ba = getString(Q())
256256 if ($isInstanceOf(ba, "String"))
257257 then {
258258 let bb = ba
259259 fromBase58String(bb)
260260 }
261261 else if ($isInstanceOf(ba, "Unit"))
262262 then unit
263263 else throw("Match error")
264264 }
265265
266266
267267 let be = throw("Permission denied")
268268
269269 let bf = throw("Test error here")
270270
271271 func bg (bh) = if ((bh.caller == this))
272272 then true
273273 else be
274274
275275
276276 func bi (bh) = {
277277 let ba = bc()
278278 if ($isInstanceOf(ba, "ByteVector"))
279279 then {
280280 let bj = ba
281281 if ((bh.callerPublicKey == bj))
282282 then true
283283 else be
284284 }
285285 else if ($isInstanceOf(ba, "Unit"))
286286 then bg(bh)
287287 else throw("Match error")
288288 }
289289
290290
291291 func bk (bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv) = makeString(["%s%s%s%s%s%s%s%s%s%s%s", bl, bm, bn, bo, bp, bq, br, bs, bt, bu, bv], j)
292292
293293
294294 func bw (bl,bm,bn,bo,bp,bq,br) = makeString(["%s%s%s%s%s%s", bl, bm, bn, bo, bp, bq, br], j)
295295
296296
297297 func bx (Z,by,bz,bA,bB,bC,bD,bE,bF,bG,bH) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", Z, by, bz, bA, bB, toString(bC), toString(bD), toString(bE), toString(bF), toString(bG), bH], j)
298298
299299
300300 func bI (bJ,bK) = makeString(["%d%d", toString(bJ), toString(bK)], j)
301301
302302
303303 func bL (Z) = {
304304 let bM = split(aF(at(Z)), j)
305305 let ah = bM[1]
306306 let ai = bM[2]
307307 split(aF(ag(ah, ai)), j)
308308 }
309309
310310
311311 func bN (bO,bP) = {
312312 let bQ = valueOrElse(getInteger(this, ae(bO)), 0)
313313 let bR = valueOrElse(getInteger(this, X()), 0)
314314 let bS = if ((bQ == 0))
315315 then {
316316 let bT = (bR + bP)
317317 $Tuple3(bT, [IntegerEntry(X(), bT), IntegerEntry(ae(bO), bT), StringEntry(ac(bT), bO)], true)
318318 }
319319 else $Tuple3(bQ, nil, false)
320320 bS
321321 }
322322
323323
324324 func bU (bh) = {
325325 let bV = split(valueOrElse(getString(R()), k), j)
326326 if (containsElement(bV, toBase58String(bh.callerPublicKey)))
327327 then true
328328 else {
329329 let bW = bi(bh)
330330 if ((bW == bW))
331331 then true
332332 else throw("Strict value is not equal to itself.")
333333 }
334334 }
335335
336336
337337 func bX (aG,bY,bZ) = valueOrElse(getInteger(this, aG), valueOrElse(getInteger(this, bY), bZ))
338338
339339
340340 func ca (az,aA) = {
341341 let ah = getInteger(ae(az))
342342 let ai = getInteger(ae(aA))
343343 if (if ((ah == unit))
344344 then true
345345 else (ai == unit))
346346 then false
347347 else {
348348 let cb = toString(value(ah))
349349 let cc = toString(value(ai))
350350 let cd = getString(ag(cb, cc))
351351 let ce = getString(ag(cc, cb))
352352 let cf = if ((cd != unit))
353353 then true
354354 else (ce != unit)
355355 cf
356356 }
357357 }
358358
359359
360360 @Callable(bh)
361361 func getSwapContractREADONLY () = $Tuple2(nil, aF(I()))
362362
363363
364364
365365 @Callable(bh)
366366 func getLpAssetFromPoolAssetsREADONLY (cg,ch) = if (if ((cg == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
367367 then (ch == "WAVES")
368368 else false)
369369 then $Tuple2(nil, unit)
370370 else {
371371 let ci = value(getInteger(this, ae(cg)))
372372 let cj = value(getInteger(this, ae(ch)))
373373 let ck = getString(this, ap(toString(ci), toString(cj)))
374374 let cl = if ((ck == unit))
375375 then unit
376376 else drop(value(ck), 4)
377377 $Tuple2(nil, cl)
378378 }
379379
380380
381381
382382 @Callable(bh)
383383 func getPoolAddressFromLpAssetREADONLY (cm) = $Tuple2(nil, valueOrElse(getString(this, ax(cm)), ""))
384384
385385
386386
387387 @Callable(bh)
388388 func constructor (cn,co,bn,bo,bp,bq,cp,cq) = {
389389 let cr = bi(bh)
390390 if ((cr == cr))
391391 then [StringEntry(J(), bw(cn, co, bn, bo, bp, bq, cp)), IntegerEntry(V(), cq)]
392392 else throw("Strict value is not equal to itself.")
393393 }
394394
395395
396396
397397 @Callable(bh)
398398 func constructorV2 (cs) = {
399399 let cr = bi(bh)
400400 if ((cr == cr))
401401 then {
402402 let ct = addressFromPublicKey(fromBase58String(cs))
403403 if ((ct == ct))
404404 then [StringEntry(M(), cs)]
405405 else throw("Strict value is not equal to itself.")
406406 }
407407 else throw("Strict value is not equal to itself.")
408408 }
409409
410410
411411
412412 @Callable(bh)
413413 func constructorV3 (bs,bt,bu,bv) = {
414414 let cr = bi(bh)
415415 if ((cr == cr))
416416 then {
417417 let aV = split(aF(J()), j)
418418 [StringEntry(J(), bk(aV[1], aV[2], aV[3], aV[4], aV[5], aV[6], aV[7], bs, bt, bu, bv))]
419419 }
420420 else throw("Strict value is not equal to itself.")
421421 }
422422
423423
424424
425425 @Callable(bh)
426426 func constructorV4 (cu,cv) = {
427427 let cr = bi(bh)
428428 if ((cr == cr))
429429 then [StringEntry(N(), cu), StringEntry(O(), makeString(cv, j))]
430430 else throw("Strict value is not equal to itself.")
431431 }
432432
433433
434434
435435 @Callable(bh)
436436 func constructorV5 (cw) = {
437437 let cr = bi(bh)
438438 if ((cr == cr))
439439 then [StringEntry(S(), cw)]
440440 else throw("Strict value is not equal to itself.")
441441 }
442442
443443
444444
445445 @Callable(bh)
446446 func constructorV6 (cx,cy) = {
447447 let cz = [bi(bh), if ((addressFromString(cx) != unit))
448448 then true
449449 else "invalid voting emission contract address"]
450450 if ((cz == cz))
451451 then [StringEntry(T(), cx), StringEntry(U(), makeString(cy, j))]
452452 else throw("Strict value is not equal to itself.")
453453 }
454454
455455
456456
457457 @Callable(bh)
458458 func setManager (cA) = {
459459 let cr = bi(bh)
460460 if ((cr == cr))
461461 then {
462462 let cB = fromBase58String(cA)
463463 if ((cB == cB))
464464 then [StringEntry(Q(), cA)]
465465 else throw("Strict value is not equal to itself.")
466466 }
467467 else throw("Strict value is not equal to itself.")
468468 }
469469
470470
471471
472472 @Callable(bh)
473473 func confirmManager () = {
474474 let cC = bd()
475475 let cD = if (isDefined(cC))
476476 then true
477477 else throw("No pending manager")
478478 if ((cD == cD))
479479 then {
480480 let cE = if ((bh.callerPublicKey == value(cC)))
481481 then true
482482 else throw("You are not pending manager")
483483 if ((cE == cE))
484484 then [StringEntry(P(), toBase58String(value(cC))), DeleteEntry(Q())]
485485 else throw("Strict value is not equal to itself.")
486486 }
487487 else throw("Strict value is not equal to itself.")
488488 }
489489
490490
491491
492492 @Callable(bh)
493493 func setAdmins (cF) = {
494494 let cr = bi(bh)
495495 if ((cr == cr))
496496 then [StringEntry(R(), makeString(cF, j))]
497497 else throw("Strict value is not equal to itself.")
498498 }
499499
500500
501501
502502 @Callable(bh)
503503 func activateNewPool (Z,bA,bB,cG,cH,cI,bH,cJ) = {
504504 let cr = bU(bh)
505505 if ((cr == cr))
506506 then if (isDefined(getString(at(Z))))
507507 then throw((("Pool address " + Z) + " already registered."))
508508 else {
509509 let cK = bN(bA, 1)
510510 let cL = cK._1
511511 let cM = bN(bB, if (cK._3)
512512 then 2
513513 else 1)
514514 let cN = cM._1
515515 let cO = valueOrErrorMessage(scriptHash(addressFromStringValue(Z)), ("No script has been found on pool account " + Z))
516516 let cP = getBinaryValue(L())
517517 let cQ = ca(bA, bB)
518518 if (cQ)
519519 then throw((((("Pool " + bA) + "/") + bB) + " has already been activated."))
520520 else {
521521 let cR = value(getString(this, ag(toString(cL), toString(cN))))
522522 let cS = if ((bA == "WAVES"))
523523 then i
524524 else pow(10, 0, value(assetInfo(fromBase58String(bA))).decimals, 0, 0, DOWN)
525525 let cT = if ((bB == "WAVES"))
526526 then i
527527 else pow(10, 0, value(assetInfo(fromBase58String(bB))).decimals, 0, 0, DOWN)
528528 let cU = Issue(cG, cH, 1, 8, true)
529529 let bz = calculateAssetId(cU)
530530 let cV = toBase58String(bz)
531531 let cW = invoke(addressFromStringValue(Z), "activate", [bA, bB], nil)
532532 if ((cW == cW))
533533 then if ((cW != "success"))
534534 then throw("Pool initialisation error happened.")
535535 else {
536536 let cw = addressFromStringValue(aF(S()))
537537 let cX = invoke(cw, "createOrUpdate", [cV, cG, false], nil)
538538 if ((cX == cX))
539539 then {
540540 let cY = invoke(cw, "addLabel", [cV, g], nil)
541541 if ((cY == cY))
542542 then {
543543 let cZ = invoke(cw, "setLogo", [cV, cJ], nil)
544544 if ((cZ == cZ))
545545 then {
546546 let da = invoke(cw, "addAssetsLink", [bA, bB, cV], nil)
547547 if ((da == da))
548548 then {
549549 let db = invoke(cw, "increaseAssetPoolsNumber", [bA], nil)
550550 if ((db == db))
551551 then $Tuple2(((cK._2 ++ cM._2) ++ [cU, Burn(bz, 1), StringEntry(ag(toString(cL), toString(cN)), bx(Z, toString(l), cV, bA, bB, cS, cT, cL, cN, i, bH)), StringEntry(an(cV), bI(cL, cN)), StringEntry(ap(toString(cL), toString(cN)), ("%s__" + cV)), StringEntry(at(Z), bI(cL, cN)), StringEntry(av(cL, cN), Z), StringEntry(ax(cV), Z), StringEntry(aw(Z), cV), IntegerEntry(Y(Z), cI), IntegerEntry(as(Z), h)]), cV)
552552 else throw("Strict value is not equal to itself.")
553553 }
554554 else throw("Strict value is not equal to itself.")
555555 }
556556 else throw("Strict value is not equal to itself.")
557557 }
558558 else throw("Strict value is not equal to itself.")
559559 }
560560 else throw("Strict value is not equal to itself.")
561561 }
562562 else throw("Strict value is not equal to itself.")
563563 }
564564 }
565565 else throw("Strict value is not equal to itself.")
566566 }
567567
568568
569569
570570 @Callable(bh)
571571 func managePool (Z,dc) = {
572572 let cr = bi(bh)
573573 if ((cr == cr))
574574 then {
575575 let dd = bL(Z)
576576 let by = dd[t]
577577 let cV = dd[u]
578578 let bA = dd[v]
579579 let bB = dd[w]
580580 let cS = parseIntValue(dd[x])
581581 let cT = parseIntValue(dd[y])
582582 let cL = parseIntValue(dd[z])
583583 let cN = parseIntValue(dd[A])
584584 let de = parseIntValue(dd[B])
585585 let bH = dd[C]
586586 [StringEntry(ag(toString(cL), toString(cN)), bx(Z, toString(dc), cV, bA, bB, cS, cT, cL, cN, de, bH))]
587587 }
588588 else throw("Strict value is not equal to itself.")
589589 }
590590
591591
592592
593593 @Callable(bh)
594594 func emit (df) = {
595595 let dg = bh.caller
596596 let dh = bh.originCaller
597597 let di = valueOrErrorMessage(getString(aw(toString(dg))), "Invalid LP address called me.")
598598 let dj = fromBase58String(di)
599599 let cv = split(valueOrElse(getString(O()), k), j)
600600 let cu = addressFromStringValue(valueOrErrorMessage(getString(N()), "Legacy factory contract does not exists."))
601601 if ((0 >= df))
602602 then nil
603603 else if (containsElement(cv, toString(dg)))
604604 then $Tuple2(nil, cu)
605605 else $Tuple2([Reissue(dj, df, true), ScriptTransfer(bh.caller, df, dj)], "success")
606606 }
607607
608608
609609
610610 @Callable(bh)
611611 func burn (dk) = {
612612 let dg = bh.caller
613613 let dh = bh.originCaller
614614 let dl = value(bh.payments[0])
615615 let dm = value(dl.amount)
616616 let dn = toBase58String(value(dl.assetId))
617617 let do = valueOrErrorMessage(getString(aw(toString(dg))), "Invalid LP address called me.")
618618 if ((dn != do))
619619 then throw("Invalid asset passed.")
620620 else if ((dk != dm))
621621 then throw("Invalid amount passed.")
622622 else {
623623 let dj = fromBase58String(do)
624624 $Tuple2([Burn(dj, dk)], "success")
625625 }
626626 }
627627
628628
629629
630630 @Callable(bh)
631631 func modifyWeight (bz,dp) = {
632632 let cr = if ((toBase58String(bh.caller.bytes) == valueOrElse(getString(this, T()), "")))
633633 then true
634634 else bi(bh)
635635 if ((cr == cr))
636636 then {
637637 let au = aF(ax(bz))
638638 let dq = Y(au)
639639 let dr = Y(f)
640640 let ds = valueOrElse(getInteger(dr), 0)
641641 let cI = valueOrElse(getInteger(dq), 0)
642642 let dt = dp
643643 let aV = split(aF(J()), j)
644644 let cn = aX(aV)
645645 let du = invoke(cn, "onModifyWeight", [bz, au], nil)
646646 if ((du == du))
647647 then {
648648 let dv = if ((ds == 0))
649649 then nil
650650 else [IntegerEntry(dr, 0)]
651651 let dw = aa(au, 0)
652652 let dx = getInteger(dw)
653653 let dy = if ((dx == unit))
654654 then nil
655655 else [DeleteEntry(dw)]
656656 (([IntegerEntry(dq, dt)] ++ dv) ++ dy)
657657 }
658658 else throw("Strict value is not equal to itself.")
659659 }
660660 else throw("Strict value is not equal to itself.")
661661 }
662662
663663
664664
665665 @Callable(bh)
666666 func modifyWeights (dz,dA,dB,dC) = {
667667 let cr = bi(bh)
668668 if ((cr == cr))
669669 then {
670670 let dD = ((5 * e) / 100)
671671 let dE = ((5 * e) / 100)
672672 let dF = ((5 * e) / 100)
673673 let aV = split(aF(J()), j)
674674 let dG = aX(aV)
675675 let dH = aY(aV)
676676 let dI = Y(dz)
677677 let dJ = Y(dA)
678678 let dK = Y(dB)
679679 let dL = Y(dC)
680680 let dM = aI(dI)
681681 let dN = aI(dJ)
682682 let dO = (dM - dF)
683683 let dP = (dN - dF)
684684 if ((0 >= dO))
685685 then throw(("invalid btcWeightNew: " + toString(dO)))
686686 else if ((0 >= dP))
687687 then throw(("invalid ethWeightNew: " + toString(dP)))
688688 else {
689689 let dQ = aF(aw(dz))
690690 let dR = aF(aw(dA))
691691 let dS = aF(aw(dB))
692692 let dT = aF(aw(dC))
693693 let dU = invoke(dG, "onModifyWeight", [dQ, dz], nil)
694694 if ((dU == dU))
695695 then {
696696 let dV = invoke(dG, "onModifyWeight", [dR, dA], nil)
697697 if ((dV == dV))
698698 then {
699699 let dW = invoke(dG, "onModifyWeight", [dS, dB], nil)
700700 if ((dW == dW))
701701 then {
702702 let dX = invoke(dG, "onModifyWeight", [dT, dC], nil)
703703 if ((dX == dX))
704704 then [IntegerEntry(dI, dO), IntegerEntry(dJ, dP), IntegerEntry(dK, dD), IntegerEntry(dL, dE), IntegerEntry(aa(dz, 0), dM), IntegerEntry(aa(dA, 0), dN), IntegerEntry(aa(dB, 0), dD), IntegerEntry(aa(dC, 0), dE)]
705705 else throw("Strict value is not equal to itself.")
706706 }
707707 else throw("Strict value is not equal to itself.")
708708 }
709709 else throw("Strict value is not equal to itself.")
710710 }
711711 else throw("Strict value is not equal to itself.")
712712 }
713713 }
714714 else throw("Strict value is not equal to itself.")
715715 }
716716
717717
718718
719719 @Callable(bh)
720720 func checkWxEmissionPoolLabel (az,aA) = {
721721 let dY = {
722722 let ba = getBoolean(ay(az, aA))
723723 if ($isInstanceOf(ba, "Boolean"))
724724 then {
725725 let dZ = ba
726726 dZ
727727 }
728728 else false
729729 }
730730 $Tuple2(nil, dY)
731731 }
732732
733733
734734
735735 @Callable(bh)
736736 func setWxEmissionPoolLabel (az,aA) = {
737737 let cr = bU(bh)
738738 if ((cr == cr))
739739 then $Tuple2([BooleanEntry(ay(az, aA), true)], unit)
740740 else throw("Strict value is not equal to itself.")
741741 }
742742
743743
744744
745745 @Callable(bh)
746746 func deleteWxEmissionPoolLabel (az,aA) = {
747747 let cr = if (bg(bh))
748748 then true
749749 else bU(bh)
750750 if ((cr == cr))
751751 then $Tuple2([DeleteEntry(ay(az, aA))], unit)
752752 else throw("Strict value is not equal to itself.")
753753 }
754754
755755
756756
757757 @Callable(bh)
758758 func onVerificationLoss (ea) = {
759759 let cr = if ((toBase58String(bh.caller.bytes) == valueOrElse(getString(this, S()), "")))
760760 then true
761761 else bi(bh)
762762 if ((cr == cr))
763763 then {
764764 let cy = aZ()
765765 let eb = if ((size(cy) > 0))
766766 then true
767767 else throw("invalid price assets")
768768 if ((eb == eb))
769769 then {
770770 func ec (ed,ee) = {
771771 let ef = invoke(this, "deleteWxEmissionPoolLabel", [ea, ee], nil)
772772 if ((ef == ef))
773773 then unit
774774 else throw("Strict value is not equal to itself.")
775775 }
776776
777777 let eg = {
778778 let eh = cy
779779 let ei = size(eh)
780780 let ej = unit
781781 func ek (el,em) = if ((em >= ei))
782782 then el
783783 else ec(el, eh[em])
784784
785785 func en (el,em) = if ((em >= ei))
786786 then el
787787 else throw("List size exceeds 1")
788788
789789 en(ek(ej, 0), 1)
790790 }
791791 if ((eg == eg))
792792 then $Tuple2(nil, unit)
793793 else throw("Strict value is not equal to itself.")
794794 }
795795 else throw("Strict value is not equal to itself.")
796796 }
797797 else throw("Strict value is not equal to itself.")
798798 }
799799
800800
801801
802802 @Callable(bh)
803803 func isPoolOneTokenOperationsDisabledREADONLY (Z) = {
804804 let dd = bL(Z)
805805 let ak = $Tuple2(parseIntValue(dd[z]), parseIntValue(dd[A]))
806806 let eo = valueOrElse(getBoolean(aj(ak)), false)
807807 let ep = valueOrElse(getBoolean(am()), false)
808808 $Tuple2(nil, if (ep)
809809 then true
810810 else eo)
811811 }
812812
813813
814814
815815 @Callable(bh)
816816 func getInFeeREADONLY (Z) = {
817817 let eq = bX(aB(Z), aC(), 0)
818818 $Tuple2(nil, eq)
819819 }
820820
821821
822822
823823 @Callable(bh)
824824 func getOutFeeREADONLY (Z) = {
825825 let eq = bX(aD(Z), aE(), fraction(10, b, 10000))
826826 $Tuple2(nil, eq)
827827 }
828828
829829
830830
831831 @Callable(bh)
832832 func getPoolStatusREADONLY (Z) = {
833833 let bM = split(aF(at(Z)), j)
834834 let ah = bM[1]
835835 let ai = bM[2]
836836 let cd = split(aF(ag(ah, ai)), j)
837837 $Tuple2(nil, parseIntValue(cd[t]))
838838 }
839839
840840
841841
842842 @Callable(bh)
843-func getPoolConfigByLpAssetId (cV) = {
844- let bM = split(aF(an(cV)), j)
845- let ah = bM[1]
846- let ai = bM[2]
847- let cd = split(aF(ag(ah, ai)), j)
848- $Tuple2(nil, cd)
849- }
850-
851-
852-
853-@Callable(bh)
854843 func poolExistsREADONLY (az,aA) = $Tuple2(nil, ca(az, aA))
855844
856845
857846 @Verifier(er)
858847 func es () = {
859848 let et = {
860849 let ba = bc()
861850 if ($isInstanceOf(ba, "ByteVector"))
862851 then {
863852 let bj = ba
864853 bj
865854 }
866855 else if ($isInstanceOf(ba, "Unit"))
867856 then er.senderPublicKey
868857 else throw("Match error")
869858 }
870859 sigVerify(er.bodyBytes, er.proofs[0], et)
871860 }
872861

github/deemru/w8io/026f985 
81.87 ms