tx · J4Dzo4tQ5HRQ4U5oz8VGey6sMAc1NbEuSgCzDnvPGBCB 3PC9BfRwJWWiw9AREE2B3eWzCks3CYtg4yo: -0.14000000 Waves 2022.03.24 18:45 [3043381] smart account 3PC9BfRwJWWiw9AREE2B3eWzCks3CYtg4yo > SELF 0.00000000 Waves
{ "type": 13, "id": "J4Dzo4tQ5HRQ4U5oz8VGey6sMAc1NbEuSgCzDnvPGBCB", "fee": 14000000, "feeAssetId": null, "timestamp": 1648138362949, "version": 1, "sender": "3PC9BfRwJWWiw9AREE2B3eWzCks3CYtg4yo", "senderPublicKey": "BRnVwSVctnV8pge5vRpsJdWnkjWEJspFb6QvrmZvu3Ht", "proofs": [ "43eaEwUXBtQikHLURFzMeNwJYaFqfibkNsQt326BZMRwcNLZhHks3tVkx9GSkYvma74Ljsg2qFP6eh7WKaSGqx5J", "5vFcFXmbGYuLbQ3TRsbKfNoEutqZTD92RbtuCKzwwJzhPFuhG5Jc61AkbNHjr36Qo3R9EDfVebF6R1DbXLc7BxbA", "5jJJkNJF4JEvVQ8WH7tRQ4B2MdvLs6eAfpcHRgFCPpzjthNmWVKyrC5Y1vFe9BmE61vMoCBfkCULC6fFkq5ZSgAN", "4cj8Vz1KXW8knNc88g6vuDjY8tyAUFsLkVU4Xx5DgcTB1r8JQ2WZhVsfuaP99Ei7LavJFZbq4SQsVAihksVJa5FJ" ], "script": "base64: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AA5JZHhHcm9zc0Ftb3VudAAAAAAAAAAAAgAAAAASTmV1dHJpbm9Bc3NldElkS2V5AgAAABFuZXV0cmlub19hc3NldF9pZAAAAAAOQm9uZEFzc2V0SWRLZXkCAAAADWJvbmRfYXNzZXRfaWQAAAAAEkF1Y3Rpb25Db250cmFjdEtleQIAAAAQYXVjdGlvbl9jb250cmFjdAAAAAAWTnNidFN0YWtpbmdDb250cmFjdEtleQIAAAATbnNidFN0YWtpbmdDb250cmFjdAAAAAAWTGlxdWlkYXRpb25Db250cmFjdEtleQIAAAAUbGlxdWlkYXRpb25fY29udHJhY3QAAAAADlJQRENvbnRyYWN0S2V5AgAAAAxycGRfY29udHJhY3QAAAAAEUNvbnRvbENvbnRyYWN0S2V5AgAAABBjb250cm9sX2NvbnRyYWN0AAAAAA9NYXRoQ29udHJhY3RLZXkCAAAADW1hdGhfY29udHJhY3QAAAAAG0JhbGFuY2VXYXZlc0xvY2tJbnRlcnZhbEtleQIAAAAbYmFsYW5jZV93YXZlc19sb2NrX2ludGVydmFsAAAAAB5CYWxhbmNlTmV1dHJpbm9Mb2NrSW50ZXJ2YWxLZXkCAAAAHmJhbGFuY2VfbmV1dHJpbm9fbG9ja19pbnRlcnZhbAAAAAAVTWluV2F2ZXNTd2FwQW1vdW50S2V5AgAAABVtaW5fd2F2ZXNfc3dhcF9hbW91bnQAAAAAGE1pbk5ldXRyaW5vU3dhcEFtb3VudEtleQIAAAAYbWluX25ldXRyaW5vX3N3YXBfYW1vdW50AAAAABtOb2RlT3JhY2xlUHJvdmlkZXJQdWJLZXlLZXkCAAAAFG5vZGVfb3JhY2xlX3Byb3ZpZGVyAAAAABVOZXV0cmlub091dEZlZVBhcnRLZXkCAAAAGG5ldXRyaW5vT3V0X3N3YXBfZmVlUGFydAAAAAASV2F2ZXNPdXRGZWVQYXJ0S2V5AgAAABV3YXZlc091dF9zd2FwX2ZlZVBhcnQAAAAAFUZlZXNNYW5hZ2VyQWRkcmVzc0tleQIAAAAUZmVlc19tYW5hZ2VyX2FkZHJlc3MAAAAACFByaWNlS2V5AgAAAAVwcmljZQAAAAANUHJpY2VJbmRleEtleQIAAAALcHJpY2VfaW5kZXgAAAAADElzQmxvY2tlZEtleQIAAAAKaXNfYmxvY2tlZAEAAAASZ2V0UHJpY2VIaXN0b3J5S2V5AAAAAQAAAAVibG9jawkAASwAAAACCQABLAAAAAIFAAAACFByaWNlS2V5AgAAAAFfCQABpAAAAAEFAAAABWJsb2NrAQAAABhnZXRIZWlnaHRQcmljZUJ5SW5kZXhLZXkAAAABAAAABWluZGV4CQABLAAAAAIJAAEsAAAAAgUAAAANUHJpY2VJbmRleEtleQIAAAABXwkAAaQAAAABBQAAAAVpbmRleAEAAAAVZ2V0U3Rha2luZ05vZGVCeUluZGV4AAAAAQAAAANpZHgJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAAS5AAAAAgkABEwAAAACAgAAAAYlcyVkJXMJAARMAAAAAgIAAAAFbGVhc2UJAARMAAAAAgkAAaQAAAABBQAAAANpZHgJAARMAAAAAgIAAAALbm9kZUFkZHJlc3MFAAAAA25pbAUAAAADU0VQAQAAABxnZXRTdGFraW5nTm9kZUFkZHJlc3NCeUluZGV4AAAAAQAAAANpZHgJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAABVnZXRTdGFraW5nTm9kZUJ5SW5kZXgAAAABBQAAAANpZHgBAAAAH2dldFJlc2VydmVkQW1vdW50Rm9yU3BvbnNvcnNoaXAAAAAACQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAS5AAAAAgkABEwAAAACAgAAAAQlcyVzCQAETAAAAAICAAAABWxlYXNlCQAETAAAAAICAAAAF3Nwb25zb3JzaGlwV2F2ZXNSZXNlcnZlBQAAAANuaWwFAAAAA1NFUAkAAGgAAAACAAAAAAAAAAPoBQAAAAdXQVZFTEVUAQAAABhnZXRCYWxhbmNlVW5sb2NrQmxvY2tLZXkAAAABAAAABW93bmVyCQABLAAAAAICAAAAFWJhbGFuY2VfdW5sb2NrX2Jsb2NrXwUAAAAFb3duZXIBAAAADWdldExlYXNlSWRLZXkAAAABAAAACW5vZGVJbmRleAkABLkAAAACCQAETAAAAAICAAAABiVzJWQlcwkABEwAAAACAgAAAAVsZWFzZQkABEwAAAACCQABpAAAAAEFAAAACW5vZGVJbmRleAkABEwAAAACAgAAAAJpZAUAAAADbmlsBQAAAANTRVABAAAAEWdldExlYXNlQW1vdW50S2V5AAAAAQAAAAlub2RlSW5kZXgJAAS5AAAAAgkABEwAAAACAgAAAAYlcyVkJXMJAARMAAAAAgIAAAAFbGVhc2UJAARMAAAAAgkAAaQAAAABBQAAAAlub2RlSW5kZXgJAARMAAAAAgIAAAAGYW1vdW50BQAAAANuaWwFAAAAA1NFUAEAAAAQbWluU3dhcEFtb3VudEtFWQAAAAEAAAAIc3dhcFR5cGUJAAEsAAAAAgkAASwAAAACAgAAAARtaW5fBQAAAAhzd2FwVHlwZQIAAAAMX3N3YXBfYW1vdW50AQAAAA50b3RhbExvY2tlZEtFWQAAAAEAAAAIc3dhcFR5cGUJAAEsAAAAAgIAAAANYmFsYW5jZV9sb2NrXwUAAAAIc3dhcFR5cGUBAAAAFHRvdGFsTG9ja2VkQnlVc2VyS0VZAAAAAgAAAAhzd2FwVHlwZQAAAAVvd25lcgkABLkAAAACCQAETAAAAAICAAAADGJhbGFuY2VfbG9jawkABEwAAAACBQAAAAhzd2FwVHlwZQkABEwAAAACBQAAAAVvd25lcgUAAAADbmlsAgAAAAFfAQAAABZiYWxhbmNlTG9ja0ludGVydmFsS0VZAAAAAQAAAAhzd2FwVHlwZQkAASwAAAACCQABLAAAAAICAAAACGJhbGFuY2VfBQAAAAhzd2FwVHlwZQIAAAAOX2xvY2tfaW50ZXJ2YWwBAAAAGm5vZGVCYWxhbmNlTG9ja0ludGVydmFsS0VZAAAAAAIAAAAaYmFsYW5jZV9ub2RlX2xvY2tfaW50ZXJ2YWwBAAAADW91dEZlZVBhcnRLRVkAAAABAAAACHN3YXBUeXBlCQABLAAAAAIFAAAACHN3YXBUeXBlAgAAABBPdXRfc3dhcF9mZWVQYXJ0AQAAABFzd2Fwc1RpbWVmcmFtZUtFWQAAAAACAAAAD3N3YXBzX3RpbWVmcmFtZQEAAAARbWluU3dhcEFtb3VudFJFQUQAAAABAAAACHN3YXBUeXBlCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAABBtaW5Td2FwQW1vdW50S0VZAAAAAQUAAAAIc3dhcFR5cGUAAAAAAAAAAAABAAAAEnN3YXBzVGltZWZyYW1lUkVBRAAAAAAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAEXN3YXBzVGltZWZyYW1lS0VZAAAAAAAAAAAAAAAFoAEAAAAPdG90YWxMb2NrZWRSRUFEAAAAAQAAAAhzd2FwVHlwZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAOdG90YWxMb2NrZWRLRVkAAAABBQAAAAhzd2FwVHlwZQAAAAAAAAAAAAEAAAAVdG90YWxMb2NrZWRCeVVzZXJSRUFEAAAAAgAAAAhzd2FwVHlwZQAAAAVvd25lcgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAUdG90YWxMb2NrZWRCeVVzZXJLRVkAAAACBQAAAAhzd2FwVHlwZQUAAAAFb3duZXIAAAAAAAAAAAABAAAAF2JhbGFuY2VMb2NrSW50ZXJ2YWxSRUFEAAAAAQAAAAhzd2FwVHlwZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAWYmFsYW5jZUxvY2tJbnRlcnZhbEtFWQAAAAEFAAAACHN3YXBUeXBlAAAAAAAAAAWgAQAAABtub2RlQmFsYW5jZUxvY2tJbnRlcnZhbFJFQUQAAAAACQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAABpub2RlQmFsYW5jZUxvY2tJbnRlcnZhbEtFWQAAAAAAAAAAAAAAAAEBAAAAGGtleVN3YXBVc2VyU3BlbnRJblBlcmlvZAAAAAEAAAALdXNlckFkZHJlc3MJAAS5AAAAAgkABEwAAAACAgAAAAQlcyVzCQAETAAAAAICAAAAFXN3YXBVc2VyU3BlbnRJblBlcmlvZAkABEwAAAACBQAAAAt1c2VyQWRkcmVzcwUAAAADbmlsBQAAAANTRVABAAAAFWtleVVzZXJMYXN0U3dhcEhlaWdodAAAAAEAAAALdXNlckFkZHJlc3MJAAS5AAAAAgkABEwAAAACAgAAAAQlcyVzCQAETAAAAAICAAAAEnVzZXJMYXN0U3dhcEhlaWdodAkABEwAAAACBQAAAAt1c2VyQWRkcmVzcwUAAAADbmlsBQAAAANTRVABAAAAFWZlZU1hbmFnZXJBZGRyZXNzUkVBRAAAAAAJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAAVRmVlc01hbmFnZXJBZGRyZXNzS2V5CQABLAAAAAIFAAAAFUZlZXNNYW5hZ2VyQWRkcmVzc0tleQIAAAARIGlzIG5vdCBzcGVjaWZpZWQJAAEsAAAAAgUAAAAVRmVlc01hbmFnZXJBZGRyZXNzS2V5AgAAABcgaW52YWxpZCBhZGRyZXNzIGZvcm1hdAEAAAAWY29udmVydE5ldXRyaW5vVG9XYXZlcwAAAAIAAAAGYW1vdW50AAAABXByaWNlCQAAawAAAAMJAABrAAAAAwUAAAAGYW1vdW50BQAAAAhQUklDRUxFVAUAAAAFcHJpY2UFAAAAB1dBVkVMRVQFAAAABVBBVUxJAQAAABZjb252ZXJ0V2F2ZXNUb05ldXRyaW5vAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAABrAAAAAwkAAGsAAAADBQAAAAZhbW91bnQFAAAABXByaWNlBQAAAAhQUklDRUxFVAUAAAAFUEFVTEkFAAAAB1dBVkVMRVQBAAAAEmNvbnZlcnRXYXZlc1RvQm9uZAAAAAIAAAAGYW1vdW50AAAABXByaWNlCQEAAAAWY29udmVydFdhdmVzVG9OZXV0cmlubwAAAAIFAAAABmFtb3VudAUAAAAFcHJpY2UBAAAAFmNvbnZlcnRKc29uQXJyYXlUb0xpc3QAAAABAAAACWpzb25BcnJheQkABLUAAAACBQAAAAlqc29uQXJyYXkCAAAAASwBAAAAEW1pblN3YXBBbW91bnRGQUlMAAAAAgAAAAhzd2FwVHlwZQAAAA1taW5Td2FwQW1vdW50CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAGFRoZSBzcGVjaWZpZWQgYW1vdW50IGluIAUAAAAIc3dhcFR5cGUCAAAAKyBzd2FwIGlzIGxlc3MgdGhhbiB0aGUgcmVxdWlyZWQgbWluaW11bSBvZiAJAAGkAAAAAQUAAAANbWluU3dhcEFtb3VudAEAAAAVZW1lcmdlbmN5U2h1dGRvd25GQUlMAAAAAAkAAAIAAAABAgAAAFpjb250cmFjdCBpcyBibG9ja2VkIGJ5IEVNRVJHRU5DWSBTSFVURE9XTiBhY3Rpb25zIHVudGlsbCByZWFjdGl2YXRpb24gYnkgZW1lcmdlbmN5IG9yYWNsZXMBAAAADnByaWNlSW5kZXhGQUlMAAAABQAAAAVpbmRleAAAAApwcmljZUluZGV4AAAAC2luZGV4SGVpZ2h0AAAADHVubG9ja0hlaWdodAAAAA9wcmV2SW5kZXhIZWlnaHQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAjaW52YWxpZCBwcmljZSBoaXN0b3J5IGluZGV4OiBpbmRleD0JAAGkAAAAAQUAAAAFaW5kZXgCAAAADCBwcmljZUluZGV4PQkAAaQAAAABBQAAAApwcmljZUluZGV4AgAAAA0gaW5kZXhIZWlnaHQ9CQABpAAAAAEFAAAAC2luZGV4SGVpZ2h0AgAAAA4gdW5sb2NrSGVpZ2h0PQkAAaQAAAABBQAAAAx1bmxvY2tIZWlnaHQCAAAAESBwcmV2SW5kZXhIZWlnaHQ9CQABpAAAAAEFAAAAD3ByZXZJbmRleEhlaWdodAAAAAATbGlxdWlkYXRpb25Db250cmFjdAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQUAAAAWTGlxdWlkYXRpb25Db250cmFjdEtleQAAAAAWbnNidFN0YWtpbmdDb250cmFjdFN0cgkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQUAAAAWTnNidFN0YWtpbmdDb250cmFjdEtleQAAAAAPbmV1dHJpbm9Bc3NldElkCQACWQAAAAEJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEFAAAAEk5ldXRyaW5vQXNzZXRJZEtleQAAAAAPYXVjdGlvbkNvbnRyYWN0CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABBQAAABJBdWN0aW9uQ29udHJhY3RLZXkAAAAAC3JwZENvbnRyYWN0CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABBQAAAA5SUERDb250cmFjdEtleQAAAAAPY29udHJvbENvbnRyYWN0CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABBQAAABFDb250b2xDb250cmFjdEtleQAAAAATbWF0aENvbnRyYWN0QWRkcmVzcwkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQUAAAAPTWF0aENvbnRyYWN0S2V5AAAAAApwcmljZUluZGV4CQEAAAAYZ2V0TnVtYmVyQnlBZGRyZXNzQW5kS2V5AAAAAgUAAAAPY29udHJvbENvbnRyYWN0BQAAAA1QcmljZUluZGV4S2V5AAAAAAlpc0Jsb2NrZWQJAQAAABZnZXRCb29sQnlBZGRyZXNzQW5kS2V5AAAAAgUAAAAPY29udHJvbENvbnRyYWN0BQAAAAxJc0Jsb2NrZWRLZXkAAAAAGG5vZGVPcmFjbGVQcm92aWRlclB1YktleQkAAlkAAAABCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABBQAAABtOb2RlT3JhY2xlUHJvdmlkZXJQdWJLZXlLZXkAAAAAC2JvbmRBc3NldElkCQACWQAAAAECAAAALDZuU3BWeU5IN3lNNjllZzQ0NndyUVI5NGlwYmJjbVpNVTFFTlB3YW5DOTdnAAAAABVkZXByZWNhdGVkQm9uZEFzc2V0SWQJAAJZAAAAAQIAAAAsOTc1YWtaQmZuTWo1MTNVN01aYUhLelFybXNFeDVhRTN3ZFdLVHJIQmhiakYAAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAABHRoaXMAAAAADG1hdGhDb250cmFjdAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAATbWF0aENvbnRyYWN0QWRkcmVzcwAAAAATbnNidFN0YWtpbmdDb250cmFjdAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAWbnNidFN0YWtpbmdDb250cmFjdFN0cgAAAAAMY3VycmVudFByaWNlCQEAAAAYZ2V0TnVtYmVyQnlBZGRyZXNzQW5kS2V5AAAAAgUAAAAPY29udHJvbENvbnRyYWN0BQAAAAhQcmljZUtleQEAAAAbY2hlY2tJc1ZhbGlkTWluU3BvbnNvcmVkRmVlAAAAAQAAAAJ0eAQAAAAOTUlOVFJBTlNGRVJGRUUAAAAAAAABhqAEAAAAFlNwb25zb3JlZEZlZVVwcGVyQm91bmQAAAAAAAAAA+gEAAAAD3JlYWxOZXV0cmlub0ZlZQkBAAAAFmNvbnZlcnRXYXZlc1RvTmV1dHJpbm8AAAACBQAAAA5NSU5UUkFOU0ZFUkZFRQUAAAAMY3VycmVudFByaWNlBAAAAA5taW5OZXV0cmlub0ZlZQkAAGgAAAACBQAAAA9yZWFsTmV1dHJpbm9GZWUAAAAAAAAAAAIEAAAADm1heE5ldXRyaW5vRmVlCQAAawAAAAMFAAAAD3JlYWxOZXV0cmlub0ZlZQUAAAAWU3BvbnNvcmVkRmVlVXBwZXJCb3VuZAAAAAAAAAAAZAQAAAAIaW5wdXRGZWUJAQAAAAV2YWx1ZQAAAAEIBQAAAAJ0eAAAABRtaW5TcG9uc29yZWRBc3NldEZlZQMDCQAAZwAAAAIFAAAACGlucHV0RmVlBQAAAA5taW5OZXV0cmlub0ZlZQkAAGcAAAACBQAAAA5tYXhOZXV0cmlub0ZlZQUAAAAIaW5wdXRGZWUHCQAAAAAAAAIIBQAAAAJ0eAAAAAdhc3NldElkBQAAAA9uZXV0cmlub0Fzc2V0SWQHAQAAAA9nZXRQcmljZUhpc3RvcnkAAAABAAAABWJsb2NrCQEAAAAYZ2V0TnVtYmVyQnlBZGRyZXNzQW5kS2V5AAAAAgUAAAAPY29udHJvbENvbnRyYWN0CQEAAAASZ2V0UHJpY2VIaXN0b3J5S2V5AAAAAQUAAAAFYmxvY2sBAAAAFWdldEhlaWdodFByaWNlQnlJbmRleAAAAAEAAAAFaW5kZXgJAQAAABhnZXROdW1iZXJCeUFkZHJlc3NBbmRLZXkAAAACBQAAAA9jb250cm9sQ29udHJhY3QJAQAAABhnZXRIZWlnaHRQcmljZUJ5SW5kZXhLZXkAAAABBQAAAAVpbmRleAEAAAAWa2V5TG9ja1BhcmFtVXNlckFtb3VudAAAAAEAAAALdXNlckFkZHJlc3MJAAS5AAAAAgkABEwAAAACAgAAAAYlcyVzJXMJAARMAAAAAgIAAAALcGFyYW1CeVVzZXIJAARMAAAAAgUAAAALdXNlckFkZHJlc3MJAARMAAAAAgIAAAAGYW1vdW50BQAAAANuaWwFAAAAA1NFUAAAAAAMc0lkeFN3YXBUeXBlAAAAAAAAAAABAAAAAApzSWR4U3RhdHVzAAAAAAAAAAACAAAAAAxzSWR4SW5BbW91bnQAAAAAAAAAAAMA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c2VBbW91bnQIBQAAAAlub2RlVHVwbGUAAAACXzIDCQAAZgAAAAIFAAAADm5ld0xlYXNlQW1vdW50AAAAAAAAAAAABAAAAApsZWFzZUlkS2V5CQEAAAANZ2V0TGVhc2VJZEtleQAAAAEFAAAACW5vZGVJbmRleAQAAAAIb2xkTGVhc2UJAAQcAAAAAgUAAAAEdGhpcwUAAAAKbGVhc2VJZEtleQQAAAAOdW5sZWFzZU9yRW1wdHkDCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAIb2xkTGVhc2UJAARMAAAAAgkBAAAAC0xlYXNlQ2FuY2VsAAAAAQkBAAAABXZhbHVlAAAAAQUAAAAIb2xkTGVhc2UFAAAAA25pbAUAAAADbmlsBAAAAA5sZWFzZUFtb3VudEtleQkBAAAAEWdldExlYXNlQW1vdW50S2V5AAAAAQUAAAAJbm9kZUluZGV4BAAAAAVsZWFzZQkABEQAAAACCQEAAAAcZ2V0U3Rha2luZ05vZGVBZGRyZXNzQnlJbmRleAAAAAEFAAAACW5vZGVJbmRleAUAAAAObmV3TGVhc2VBbW91bnQJAAROAAAAAgUAAAAOdW5sZWFzZU9yRW1wdHkJAARMAAAAAgUAAAAFbGVhc2UJAARMAAAAAgkBAAAAC0JpbmFyeUVudHJ5AAAAAgUAAAAKbGVhc2VJZEtleQkABDkAAAABBQAAAAVsZWFzZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEWdldExlYXNlQW1vdW50S2V5AAAAAQUAAAAJbm9kZUluZGV4BQAAAA5uZXdMZWFzZUFtb3VudAUAAAADbmlsBQAAAANuaWwBAAAACmNvbW1vblN3YXAAAAAFAAAACHN3YXBUeXBlAAAACXBtdEFtb3VudAAAAA51c2VyQWRkcmVzc1N0cgAAAAZ0eElkNTgAAAAbc3dhcFBhcmFtc0J5VXNlclNZU1JFQURPTkxZBAAAAA0kdDAxNTY2NjE1NzQ2BQAAABtzd2FwUGFyYW1zQnlVc2VyU1lTUkVBRE9OTFkEAAAADHN3YXBMaW1pdE1heAgFAAAADSR0MDE1NjY2MTU3NDYAAAACXzEEAAAADnN3YXBMaW1pdFNwZW50CAUAAAANJHQwMTU2NjYxNTc0NgAAAAJfMgQAAAAOYmxja3MyTG10UmVzZXQIBQAAAA0kdDAxNTY2NjE1NzQ2AAAAAl8zBAAAAA1taW5Td2FwQW1vdW50CQEAAAARbWluU3dhcEFtb3VudFJFQUQAAAABBQAAAAhzd2FwVHlwZQQAAAALdG90YWxMb2NrZWQJAQAAAA90b3RhbExvY2tlZFJFQUQAAAABBQAAAAhzd2FwVHlwZQQAAAARdG90YWxMb2NrZWRCeVVzZXIJAQAAABV0b3RhbExvY2tlZEJ5VXNlclJFQUQAAAACBQAAAAhzd2FwVHlwZQUAAAAOdXNlckFkZHJlc3NTdHIEAAAAC25vZGVBZGRyZXNzCQEAAAAVZ2V0U3Rha2luZ05vZGVCeUluZGV4AAAAAQAAAAAAAAAAAAQAAAAMcHJpY2VCeUluZGV4CQEAAAAPZ2V0UHJpY2VIaXN0b3J5AAAAAQkBAAAAFWdldEhlaWdodFByaWNlQnlJbmRleAAAAAEFAAAACnByaWNlSW5kZXgEAAAADGlzU3dhcEJ5Tm9kZQkAAAAAAAACBQAAAAtub2RlQWRkcmVzcwUAAAAOdXNlckFkZHJlc3NTdHIEAAAAFmJhbGFuY2VMb2NrTWF4SW50ZXJ2YWwDBQAAAAxpc1N3YXBCeU5vZGUJAQAAABtub2RlQmFsYW5jZUxvY2tJbnRlcnZhbFJFQUQAAAAACQEAAAAXYmFsYW5jZUxvY2tJbnRlcnZhbFJFQUQAAAABBQAAAAhzd2FwVHlwZQQAAAAQc2VsZlVubG9ja0hlaWdodAkAAGQAAAACBQAAAAZoZWlnaHQFAAAAFmJhbGFuY2VMb2NrTWF4SW50ZXJ2YWwEAAAADnN3YXBVc2RuVm9sdW1lAwkAAAAAAAACBQAAAAhzd2FwVHlwZQIAAAAIbmV1dHJpbm8FAAAACXBtdEFtb3VudAkBAAAAFmNvbnZlcnRXYXZlc1RvTmV1dHJpbm8AAAACBQAAAAlwbXRBbW91bnQFAAAADHByaWNlQnlJbmRleAMJAABmAAAAAgUAAAANbWluU3dhcEFtb3VudAUAAAAJcG10QW1vdW50CQEAAAARbWluU3dhcEFtb3VudEZBSUwAAAACBQAAAAhzd2FwVHlwZQUAAAANbWluU3dhcEFtb3VudAMDCQEAAAABIQAAAAEFAAAADGlzU3dhcEJ5Tm9kZQkAAGYAAAACBQAAAA5zd2FwTGltaXRTcGVudAAAAAAAAAAAAAcJAAACAAAAAQkAASwAAAACAgAAADpZb3UgaGF2ZSBleGNlZWRlZCBzd2FwIGxpbWl0ISBOZXh0IGFsbG93ZWQgc3dhcCBoZWlnaHQgaXMgCQABpAAAAAEJAABkAAAAAgUAAAAGaGVpZ2h0BQAAAA5ibGNrczJMbXRSZXNldAMDCQEAAAABIQAAAAEFAAAADGlzU3dhcEJ5Tm9kZQkAAGYAAAACBQAAAA5zd2FwVXNkblZvbHVtZQUAAAAMc3dhcExpbWl0TWF4BwkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAC5Zb3UgaGF2ZSBleGNlZWRlZCB5b3VyIHN3YXAgbGltaXQhIFJlcXVlc3RlZDogCQABpAAAAAEFAAAADnN3YXBVc2RuVm9sdW1lAgAAAA0sIGF2YWlsYWJsZTogCQABpAAAAAEFAAAADHN3YXBMaW1pdE1heAMFAAAACWlzQmxvY2tlZAkBAAAAFWVtZXJnZW5jeVNodXRkb3duRkFJTAAAAAAEAAAACWxlYXNlUGFydAMJAAAAAAAAAgUAAAAIc3dhcFR5cGUCAAAABXdhdmVzCQEAAAAWcHJlcGFyZVVubGVhc2VBbmRMZWFzZQAAAAEAAAAAAAAAAAAFAAAAA25pbAkABRQAAAACCQAETgAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABhrZXlTd2FwVXNlclNwZW50SW5QZXJpb2QAAAABBQAAAA51c2VyQWRkcmVzc1N0cgUAAAAOc3dhcFVzZG5Wb2x1bWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABVrZXlVc2VyTGFzdFN3YXBIZWlnaHQAAAABBQAAAA51c2VyQWRkcmVzc1N0cgUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAUdG90YWxMb2NrZWRCeVVzZXJLRVkAAAACBQAAAAhzd2FwVHlwZQUAAAAOdXNlckFkZHJlc3NTdHIJAABkAAAAAgUAAAARdG90YWxMb2NrZWRCeVVzZXIFAAAACXBtdEFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAGGdldEJhbGFuY2VVbmxvY2tCbG9ja0tleQAAAAEFAAAADnVzZXJBZGRyZXNzU3RyBQAAABBzZWxmVW5sb2NrSGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAOdG90YWxMb2NrZWRLRVkAAAABBQAAAAhzd2FwVHlwZQkAAGQAAAACBQAAAAt0b3RhbExvY2tlZAUAAAAJcG10QW1vdW50CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAdzd2FwS0VZAAAAAgUAAAAOdXNlckFkZHJlc3NTdHIFAAAABnR4SWQ1OAkBAAAAD3BlbmRpbmdTd2FwREFUQQAAAAMFAAAACHN3YXBUeXBlBQAAAAlwbXRBbW91bnQFAAAAEHNlbGZVbmxvY2tIZWlnaHQFAAAAA25pbAUAAAAJbGVhc2VQYXJ0BQAAAAR1bml0AQAAAA5jb21tb25XaXRoZHJhdwAAAAQAAAAHYWNjb3VudAAAAAVpbmRleAAAAAhzd2FwVHhJZAAAAAx3aXRoZHJhd1R4SWQEAAAAC3VzZXJBZGRyZXNzCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAdhY2NvdW50BAAAABFmZWVNYW5hZ2VyQWRkcmVzcwkBAAAAFWZlZU1hbmFnZXJBZGRyZXNzUkVBRAAAAAAEAAAACWRhdGFBcnJheQkBAAAAEnN3YXBEYXRhRmFpbE9yUkVBRAAAAAIFAAAAB2FjY291bnQFAAAACHN3YXBUeElkBAAAABBzZWxmVW5sb2NrSGVpZ2h0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAJZGF0YUFycmF5BQAAABRzSWR4U2VsZlVubG9ja0hlaWdodAQAAAAIc3dhcFR5cGUJAAGRAAAAAgUAAAAJZGF0YUFycmF5BQAAAAxzSWR4U3dhcFR5cGUEAAAACGluQW1vdW50CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAJZGF0YUFycmF5BQAAAAxzSWR4SW5BbW91bnQEAAAACnN3YXBTdGF0dXMJAAGRAAAAAgUAAAAJZGF0YUFycmF5BQAAAApzSWR4U3RhdHVzBAAAAAtzdGFydEhlaWdodAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACWRhdGFBcnJheQUAAAAPc0lkeFN0YXJ0SGVpZ2h0BAAAAApvdXRGZWVQYXJ0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAAA1vdXRGZWVQYXJ0S0VZAAAAAQUAAAAIc3dhcFR5cGUFAAAADkRFRkFVTFRTV0FQRkVFBAAAAAt0b3RhbExvY2tlZAkBAAAAD3RvdGFsTG9ja2VkUkVBRAAAAAEFAAAACHN3YXBUeXBlBAAAABF0b3RhbExvY2tlZEJ5VXNlcgkBAAAAFXRvdGFsTG9ja2VkQnlVc2VyUkVBRAAAAAIFAAAACHN3YXBUeXBlBQAAAAdhY2NvdW50BAAAAAx1bmxvY2tIZWlnaHQFAAAAEHNlbGZVbmxvY2tIZWlnaHQEAAAAC2luZGV4SGVpZ2h0CQEAAAAVZ2V0SGVpZ2h0UHJpY2VCeUluZGV4AAAAAQUAAAAFaW5kZXgEAAAAD3ByZXZJbmRleEhlaWdodAkBAAAAFWdldEhlaWdodFByaWNlQnlJbmRleAAAAAEJAABlAAAAAgUAAAAFaW5kZXgAAAAAAAAAAAEEAAAADHByaWNlQnlJbmRleAkBAAAAD2dldFByaWNlSGlzdG9yeQAAAAEFAAAAC2luZGV4SGVpZ2h0BAAAABNvdXRBbW91bnRHcm9zc1R1cGxlAwkAAAAAAAACBQAAAAhzd2FwVHlwZQIAAAAFd2F2ZXMJAAUUAAAAAgkBAAAAFmNvbnZlcnRXYXZlc1RvTmV1dHJpbm8AAAACBQAAAAhpbkFtb3VudAUAAAAMcHJpY2VCeUluZGV4BQAAAA9uZXV0cmlub0Fzc2V0SWQDCQAAAAAAAAIFAAAACHN3YXBUeXBlAgAAAAhuZXV0cmlubwkABRQAAAACCQEAAAAWY29udmVydE5ldXRyaW5vVG9XYXZlcwAAAAIFAAAACGluQW1vdW50BQAAAAxwcmljZUJ5SW5kZXgFAAAABHVuaXQJAAACAAAAAQkAASwAAAACAgAAABZVbnN1cHBvcnRlZCBzd2FwIHR5cGUgBQAAAAhzd2FwVHlwZQQAAAAMcGF5b3V0c0FycmF5CQEAAAAJYXBwbHlGZWVzAAAAAggFAAAAE291dEFtb3VudEdyb3NzVHVwbGUAAAACXzEFAAAACm91dEZlZVBhcnQEAAAADG91dE5ldEFtb3VudAkAAZEAAAACBQAAAAxwYXlvdXRzQXJyYXkFAAAADElkeE5ldEFtb3VudAQAAAAMb3V0RmVlQW1vdW50CQABkQAAAAIFAAAADHBheW91dHNBcnJheQUAAAAMSWR4RmVlQW1vdW50AwUAAAAJaXNCbG9ja2VkCQEAAAAVZW1lcmdlbmN5U2h1dGRvd25GQUlMAAAAAAMJAQAAAAIhPQAAAAIFAAAACnN3YXBTdGF0dXMCAAAAB1BFTkRJTkcJAAACAAAAAQIAAAAfc3dhcCBoYXMgYmVlbiBhbHJlYWR5IHByb2Nlc3NlZAMJAABmAAAAAgUAAAAMdW5sb2NrSGVpZ2h0BQAAAAZoZWlnaHQJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAEXBsZWFzZSB3YWl0IGZvcjogCQABpAAAAAEFAAAADHVubG9ja0hlaWdodAIAAAAfIGJsb2NrIGhlaWdodCB0byB3aXRoZHJhdyBmdW5kcwMDAwkAAGYAAAACBQAAAAVpbmRleAUAAAAKcHJpY2VJbmRleAYJAABmAAAAAgUAAAAMdW5sb2NrSGVpZ2h0BQAAAAtpbmRleEhlaWdodAYDCQEAAAACIT0AAAACBQAAAA9wcmV2SW5kZXhIZWlnaHQAAAAAAAAAAAAJAABnAAAAAgUAAAAPcHJldkluZGV4SGVpZ2h0BQAAAAx1bmxvY2tIZWlnaHQHCQEAAAAOcHJpY2VJbmRleEZBSUwAAAAFBQAAAAVpbmRleAUAAAAKcHJpY2VJbmRleAUAAAALaW5kZXhIZWlnaHQFAAAADHVubG9ja0hlaWdodAUAAAAPcHJldkluZGV4SGVpZ2h0AwkAAGcAAAACAAAAAAAAAAAACQABkQAAAAIFAAAADHBheW91dHNBcnJheQUAAAAOSWR4R3Jvc3NBbW91bnQJAAACAAAAAQIAAAATYmFsYW5jZSBlcXVhbHMgemVybwMDCQAAZgAAAAIAAAAAAAAAAAAFAAAACm91dEZlZVBhcnQGCQAAZwAAAAIFAAAACm91dEZlZVBhcnQFAAAABVBBVUxJCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAHmludmFsaWQgb3V0RmVlUGFydCBjb25maWcgZm9yIAUAAAAIc3dhcFR5cGUCAAAAEiBzd2FwOiBvdXRGZWVQYXJ0PQkAAaQAAAABBQAAAApvdXRGZWVQYXJ0BAAAAAlsZWFzZVBhcnQDAwkAAAAAAAACBQAAAAhzd2FwVHlwZQIAAAAIbmV1dHJpbm8JAABmAAAAAggFAAAAE291dEFtb3VudEdyb3NzVHVwbGUAAAACXzEAAAAAAAAAAAAHCQEAAAAWcHJlcGFyZVVubGVhc2VBbmRMZWFzZQAAAAEIBQAAABNvdXRBbW91bnRHcm9zc1R1cGxlAAAAAl8xBQAAAANuaWwEAAAABXN0YXRlCQAETgAAAAIFAAAACWxlYXNlUGFydAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFHRvdGFsTG9ja2VkQnlVc2VyS0VZAAAAAgUAAAAIc3dhcFR5cGUFAAAAB2FjY291bnQJAABlAAAAAgUAAAARdG90YWxMb2NrZWRCeVVzZXIFAAAACGluQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAOdG90YWxMb2NrZWRLRVkAAAABBQAAAAhzd2FwVHlwZQkAAGUAAAACBQAAAAt0b3RhbExvY2tlZAUAAAAIaW5BbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAALdXNlckFkZHJlc3MFAAAADG91dE5ldEFtb3VudAgFAAAAE291dEFtb3VudEdyb3NzVHVwbGUAAAACXzIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAB3N3YXBLRVkAAAACBQAAAAdhY2NvdW50BQAAAAhzd2FwVHhJZAkBAAAADmZpbmlzaFN3YXBEQVRBAAAABwUAAAAJZGF0YUFycmF5BQAAAAxwcmljZUJ5SW5kZXgFAAAADG91dE5ldEFtb3VudAUAAAAMb3V0RmVlQW1vdW50BQAAAAx1bmxvY2tIZWlnaHQFAAAABWluZGV4BQAAAAx3aXRoZHJhd1R4SWQFAAAAA25pbAkABRQAAAACBQAAAAVzdGF0ZQkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIIBQAAABNvdXRBbW91bnRHcm9zc1R1cGxlAAAAAl8yBQAAAAxvdXRGZWVBbW91bnQAAAAJAAAAAWkBAAAAC2NvbnN0cnVjdG9yAAAADAAAABJuZXV0cmlub0Fzc2V0SWRQcm0AAAAOYm9uZEFzc2V0SWRQcm0AAAASYXVjdGlvbkNvbnRyYWN0UHJtAAAAFmxpcXVpZGF0aW9uQ29udHJhY3RQcm0AAAAOcnBkQ29udHJhY3RQcm0AAAAbbm9kZU9yYWNsZVByb3ZpZGVyUHViS2V5UHJtAAAAG2JhbGFuY2VXYXZlc0xvY2tJbnRlcnZhbFBybQAAAB5iYWxhbmNlTmV1dHJpbm9Mb2NrSW50ZXJ2YWxQcm0AAAAVbWluV2F2ZXNTd2FwQW1vdW50UHJtAAAAGG1pbk5ldXRyaW5vU3dhcEFtb3VudFBybQAAABVuZXV0cmlub091dEZlZVBhcnRQcm0AAAASd2F2ZXNPdXRGZWVQYXJ0UHJtBAAAAAtjaGVja0NhbGxlcgkBAAAACHRoaXNPbmx5AAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAABNubyBwYXltZW50cyBhbGxvd2VkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAEk5ldXRyaW5vQXNzZXRJZEtleQUAAAASbmV1dHJpbm9Bc3NldElkUHJtCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADkJvbmRBc3NldElkS2V5BQAAAA5ib25kQXNzZXRJZFBybQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABJBdWN0aW9uQ29udHJhY3RLZXkFAAAAEmF1Y3Rpb25Db250cmFjdFBybQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABZMaXF1aWRhdGlvbkNvbnRyYWN0S2V5BQAAABZsaXF1aWRhdGlvbkNvbnRyYWN0UHJtCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADlJQRENvbnRyYWN0S2V5BQAAAA5ycGRDb250cmFjdFBybQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABtOb2RlT3JhY2xlUHJvdmlkZXJQdWJLZXlLZXkFAAAAG25vZGVPcmFjbGVQcm92aWRlclB1YktleVBybQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAbQmFsYW5jZVdhdmVzTG9ja0ludGVydmFsS2V5BQAAABtiYWxhbmNlV2F2ZXNMb2NrSW50ZXJ2YWxQcm0JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAHkJhbGFuY2VOZXV0cmlub0xvY2tJbnRlcnZhbEtleQUAAAAeYmFsYW5jZU5ldXRyaW5vTG9ja0ludGVydmFsUHJtCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABVNaW5XYXZlc1N3YXBBbW91bnRLZXkFAAAAFW1pbldhdmVzU3dhcEFtb3VudFBybQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAYTWluTmV1dHJpbm9Td2FwQW1vdW50S2V5BQAAABhtaW5OZXV0cmlub1N3YXBBbW91bnRQcm0JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAFU5ldXRyaW5vT3V0RmVlUGFydEtleQUAAAAVbmV1dHJpbm9PdXRGZWVQYXJ0UHJtCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJXYXZlc091dEZlZVBhcnRLZXkFAAAAEndhdmVzT3V0RmVlUGFydFBybQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAA1jb25zdHJ1Y3RvclYyAAAAAwAAAAxtYXRoQ29udHJhY3QAAAATbnNidFN0YWtpbmdDb250cmFjdAAAABRzd2Fwc1RpbWVmcmFtZUJsb2NrcwQAAAALY2hlY2tDYWxsZXIJAQAAAAh0aGlzT25seQAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAJAAACAAAAAQIAAAATbm8gcGF5bWVudHMgYWxsb3dlZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA9NYXRoQ29udHJhY3RLZXkFAAAADG1hdGhDb250cmFjdAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABZOc2J0U3Rha2luZ0NvbnRyYWN0S2V5BQAAABNuc2J0U3Rha2luZ0NvbnRyYWN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAARc3dhcHNUaW1lZnJhbWVLRVkAAAAABQAAABRzd2Fwc1RpbWVmcmFtZUJsb2NrcwUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAABNzd2FwV2F2ZXNUb05ldXRyaW5vAAAAAAMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAACAAAAAQIAAAAsc3dhcFdhdmVzVG9OZXV0cmlubyByZXF1aXJlIG9ubHkgb25lIHBheW1lbnQEAAAAA3BtdAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAApT25seSBXYXZlcyB0b2tlbiBpcyBhbGxvd2VkIGZvciBzd2FwcGluZy4EAAAAC3VzZXJBZGRyZXNzCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAGdHhJZDU4CQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQEAAAAEHN3YXBQYXJhbXNTVFJVQ1QJAQAAABJhc1N3YXBQYXJhbXNTVFJVQ1QAAAABCQAD/AAAAAQFAAAABHRoaXMCAAAAG3N3YXBQYXJhbXNCeVVzZXJTWVNSRUFET05MWQkABEwAAAACBQAAAAt1c2VyQWRkcmVzcwkABEwAAAACAAAAAAAAAAAABQAAAANuaWwFAAAAA25pbAQAAAAQY29tbW9uU3dhcFJlc3VsdAkBAAAACmNvbW1vblN3YXAAAAAFAgAAAAV3YXZlcwgFAAAAA3BtdAAAAAZhbW91bnQFAAAAC3VzZXJBZGRyZXNzBQAAAAZ0eElkNTgF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YnRBbXRUb3RhbAkAAGQAAAACCQEAAAAFYXNJbnQAAAABCQABkQAAAAIFAAAACG5zYnREYXRhAAAAAAAAAAABBQAAAAhuc2J0RGlmZgQAAAAMc3dhcExpbWl0TWF4CQEAAAAFYXNJbnQAAAABCQAD/AAAAAQFAAAADG1hdGhDb250cmFjdAIAAAAVY2FsY1N3YXBMaW1pdFJFQURPTkxZCQAETAAAAAIFAAAACGduc2J0QW10BQAAAANuaWwFAAAAA25pbAQAAAAObGFzdFN3YXBIZWlnaHQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAFWtleVVzZXJMYXN0U3dhcEhlaWdodAAAAAEFAAAADnVzZXJBZGRyZXNzU3RyAAAAAAAAAAAABAAAABdzd2FwTGltaXRUaW1lbGlmZUJsb2NrcwkBAAAAEnN3YXBzVGltZWZyYW1lUkVBRAAAAAAEAAAAGXBhc3NlZEJsb2Nrc0FmdGVyTGFzdFN3YXAJAABlAAAAAgUAAAAGaGVpZ2h0BQAAAA5sYXN0U3dhcEhlaWdodAQAAAARaXNTd2FwVGltZWxpZmVOZXcJAABnAAAAAgUAAAAZcGFzc2VkQmxvY2tzQWZ0ZXJMYXN0U3dhcAUAAAAXc3dhcExpbWl0VGltZWxpZmVCbG9ja3MEAAAADnN3YXBMaW1pdFNwZW50AwUAAAARaXNTd2FwVGltZWxpZmVOZXcAAAAAAAAAAAAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAGGtleVN3YXBVc2VyU3BlbnRJblBlcmlvZAAAAAEFAAAADnVzZXJBZGRyZXNzU3RyAAAAAAAAAAAABAAAAA5ibGNrczJMbXRSZXNldAMFAAAAEWlzU3dhcFRpbWVsaWZlTmV3AAAAAAAAAAAACQAAZQAAAAIFAAAAF3N3YXBMaW1pdFRpbWVsaWZlQmxvY2tzBQAAABlwYXNzZWRCbG9ja3NBZnRlckxhc3RTd2FwCQAFFAAAAAIFAAAAA25pbAkABRcAAAAFBQAAAAxzd2FwTGltaXRNYXgFAAAADnN3YXBMaW1pdFNwZW50BQAAAA5ibGNrczJMbXRSZXNldAUAAAAIZ25zYnRBbXQFAAAADWduc2J0QW10VG90YWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAACaWQJAAJYAAAAAQgFAAAAAnR4AAAAAmlkBAAAAAVjb3VudAkAAGQAAAACCQAAZAAAAAIJAABkAAAAAgMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACQACWQAAAAEJAAGRAAAAAgUAAAAQcHViS2V5QWRtaW5zTGlzdAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAABCQACWQAAAAEJAAGRAAAAAgUAAAAQcHViS2V5QWRtaW5zTGlzdAAAAAAAAAAAAQAAAAAAAAAAAQAAAAAAAAAAAAMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAACCQACWQAAAAEJAAGRAAAAAgUAAAAQcHViS2V5QWRtaW5zTGlzdAAAAAAAAAAAAgAAAAAAAAAAAQAAAAAAAAAAAAMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAADCQACWQAAAAEJAAGRAAAAAgUAAAAQcHViS2V5QWRtaW5zTGlzdAAAAAAAAAAAAwAAAAAAAAAAAgAAAAAAAAAAAAQAAAAHJG1hdGNoMAUAAAACdHgDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAFVNwb25zb3JGZWVUcmFuc2FjdGlvbgQAAAAJc3BvbnNvclR4BQAAAAckbWF0Y2gwAwkBAAAAG2NoZWNrSXNWYWxpZE1pblNwb25zb3JlZEZlZQAAAAEFAAAACXNwb25zb3JUeAkAAGcAAAACBQAAAAVjb3VudAAAAAAAAAAAAwcJAABnAAAAAgUAAAAFY291bnQAAAAAAAAAAAMxw+0Z", "chainId": 87, "height": 3043381, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Ki7KTH1odqimEZQ44A6oqmhKsWqxWm9QDEUfnDEK9KR Next: DGXi5G7e3V7w9tE5cozZBow8awPHPhgjJbDHU4bXrn5U Full:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | func a (b) = valueOrElse(getInteger(this, b), 0) | |
4 | + | let a = "443c64dd5056b5be23b700224699295e733e0452" | |
5 | + | ||
6 | + | func b (c) = valueOrElse(getInteger(this, c), 0) | |
5 | 7 | ||
6 | 8 | ||
7 | - | func | |
9 | + | func d (c) = valueOrElse(getString(this, c), "") | |
8 | 10 | ||
9 | 11 | ||
10 | - | func | |
12 | + | func e (c) = valueOrElse(getBoolean(this, c), false) | |
11 | 13 | ||
12 | 14 | ||
13 | - | func | |
15 | + | func f (g,c) = valueOrElse(getInteger(addressFromStringValue(g), c), 0) | |
14 | 16 | ||
15 | 17 | ||
16 | - | func | |
18 | + | func h (g,c) = valueOrElse(getString(addressFromStringValue(g), c), "") | |
17 | 19 | ||
18 | 20 | ||
19 | - | func | |
21 | + | func i (g,c) = valueOrElse(getBoolean(addressFromStringValue(g), c), false) | |
20 | 22 | ||
21 | 23 | ||
22 | - | let i = ["GJdLSaLiv5K7xuejac8mcRcHoyo3dPrESrvktG3a6MAR", "FWVffYr2ALmHMejZm3WqeLz6Sdym3gLFGtJn4KTwyU5x", "3Wh2LaWcb5gg7K2pPcW3Ep6EAuRBzYkAgrdpt43jTDFa", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"] | |
23 | - | ||
24 | - | let j = "__" | |
25 | - | ||
26 | - | let k = 100000000 | |
27 | - | ||
28 | - | let l = 1000000 | |
29 | - | ||
30 | - | let m = 1000000 | |
31 | - | ||
32 | - | let n = 20000 | |
33 | - | ||
34 | - | let o = 0 | |
35 | - | ||
36 | - | let p = 1 | |
37 | - | ||
38 | - | let q = 2 | |
39 | - | ||
40 | - | let r = "neutrino_asset_id" | |
41 | - | ||
42 | - | let s = "bond_asset_id" | |
43 | - | ||
44 | - | let t = "auction_contract" | |
45 | - | ||
46 | - | let u = "liquidation_contract" | |
47 | - | ||
48 | - | let v = "rpd_contract" | |
49 | - | ||
50 | - | let w = "control_contract" | |
51 | - | ||
52 | - | let x = "balance_waves_lock_interval" | |
53 | - | ||
54 | - | let y = "balance_neutrino_lock_interval" | |
55 | - | ||
56 | - | let z = "min_waves_swap_amount" | |
57 | - | ||
58 | - | let A = "min_neutrino_swap_amount" | |
59 | - | ||
60 | - | let B = "node_oracle_provider" | |
61 | - | ||
62 | - | let C = "neutrinoOut_swap_feePart" | |
63 | - | ||
64 | - | let D = "wavesOut_swap_feePart" | |
65 | - | ||
66 | - | let E = "fees_manager_address" | |
67 | - | ||
68 | - | let F = "rand_rsa_public" | |
69 | - | ||
70 | - | let G = "price" | |
71 | - | ||
72 | - | let H = "price_index" | |
73 | - | ||
74 | - | let I = "is_blocked" | |
75 | - | ||
76 | - | func J (K) = ((G + "_") + toString(K)) | |
24 | + | func j (k) = { | |
25 | + | let l = k | |
26 | + | if ($isInstanceOf(l, "List[Any]")) | |
27 | + | then { | |
28 | + | let m = l | |
29 | + | m | |
30 | + | } | |
31 | + | else throw("fail to cast into List[Any]") | |
32 | + | } | |
77 | 33 | ||
78 | 34 | ||
79 | - | func L (M) = ((H + "_") + toString(M)) | |
35 | + | func n (k) = { | |
36 | + | let l = k | |
37 | + | if ($isInstanceOf(l, "String")) | |
38 | + | then { | |
39 | + | let o = l | |
40 | + | o | |
41 | + | } | |
42 | + | else throw("fail to cast into String") | |
43 | + | } | |
80 | 44 | ||
81 | 45 | ||
82 | - | func N (O) = c(makeString(["%s%d%s", "lease", toString(O), "nodeAddress"], j)) | |
46 | + | func p (k) = { | |
47 | + | let l = k | |
48 | + | if ($isInstanceOf(l, "Int")) | |
49 | + | then { | |
50 | + | let q = l | |
51 | + | q | |
52 | + | } | |
53 | + | else throw("fail to cast into Int") | |
54 | + | } | |
83 | 55 | ||
84 | 56 | ||
85 | - | func P (O) = addressFromStringValue(N(O)) | |
57 | + | func r (k) = { | |
58 | + | let l = k | |
59 | + | if ($isInstanceOf(l, "(Int, Int, Int, Int, Int)")) | |
60 | + | then { | |
61 | + | let s = l | |
62 | + | s | |
63 | + | } | |
64 | + | else throw("fail to cast into Int") | |
65 | + | } | |
86 | 66 | ||
87 | 67 | ||
88 | - | func Q () = valueOrElse(getInteger(this, makeString(["%s%s", "lease", "sponsorshipWavesReserve"], j)), (1000 * k)) | |
68 | + | let t = ["GJdLSaLiv5K7xuejac8mcRcHoyo3dPrESrvktG3a6MAR", "FWVffYr2ALmHMejZm3WqeLz6Sdym3gLFGtJn4KTwyU5x", "3Wh2LaWcb5gg7K2pPcW3Ep6EAuRBzYkAgrdpt43jTDFa", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"] | |
69 | + | ||
70 | + | let u = "__" | |
71 | + | ||
72 | + | let v = 100000000 | |
73 | + | ||
74 | + | let w = 1000000 | |
75 | + | ||
76 | + | let x = 1000000 | |
77 | + | ||
78 | + | let y = 20000 | |
79 | + | ||
80 | + | let z = 0 | |
81 | + | ||
82 | + | let A = 1 | |
83 | + | ||
84 | + | let B = 2 | |
85 | + | ||
86 | + | let C = "neutrino_asset_id" | |
87 | + | ||
88 | + | let D = "bond_asset_id" | |
89 | + | ||
90 | + | let E = "auction_contract" | |
91 | + | ||
92 | + | let F = "nsbtStakingContract" | |
93 | + | ||
94 | + | let G = "liquidation_contract" | |
95 | + | ||
96 | + | let H = "rpd_contract" | |
97 | + | ||
98 | + | let I = "control_contract" | |
99 | + | ||
100 | + | let J = "math_contract" | |
101 | + | ||
102 | + | let K = "balance_waves_lock_interval" | |
103 | + | ||
104 | + | let L = "balance_neutrino_lock_interval" | |
105 | + | ||
106 | + | let M = "min_waves_swap_amount" | |
107 | + | ||
108 | + | let N = "min_neutrino_swap_amount" | |
109 | + | ||
110 | + | let O = "node_oracle_provider" | |
111 | + | ||
112 | + | let P = "neutrinoOut_swap_feePart" | |
113 | + | ||
114 | + | let Q = "wavesOut_swap_feePart" | |
115 | + | ||
116 | + | let R = "fees_manager_address" | |
117 | + | ||
118 | + | let S = "price" | |
119 | + | ||
120 | + | let T = "price_index" | |
121 | + | ||
122 | + | let U = "is_blocked" | |
123 | + | ||
124 | + | func V (W) = ((S + "_") + toString(W)) | |
89 | 125 | ||
90 | 126 | ||
91 | - | func | |
127 | + | func X (Y) = ((T + "_") + toString(Y)) | |
92 | 128 | ||
93 | 129 | ||
94 | - | func | |
130 | + | func Z (aa) = d(makeString(["%s%d%s", "lease", toString(aa), "nodeAddress"], u)) | |
95 | 131 | ||
96 | 132 | ||
97 | - | func | |
133 | + | func ab (aa) = addressFromStringValue(Z(aa)) | |
98 | 134 | ||
99 | 135 | ||
100 | - | func | |
136 | + | func ac () = valueOrElse(getInteger(this, makeString(["%s%s", "lease", "sponsorshipWavesReserve"], u)), (1000 * v)) | |
101 | 137 | ||
102 | 138 | ||
103 | - | func | |
139 | + | func ad (ae) = ("balance_unlock_block_" + ae) | |
104 | 140 | ||
105 | 141 | ||
106 | - | func | |
142 | + | func af (ag) = makeString(["%s%d%s", "lease", toString(ag), "id"], u) | |
107 | 143 | ||
108 | 144 | ||
109 | - | func | |
145 | + | func ah (ag) = makeString(["%s%d%s", "lease", toString(ag), "amount"], u) | |
110 | 146 | ||
111 | 147 | ||
112 | - | func | |
148 | + | func ai (aj) = (("min_" + aj) + "_swap_amount") | |
113 | 149 | ||
114 | 150 | ||
115 | - | func | |
151 | + | func ak (aj) = ("balance_lock_" + aj) | |
116 | 152 | ||
117 | 153 | ||
118 | - | func | |
154 | + | func al (aj,ae) = makeString(["balance_lock", aj, ae], "_") | |
119 | 155 | ||
120 | 156 | ||
121 | - | func | |
157 | + | func am (aj) = (("balance_" + aj) + "_lock_interval") | |
122 | 158 | ||
123 | 159 | ||
124 | - | func | |
160 | + | func an () = "balance_node_lock_interval" | |
125 | 161 | ||
126 | 162 | ||
127 | - | func | |
163 | + | func ao (aj) = (aj + "Out_swap_feePart") | |
128 | 164 | ||
129 | 165 | ||
130 | - | func | |
166 | + | func ap () = "swaps_timeframe" | |
131 | 167 | ||
132 | 168 | ||
133 | - | func | |
169 | + | func aq (aj) = valueOrElse(getInteger(this, ai(aj)), 0) | |
134 | 170 | ||
135 | 171 | ||
136 | - | func | |
172 | + | func ar () = valueOrElse(getInteger(this, ap()), 1440) | |
137 | 173 | ||
138 | 174 | ||
139 | - | func | |
175 | + | func as (aj) = valueOrElse(getInteger(this, ak(aj)), 0) | |
140 | 176 | ||
141 | 177 | ||
142 | - | func | |
178 | + | func at (aj,ae) = valueOrElse(getInteger(this, al(aj, ae)), 0) | |
143 | 179 | ||
144 | 180 | ||
145 | - | func | |
181 | + | func au (aj) = valueOrElse(getInteger(this, am(aj)), 1440) | |
146 | 182 | ||
147 | 183 | ||
148 | - | func | |
184 | + | func av () = valueOrElse(getInteger(this, an()), 1) | |
149 | 185 | ||
150 | 186 | ||
151 | - | func | |
187 | + | func aw (ax) = makeString(["%s%s", "swapUserSpentInPeriod", ax], u) | |
152 | 188 | ||
153 | 189 | ||
154 | - | func | |
190 | + | func ay (ax) = makeString(["%s%s", "userLastSwapHeight", ax], u) | |
155 | 191 | ||
156 | 192 | ||
157 | - | func | |
193 | + | func az () = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, R), (R + " is not specified"))), (R + " invalid address format")) | |
158 | 194 | ||
159 | 195 | ||
160 | - | func | |
196 | + | func aA (aB,aC) = fraction(fraction(aB, x, aC), v, w) | |
161 | 197 | ||
162 | 198 | ||
163 | - | ||
199 | + | func aD (aB,aC) = fraction(fraction(aB, aC, x), w, v) | |
164 | 200 | ||
165 | - | let aB = fromBase58String(c(r)) | |
166 | 201 | ||
167 | - | ||
202 | + | func aE (aB,aC) = aD(aB, aC) | |
168 | 203 | ||
169 | - | let aD = c(v) | |
170 | 204 | ||
171 | - | ||
205 | + | func aF (aG) = split(aG, ",") | |
172 | 206 | ||
173 | - | let aw = e(aE, H) | |
174 | 207 | ||
175 | - | ||
208 | + | func aH (aj,aI) = throw(((("The specified amount in " + aj) + " swap is less than the required minimum of ") + toString(aI))) | |
176 | 209 | ||
177 | - | let aG = fromBase58String(c(B)) | |
178 | 210 | ||
179 | - | ||
211 | + | func aJ () = throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles") | |
180 | 212 | ||
181 | - | let aI = fromBase58String("975akZBfnMj513U7MZaHKzQrmsEx5aE3wdWKTrHBhbjF") | |
182 | 213 | ||
183 | - | ||
214 | + | func aK (Y,aL,aM,aN,aO) = throw(((((((((("invalid price history index: index=" + toString(Y)) + " priceIndex=") + toString(aL)) + " indexHeight=") + toString(aM)) + " unlockHeight=") + toString(aN)) + " prevIndexHeight=") + toString(aO))) | |
184 | 215 | ||
185 | - | let aK = this | |
186 | 216 | ||
187 | - | let | |
217 | + | let aP = d(G) | |
188 | 218 | ||
189 | - | let | |
219 | + | let aQ = d(F) | |
190 | 220 | ||
191 | - | let | |
221 | + | let aR = fromBase58String(d(C)) | |
192 | 222 | ||
193 | - | let | |
223 | + | let aS = d(E) | |
194 | 224 | ||
195 | - | let | |
225 | + | let aT = d(H) | |
196 | 226 | ||
197 | - | let | |
227 | + | let aU = d(I) | |
198 | 228 | ||
199 | - | let | |
229 | + | let aV = d(J) | |
200 | 230 | ||
201 | - | func aS (aT) = { | |
202 | - | let aU = 100000 | |
203 | - | let aV = 1000 | |
204 | - | let aW = ao(aU, aL) | |
205 | - | let aX = (aW * 2) | |
206 | - | let aY = fraction(aW, aV, 100) | |
207 | - | let aZ = value(aT.minSponsoredAssetFee) | |
208 | - | if (if ((aZ >= aX)) | |
209 | - | then (aY >= aZ) | |
231 | + | let aL = f(aU, T) | |
232 | + | ||
233 | + | let aW = i(aU, U) | |
234 | + | ||
235 | + | let aX = fromBase58String(d(O)) | |
236 | + | ||
237 | + | let aY = fromBase58String("6nSpVyNH7yM69eg446wrQR94ipbbcmZMU1ENPwanC97g") | |
238 | + | ||
239 | + | let aZ = fromBase58String("975akZBfnMj513U7MZaHKzQrmsEx5aE3wdWKTrHBhbjF") | |
240 | + | ||
241 | + | let ba = this | |
242 | + | ||
243 | + | let bb = addressFromStringValue(aV) | |
244 | + | ||
245 | + | let bc = addressFromStringValue(aQ) | |
246 | + | ||
247 | + | let bd = f(aU, S) | |
248 | + | ||
249 | + | func be (bf) = { | |
250 | + | let bg = 100000 | |
251 | + | let bh = 1000 | |
252 | + | let bi = aD(bg, bd) | |
253 | + | let bj = (bi * 2) | |
254 | + | let bk = fraction(bi, bh, 100) | |
255 | + | let bl = value(bf.minSponsoredAssetFee) | |
256 | + | if (if ((bl >= bj)) | |
257 | + | then (bk >= bl) | |
210 | 258 | else false) | |
211 | - | then ( | |
259 | + | then (bf.assetId == aR) | |
212 | 260 | else false | |
213 | 261 | } | |
214 | 262 | ||
215 | 263 | ||
216 | - | func | |
264 | + | func bm (W) = f(aU, V(W)) | |
217 | 265 | ||
218 | 266 | ||
219 | - | func | |
267 | + | func bn (Y) = f(aU, X(Y)) | |
220 | 268 | ||
221 | 269 | ||
222 | - | let bc = 1 | |
223 | - | ||
224 | - | let bd = 2 | |
225 | - | ||
226 | - | let be = 3 | |
227 | - | ||
228 | - | let bf = 4 | |
229 | - | ||
230 | - | let bg = 5 | |
231 | - | ||
232 | - | let bh = 6 | |
233 | - | ||
234 | - | let bi = 7 | |
235 | - | ||
236 | - | let bj = 8 | |
237 | - | ||
238 | - | let bk = 9 | |
239 | - | ||
240 | - | let bl = 10 | |
241 | - | ||
242 | - | let bm = 11 | |
243 | - | ||
244 | - | let bn = 12 | |
245 | - | ||
246 | - | let bo = 13 | |
247 | - | ||
248 | - | let bp = 14 | |
249 | - | ||
250 | - | let bq = 15 | |
251 | - | ||
252 | - | let br = 16 | |
253 | - | ||
254 | - | func bs (bt,bu) = makeString(["%s%s", bt, bu], j) | |
270 | + | func bo (ax) = makeString(["%s%s%s", "paramByUser", ax, "amount"], u) | |
255 | 271 | ||
256 | 272 | ||
257 | - | func bv (X,bw,bx,an,by,bz,bA,bB,bC,bD,bE,bF,M,bG,bH,bI) = makeString(["%s%s%d%d%d%d%d%d%d%d%d%d%d%s", X, bw, bx, an, by, bz, bA, bB, bC, bD, bE, bF, M, bG, bH, bI], j) | |
273 | + | let bp = 1 | |
274 | + | ||
275 | + | let bq = 2 | |
276 | + | ||
277 | + | let br = 3 | |
278 | + | ||
279 | + | let bs = 4 | |
280 | + | ||
281 | + | let bt = 5 | |
282 | + | ||
283 | + | let bu = 6 | |
284 | + | ||
285 | + | let bv = 7 | |
286 | + | ||
287 | + | let bw = 8 | |
288 | + | ||
289 | + | let bx = 9 | |
290 | + | ||
291 | + | let by = 10 | |
292 | + | ||
293 | + | let bz = 11 | |
294 | + | ||
295 | + | let bA = 12 | |
296 | + | ||
297 | + | let bB = 13 | |
298 | + | ||
299 | + | let bC = 14 | |
300 | + | ||
301 | + | let bD = 15 | |
302 | + | ||
303 | + | let bE = 16 | |
304 | + | ||
305 | + | func bF (ax,bG) = makeString(["%s%s", ax, bG], u) | |
258 | 306 | ||
259 | 307 | ||
260 | - | func | |
308 | + | func bH (aj,bI,bJ,aC,bK,bL,bM,bN,bO,bP,bQ,bR,Y,bS,bT,bU) = makeString(["%s%s%d%d%d%d%d%d%d%d%d%d%d%s", aj, bI, bJ, aC, bK, bL, bM, bN, bO, bP, bQ, bR, Y, bS, bT, bU], u) | |
261 | 309 | ||
262 | 310 | ||
263 | - | func bL (bM,an,by,bz,bF,M,bG) = bv(bM[bc], "FINISHED", bM[be], toString(an), toString(by), toString(bz), bM[bi], bM[bj], toString(height), toString(lastBlock.timestamp), bM[bm], toString(bF), toString(M), bG, if ((15 >= size(bM))) | |
264 | - | then "60" | |
265 | - | else bM[bq], if ((15 >= size(bM))) | |
266 | - | then "1440" | |
267 | - | else bM[br]) | |
311 | + | func bV (aj,bW,bQ) = bH(aj, "PENDING", toString(bW), "0", "0", "0", toString(height), toString(lastBlock.timestamp), "0", "0", toString(bQ), "0", "0", "NULL", "0", "0") | |
268 | 312 | ||
269 | 313 | ||
270 | - | func bN (bt,bO) = { | |
271 | - | let bP = bs(bt, bO) | |
272 | - | split(valueOrErrorMessage(getString(this, bP), ("no swap data for " + bP)), j) | |
314 | + | func bX (bY,aC,bK,bL,bR,Y,bS) = bH(bY[bp], "FINISHED", bY[br], toString(aC), toString(bK), toString(bL), bY[bv], bY[bw], toString(height), toString(lastBlock.timestamp), bY[bz], toString(bR), toString(Y), bS, bY[bD], bY[bE]) | |
315 | + | ||
316 | + | ||
317 | + | func bZ (ax,ca) = { | |
318 | + | let cb = bF(ax, ca) | |
319 | + | split(valueOrErrorMessage(getString(this, cb), ("no swap data for " + cb)), u) | |
273 | 320 | } | |
274 | 321 | ||
275 | 322 | ||
276 | - | func | |
277 | - | let | |
278 | - | [( | |
323 | + | func cc (cd,ce) = { | |
324 | + | let cf = fraction(cd, ce, w) | |
325 | + | [(cd - cf), cf, cd] | |
279 | 326 | } | |
280 | 327 | ||
281 | 328 | ||
282 | - | func bU (bu,bV,X,bA,bW) = { | |
283 | - | let bX = rsaVerify_16Kb(SHA256, toBytes(bu), bV, aJ) | |
284 | - | if (!(bX)) | |
285 | - | then throw("invalid RSA signature") | |
286 | - | else { | |
287 | - | let bY = bW._1 | |
288 | - | let bZ = bW._2 | |
289 | - | let ca = (toInt(sha256_16Kb(bV)) % (bZ - bY)) | |
290 | - | let cb = (bY + (if ((0 > ca)) | |
291 | - | then -(ca) | |
292 | - | else ca)) | |
293 | - | (bA + cb) | |
294 | - | } | |
295 | - | } | |
329 | + | func cg (ch) = if ((0 > ch)) | |
330 | + | then -(ch) | |
331 | + | else ch | |
296 | 332 | ||
297 | 333 | ||
298 | - | func cc (cd) = if ((0 > cd)) | |
299 | - | then -(cd) | |
300 | - | else cd | |
301 | - | ||
302 | - | ||
303 | - | func ce (cf) = { | |
304 | - | let cg = ((wavesBalance(aK).available - cf) - Q()) | |
305 | - | let ch = a(V(0)) | |
306 | - | let ci = a(V(1)) | |
307 | - | let cj = (cg + ch) | |
308 | - | let ck = (cg + ci) | |
309 | - | if (if ((cj > 0)) | |
334 | + | func ci (cj) = { | |
335 | + | let ck = ((wavesBalance(ba).available - cj) - ac()) | |
336 | + | let cl = b(ah(0)) | |
337 | + | let cm = b(ah(1)) | |
338 | + | let cn = (ck + cl) | |
339 | + | let co = (ck + cm) | |
340 | + | if (if ((cn > 0)) | |
310 | 341 | then true | |
311 | - | else ( | |
342 | + | else (co > 0)) | |
312 | 343 | then { | |
313 | - | let | |
314 | - | let | |
315 | - | if (( | |
316 | - | then $Tuple2(0, | |
317 | - | else $Tuple2(1, | |
344 | + | let cp = cg((cn - cm)) | |
345 | + | let cq = cg((co - cl)) | |
346 | + | if ((cq >= cp)) | |
347 | + | then $Tuple2(0, cn) | |
348 | + | else $Tuple2(1, co) | |
318 | 349 | } | |
319 | 350 | else $Tuple2(-1, 0) | |
320 | 351 | } | |
321 | 352 | ||
322 | 353 | ||
323 | - | func cn (cf) = { | |
324 | - | let co = ce(cf) | |
325 | - | let U = co._1 | |
326 | - | let cp = co._2 | |
327 | - | if ((cp > 0)) | |
354 | + | func cr (cs) = if ((cs.caller != this)) | |
355 | + | then throw("Permission denied: this contract only allowed") | |
356 | + | else true | |
357 | + | ||
358 | + | ||
359 | + | func ct (cj) = { | |
360 | + | let cu = ci(cj) | |
361 | + | let ag = cu._1 | |
362 | + | let cv = cu._2 | |
363 | + | if ((cv > 0)) | |
328 | 364 | then { | |
329 | - | let | |
330 | - | let | |
331 | - | let | |
332 | - | then [LeaseCancel(value( | |
365 | + | let cw = af(ag) | |
366 | + | let cx = getBinary(this, cw) | |
367 | + | let cy = if (isDefined(cx)) | |
368 | + | then [LeaseCancel(value(cx))] | |
333 | 369 | else nil | |
334 | - | let | |
335 | - | let | |
336 | - | ( | |
370 | + | let cz = ah(ag) | |
371 | + | let cA = Lease(ab(ag), cv) | |
372 | + | (cy ++ [cA, BinaryEntry(cw, calculateLeaseId(cA)), IntegerEntry(ah(ag), cv)]) | |
337 | 373 | } | |
338 | 374 | else nil | |
339 | 375 | } | |
340 | 376 | ||
341 | 377 | ||
342 | - | func cv (X,cw) = { | |
343 | - | let cx = value(cw.payments[0]) | |
344 | - | let cy = toString(cw.caller) | |
345 | - | let cz = toBase58String(cw.transactionId) | |
346 | - | let at = ae(X) | |
347 | - | let cA = af(X) | |
348 | - | let cB = ag(X, cy) | |
349 | - | let cC = N(0) | |
350 | - | let cD = if ((cC == cy)) | |
351 | - | then aj() | |
352 | - | else ah(X) | |
353 | - | let bE = (height + cD) | |
354 | - | if ((at > cx.amount)) | |
355 | - | then as(X, at) | |
356 | - | else if (aF) | |
357 | - | then au() | |
358 | - | else { | |
359 | - | let cE = if ((X == "waves")) | |
360 | - | then cn(0) | |
361 | - | else nil | |
362 | - | $Tuple2(([IntegerEntry(Z(X, cy), (cB + cx.amount)), IntegerEntry(R(cy), bE), IntegerEntry(Y(X), (cA + cx.amount)), StringEntry(bs(cy, cz), bJ(X, cx.amount, bE))] ++ cE), unit) | |
363 | - | } | |
378 | + | func cB (aj,cC,cD,cE,cF) = { | |
379 | + | let cG = cF | |
380 | + | let cH = cG._1 | |
381 | + | let cI = cG._2 | |
382 | + | let cJ = cG._3 | |
383 | + | let aI = aq(aj) | |
384 | + | let cK = as(aj) | |
385 | + | let cL = at(aj, cD) | |
386 | + | let cM = Z(0) | |
387 | + | let cN = bm(bn(aL)) | |
388 | + | let cO = (cM == cD) | |
389 | + | let cP = if (cO) | |
390 | + | then av() | |
391 | + | else au(aj) | |
392 | + | let bQ = (height + cP) | |
393 | + | let cQ = if ((aj == "neutrino")) | |
394 | + | then cC | |
395 | + | else aD(cC, cN) | |
396 | + | if ((aI > cC)) | |
397 | + | then aH(aj, aI) | |
398 | + | else if (if (!(cO)) | |
399 | + | then (cI > 0) | |
400 | + | else false) | |
401 | + | then throw(("You have exceeded swap limit! Next allowed swap height is " + toString((height + cJ)))) | |
402 | + | else if (if (!(cO)) | |
403 | + | then (cQ > cH) | |
404 | + | else false) | |
405 | + | then throw(((("You have exceeded your swap limit! Requested: " + toString(cQ)) + ", available: ") + toString(cH))) | |
406 | + | else if (aW) | |
407 | + | then aJ() | |
408 | + | else { | |
409 | + | let cR = if ((aj == "waves")) | |
410 | + | then ct(0) | |
411 | + | else nil | |
412 | + | $Tuple2(([IntegerEntry(aw(cD), cQ), IntegerEntry(ay(cD), height), IntegerEntry(al(aj, cD), (cL + cC)), IntegerEntry(ad(cD), bQ), IntegerEntry(ak(aj), (cK + cC)), StringEntry(bF(cD, cE), bV(aj, cC, bQ))] ++ cR), unit) | |
413 | + | } | |
364 | 414 | } | |
365 | 415 | ||
366 | 416 | ||
367 | - | func cF (cy,M,bO,cG,cw) = { | |
368 | - | let bt = addressFromStringValue(cy) | |
369 | - | let cH = ak() | |
370 | - | let bM = bN(cy, bO) | |
371 | - | let bE = parseIntValue(bM[bm]) | |
372 | - | let X = bM[bc] | |
373 | - | let bx = parseIntValue(bM[be]) | |
374 | - | let cI = bM[bd] | |
375 | - | let bA = parseIntValue(bM[bi]) | |
376 | - | let cJ = valueOrElse(getInteger(this, ad(X)), n) | |
377 | - | let cA = af(X) | |
378 | - | let cB = ag(X, cy) | |
379 | - | let bW = if ((15 >= size(bM))) | |
380 | - | then $Tuple2(60, 1440) | |
381 | - | else $Tuple2(parseIntValue(bM[bq]), parseIntValue(bM[br])) | |
382 | - | let ay = { | |
383 | - | let cK = cG | |
384 | - | if ($isInstanceOf(cK, "ByteVector")) | |
385 | - | then { | |
386 | - | let bV = cK | |
387 | - | bU(bO, bV, X, bA, bW) | |
388 | - | } | |
389 | - | else if ($isInstanceOf(cK, "Unit")) | |
390 | - | then bE | |
391 | - | else throw("Match error") | |
392 | - | } | |
393 | - | let ax = bb(M) | |
394 | - | let az = bb((M - 1)) | |
395 | - | let cL = ba(ax) | |
396 | - | let cM = if ((X == "waves")) | |
397 | - | then $Tuple2(ao(bx, cL), aB) | |
398 | - | else if ((X == "neutrino")) | |
399 | - | then $Tuple2(al(bx, cL), unit) | |
400 | - | else throw(("Unsupported swap type " + X)) | |
401 | - | let cN = bQ(cM._1, cJ) | |
402 | - | let by = cN[o] | |
403 | - | let bz = cN[p] | |
404 | - | if (aF) | |
405 | - | then au() | |
406 | - | else if ((cI != "PENDING")) | |
417 | + | func cS (cT,Y,ca,bS) = { | |
418 | + | let ax = addressFromStringValue(cT) | |
419 | + | let cU = az() | |
420 | + | let bY = bZ(cT, ca) | |
421 | + | let bQ = parseIntValue(bY[bz]) | |
422 | + | let aj = bY[bp] | |
423 | + | let bJ = parseIntValue(bY[br]) | |
424 | + | let cV = bY[bq] | |
425 | + | let bM = parseIntValue(bY[bv]) | |
426 | + | let cW = valueOrElse(getInteger(this, ao(aj)), y) | |
427 | + | let cK = as(aj) | |
428 | + | let cL = at(aj, cT) | |
429 | + | let aN = bQ | |
430 | + | let aM = bn(Y) | |
431 | + | let aO = bn((Y - 1)) | |
432 | + | let cN = bm(aM) | |
433 | + | let cX = if ((aj == "waves")) | |
434 | + | then $Tuple2(aD(bJ, cN), aR) | |
435 | + | else if ((aj == "neutrino")) | |
436 | + | then $Tuple2(aA(bJ, cN), unit) | |
437 | + | else throw(("Unsupported swap type " + aj)) | |
438 | + | let cY = cc(cX._1, cW) | |
439 | + | let bK = cY[z] | |
440 | + | let bL = cY[A] | |
441 | + | if (aW) | |
442 | + | then aJ() | |
443 | + | else if ((cV != "PENDING")) | |
407 | 444 | then throw("swap has been already processed") | |
408 | - | else if (( | |
409 | - | then throw((("please wait for: " + toString( | |
410 | - | else if (if (if (( | |
445 | + | else if ((aN > height)) | |
446 | + | then throw((("please wait for: " + toString(aN)) + " block height to withdraw funds")) | |
447 | + | else if (if (if ((Y > aL)) | |
411 | 448 | then true | |
412 | - | else ( | |
449 | + | else (aN > aM)) | |
413 | 450 | then true | |
414 | - | else if (( | |
415 | - | then ( | |
451 | + | else if ((aO != 0)) | |
452 | + | then (aO >= aN) | |
416 | 453 | else false) | |
417 | - | then | |
418 | - | else if ((0 >= | |
454 | + | then aK(Y, aL, aM, aN, aO) | |
455 | + | else if ((0 >= cY[B])) | |
419 | 456 | then throw("balance equals zero") | |
420 | - | else if (if ((0 > | |
457 | + | else if (if ((0 > cW)) | |
421 | 458 | then true | |
422 | - | else ( | |
423 | - | then throw(((("invalid outFeePart config for " + | |
459 | + | else (cW >= w)) | |
460 | + | then throw(((("invalid outFeePart config for " + aj) + " swap: outFeePart=") + toString(cW))) | |
424 | 461 | else { | |
425 | - | let | |
426 | - | then ( | |
462 | + | let cR = if (if ((aj == "neutrino")) | |
463 | + | then (cX._1 > 0) | |
427 | 464 | else false) | |
428 | - | then | |
465 | + | then ct(cX._1) | |
429 | 466 | else nil | |
430 | - | $Tuple2((cE ++ [IntegerEntry(Z(X, cy), (cB - bx)), IntegerEntry(Y(X), (cA - bx)), ScriptTransfer(bt, by, cM._2), ScriptTransfer(cH, bz, cM._2), StringEntry(bs(cy, bO), bL(bM, cL, by, bz, ay, M, toBase58String(cw.transactionId)))]), unit) | |
467 | + | let cZ = (cR ++ [IntegerEntry(al(aj, cT), (cL - bJ)), IntegerEntry(ak(aj), (cK - bJ)), ScriptTransfer(ax, bK, cX._2), StringEntry(bF(cT, ca), bX(bY, cN, bK, bL, aN, Y, bS))]) | |
468 | + | $Tuple2(cZ, AttachedPayment(cX._2, bL)) | |
431 | 469 | } | |
432 | 470 | } | |
433 | 471 | ||
434 | 472 | ||
435 | - | @Callable(cw) | |
436 | - | func swapWavesToNeutrino () = { | |
437 | - | let cx = value(cw.payments[0]) | |
438 | - | if (isDefined(cx.assetId)) | |
439 | - | then throw("Only Waves token is allowed for swapping.") | |
440 | - | else cv("waves", cw) | |
473 | + | @Callable(cs) | |
474 | + | func constructor (da,db,dc,dd,de,df,dg,dh,di,dj,dk,dl) = { | |
475 | + | let dm = cr(cs) | |
476 | + | if ((dm == dm)) | |
477 | + | then if ((size(cs.payments) != 0)) | |
478 | + | then throw("no payments allowed") | |
479 | + | else [StringEntry(C, da), StringEntry(D, db), StringEntry(E, dc), StringEntry(G, dd), StringEntry(H, de), StringEntry(O, df), IntegerEntry(K, dg), IntegerEntry(L, dh), IntegerEntry(M, di), IntegerEntry(N, dj), IntegerEntry(P, dk), IntegerEntry(Q, dl)] | |
480 | + | else throw("Strict value is not equal to itself.") | |
441 | 481 | } | |
442 | 482 | ||
443 | 483 | ||
444 | 484 | ||
445 | - | @Callable(cw) | |
446 | - | func swapNeutrinoToWaves () = { | |
447 | - | let cx = value(cw.payments[0]) | |
448 | - | if ((cx.assetId != aB)) | |
449 | - | then throw("Only appropriate Neutrino tokens are allowed for swapping.") | |
450 | - | else cv("neutrino", cw) | |
485 | + | @Callable(cs) | |
486 | + | func constructorV2 (bb,bc,dn) = { | |
487 | + | let dm = cr(cs) | |
488 | + | if ((dm == dm)) | |
489 | + | then if ((size(cs.payments) != 0)) | |
490 | + | then throw("no payments allowed") | |
491 | + | else [StringEntry(J, bb), StringEntry(F, bc), IntegerEntry(ap(), dn)] | |
492 | + | else throw("Strict value is not equal to itself.") | |
451 | 493 | } | |
452 | 494 | ||
453 | 495 | ||
454 | 496 | ||
455 | - | @Callable(cw) | |
456 | - | func withdraw (cy,M,bO) = cF(cy, M, bO, unit, cw) | |
497 | + | @Callable(cs) | |
498 | + | func swapWavesToNeutrino () = if ((size(cs.payments) != 1)) | |
499 | + | then throw("swapWavesToNeutrino require only one payment") | |
500 | + | else { | |
501 | + | let do = value(cs.payments[0]) | |
502 | + | if (isDefined(do.assetId)) | |
503 | + | then throw("Only Waves token is allowed for swapping.") | |
504 | + | else { | |
505 | + | let ax = toString(cs.caller) | |
506 | + | let cE = toBase58String(cs.transactionId) | |
507 | + | let dp = r(invoke(this, "swapParamsByUserSYSREADONLY", [ax, 0], nil)) | |
508 | + | let dq = cB("waves", do.amount, ax, cE, dp) | |
509 | + | dq | |
510 | + | } | |
511 | + | } | |
457 | 512 | ||
458 | 513 | ||
459 | 514 | ||
460 | - | @Callable(cw) | |
461 | - | func withdrawRand (cy,M,bO,bV) = cF(cy, M, bO, bV, cw) | |
515 | + | @Callable(cs) | |
516 | + | func swapNeutrinoToWaves () = if ((size(cs.payments) != 1)) | |
517 | + | then throw("swapNeutrinoToWaves require only one payment") | |
518 | + | else { | |
519 | + | let do = value(cs.payments[0]) | |
520 | + | if ((do.assetId != aR)) | |
521 | + | then throw("Only appropriate Neutrino tokens are allowed for swapping.") | |
522 | + | else { | |
523 | + | let ax = toString(cs.caller) | |
524 | + | let cE = toBase58String(cs.transactionId) | |
525 | + | let dp = r(invoke(this, "swapParamsByUserSYSREADONLY", [ax, 0], nil)) | |
526 | + | let dq = cB("neutrino", do.amount, ax, cE, dp) | |
527 | + | dq | |
528 | + | } | |
529 | + | } | |
462 | 530 | ||
463 | 531 | ||
464 | 532 | ||
465 | - | @Callable(cw) | |
466 | - | func transferToAuction () = { | |
467 | - | let cO = (aP - assetBalance(addressFromStringValue(aC), aH)) | |
468 | - | let cP = (aQ - assetBalance(addressFromStringValue(aA), aB)) | |
469 | - | if (aF) | |
470 | - | then throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles") | |
471 | - | else if ((cO > (1 * l))) | |
472 | - | then [ScriptTransfer(addressFromStringValue(aC), cO, aH)] | |
473 | - | else if ((cP >= (1 * l))) | |
474 | - | then [ScriptTransfer(addressFromStringValue(aA), cP, aB)] | |
475 | - | else throw(((((((("bond were generated or do not need it. Deficit:" + toString(cO)) + "|") + toString(0)) + ". Surplus:") + toString(cP)) + "|") + toString(aQ))) | |
533 | + | @Callable(cs) | |
534 | + | func withdraw (cT,Y,ca) = if ((size(cs.payments) != 0)) | |
535 | + | then throw("no payments allowed") | |
536 | + | else { | |
537 | + | let dr = cS(cT, Y, ca, toBase58String(cs.transactionId)) | |
538 | + | let cZ = dr._1 | |
539 | + | let ds = dr._2 | |
540 | + | let dt = invoke(bc, "deposit", nil, [ds]) | |
541 | + | if ((dt == dt)) | |
542 | + | then cZ | |
543 | + | else throw("Strict value is not equal to itself.") | |
544 | + | } | |
545 | + | ||
546 | + | ||
547 | + | ||
548 | + | @Callable(cs) | |
549 | + | func transferToAuction () = if ((size(cs.payments) != 0)) | |
550 | + | then throw("no payments allowed") | |
551 | + | else { | |
552 | + | let du = j(invoke(bb, "calcNeutinoMetricsREADONLY", nil, nil)) | |
553 | + | let dv = p(du[3]) | |
554 | + | let dw = p(du[5]) | |
555 | + | let dx = p(du[6]) | |
556 | + | let dy = p(du[9]) | |
557 | + | let dz = (dw - assetBalance(addressFromStringValue(aS), aY)) | |
558 | + | let dA = (dx - assetBalance(addressFromStringValue(aP), aR)) | |
559 | + | if (aW) | |
560 | + | then throw("contract is blocked by EMERGENCY SHUTDOWN actions untill reactivation by emergency oracles") | |
561 | + | else if ((dz > (1 * w))) | |
562 | + | then [ScriptTransfer(addressFromStringValue(aS), dz, aY)] | |
563 | + | else if ((dA >= (1 * w))) | |
564 | + | then [ScriptTransfer(addressFromStringValue(aP), dA, aR)] | |
565 | + | else throw(((((((("bond were generated or do not need it. Deficit:" + toString(dz)) + "|") + toString(0)) + ". Surplus:") + toString(dA)) + "|") + toString(dx))) | |
566 | + | } | |
567 | + | ||
568 | + | ||
569 | + | ||
570 | + | @Callable(cs) | |
571 | + | func transferUsdnToUser (aB,dB) = if ((cs.caller != addressFromStringValue(aS))) | |
572 | + | then throw("Only auction contract is authorized") | |
573 | + | else [ScriptTransfer(addressFromStringValue(dB), aB, aR)] | |
574 | + | ||
575 | + | ||
576 | + | ||
577 | + | @Callable(cs) | |
578 | + | func acceptWaves () = if ((cs.caller != addressFromStringValue(aS))) | |
579 | + | then throw("Currently only auction contract is allowed to call") | |
580 | + | else $Tuple2(ct(0), "success") | |
581 | + | ||
582 | + | ||
583 | + | ||
584 | + | @Callable(cs) | |
585 | + | func swapParamsByUserSYSREADONLY (cD,dC) = { | |
586 | + | let dD = j(invoke(bc, "nsbtStakingSYSREADONLY", [cD], nil)) | |
587 | + | if ((dD == dD)) | |
588 | + | then { | |
589 | + | let dE = (p(dD[0]) + dC) | |
590 | + | let dF = (p(dD[1]) + dC) | |
591 | + | let cH = p(invoke(bb, "calcSwapLimitREADONLY", [dE], nil)) | |
592 | + | let dG = valueOrElse(getInteger(this, ay(cD)), 0) | |
593 | + | let dH = ar() | |
594 | + | let dI = (height - dG) | |
595 | + | let dJ = (dI >= dH) | |
596 | + | let cI = if (dJ) | |
597 | + | then 0 | |
598 | + | else valueOrElse(getInteger(this, aw(cD)), 0) | |
599 | + | let cJ = if (dJ) | |
600 | + | then 0 | |
601 | + | else (dH - dI) | |
602 | + | $Tuple2(nil, $Tuple5(cH, cI, cJ, dE, dF)) | |
603 | + | } | |
604 | + | else throw("Strict value is not equal to itself.") | |
476 | 605 | } | |
477 | 606 | ||
478 | 607 | ||
479 | - | ||
480 | - | @Callable(cw) | |
481 | - | func acceptWaves () = if ((cw.caller != addressFromStringValue(aC))) | |
482 | - | then throw("Currently only auction contract is allowed to call") | |
483 | - | else $Tuple2(cn(0), "success") | |
484 | - | ||
485 | - | ||
486 | - | @Verifier(aT) | |
487 | - | func cQ () = { | |
488 | - | let cR = toBase58String(aT.id) | |
489 | - | let cS = ((((if (sigVerify(aT.bodyBytes, aT.proofs[0], fromBase58String(i[0]))) | |
608 | + | @Verifier(bf) | |
609 | + | func dK () = { | |
610 | + | let dL = toBase58String(bf.id) | |
611 | + | let dM = ((((if (sigVerify(bf.bodyBytes, bf.proofs[0], fromBase58String(t[0]))) | |
490 | 612 | then 1 | |
491 | - | else 0) + (if (sigVerify( | |
613 | + | else 0) + (if (sigVerify(bf.bodyBytes, bf.proofs[1], fromBase58String(t[1]))) | |
492 | 614 | then 1 | |
493 | - | else 0)) + (if (sigVerify( | |
615 | + | else 0)) + (if (sigVerify(bf.bodyBytes, bf.proofs[2], fromBase58String(t[2]))) | |
494 | 616 | then 1 | |
495 | - | else 0)) + (if (sigVerify( | |
617 | + | else 0)) + (if (sigVerify(bf.bodyBytes, bf.proofs[3], fromBase58String(t[3]))) | |
496 | 618 | then 2 | |
497 | 619 | else 0)) | |
498 | - | let | |
499 | - | if ($isInstanceOf( | |
620 | + | let l = bf | |
621 | + | if ($isInstanceOf(l, "SponsorFeeTransaction")) | |
500 | 622 | then { | |
501 | - | let | |
502 | - | if ( | |
503 | - | then ( | |
623 | + | let dN = l | |
624 | + | if (be(dN)) | |
625 | + | then (dM >= 3) | |
504 | 626 | else false | |
505 | 627 | } | |
506 | - | else ( | |
628 | + | else (dM >= 3) | |
507 | 629 | } | |
508 | 630 |
github/deemru/w8io/6500d08 179.35 ms ◑