tx · DhMtx3H2y2LAeqHiaVwHyApA3YZLUWeZKymVZ6hsYW3a

3MxbR7b3gHF4XdQKNTT5aQMRiazHvrVWC8N:  -0.02000000 Waves

2021.01.13 16:51 [1351766] smart account 3MxbR7b3gHF4XdQKNTT5aQMRiazHvrVWC8N > SELF 0.00000000 Waves

{ "type": 13, "id": "DhMtx3H2y2LAeqHiaVwHyApA3YZLUWeZKymVZ6hsYW3a", "fee": 2000000, "feeAssetId": null, "timestamp": 1610545926887, "version": 1, "sender": "3MxbR7b3gHF4XdQKNTT5aQMRiazHvrVWC8N", "senderPublicKey": "4bj7YXaphTC4Ldx7DqqMmrTjNshRtw1yNsej2XXZcAzS", "proofs": [ "44hu84Gjnmo1u1ajWq6vaGhM6iTT73mtAAEaqGsamUb6AoVJXjQ5W7w4CQKJ4LujXvtZiH7n29MUZnSUqTiotXkS", "27bytvuNbBAMxCErnJiCJFpQk1qbX5x4QBfSpGUYmy4vNoSW9F9NU3sYG5DakYmHUDnViQS6bQzCPgFBYsx5viQd", "3aUXfHni2PuB5rabaSbXaEdYz9t4iQCYEv8ogNRKr4qxfZBqRsK5M39wFyqTMxs6JrfCoCy6mAKCA5TU1odirMeV" ], "script": "base64:AAIEAAAAAAAAABYIAhIAEgMKAQESBAoCAQgSAwoBCBIAAAAAQwEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkAAAAAAAAAAAABAAAADmdldFN0cmluZ0J5S2V5AAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AgAAAAABAAAAFmdldEJvb2xCeUFkZHJlc3NBbmRLZXkAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQcBAAAAGGdldFN0cmluZ0J5QWRkcmVzc0FuZEtleQAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AgAAAAABAAAAGGdldE51bWJlckJ5QWRkcmVzc0FuZEtleQAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AAAAAAAAAAAAAAAAAAdXQVZFTEVUAAAAAAAF9eEAAAAAAAVQQVVMSQAAAAAAAA9CQAAAAAAKUEFVTElTQ0FMRQAAAAAAAAAABgAAAAAIUFJJQ0VMRVQAAAAAAAAPQkAAAAAABE1VTFQAAAAAAAX14QAAAAAACU1VTFRTQ0FMRQAAAAAAAAAACAAAAAANTUlOT1JERVJUT1RBTAkAAGgAAAACAAAAAAAAAAAKBQAAAAdXQVZFTEVUAAAAAAZNQVhST0kAAAAAAAAAAF8AAAAACENBTkNFTEVEAgAAAAhjYW5jZWxlZAAAAAADTkVXAgAAAANuZXcAAAAABkZJTExFRAIAAAAGZmlsbGVkAAAAAAhQcmljZUtleQIAAAAFcHJpY2UAAAAADkJvbmRBc3NldElkS2V5AgAAAA1ib25kX2Fzc2V0X2lkAAAAABJOZXV0cmlub0Fzc2V0SWRLZXkCAAAAEW5ldXRyaW5vX2Fzc2V0X2lkAAAAABFCYWxhbmNlTG9ja2Vka0tleQIAAAANYmFsYW5jZV9sb2NrXwAAAAAVV2F2ZXNMb2NrZWRCYWxhbmNlS2V5CQABLAAAAAIFAAAAEUJhbGFuY2VMb2NrZWRrS2V5AgAAAAV3YXZlcwAAAAAYTmV1dHJpbm9Mb2NrZWRCYWxhbmNlS2V5CQABLAAAAAIFAAAAEUJhbGFuY2VMb2NrZWRrS2V5AgAAAAhuZXV0cmlubwAAAAANRmlyc3RPcmRlcktleQIAAAALb3JkZXJfZmlyc3QBAAAAEmdldFJvaUJ5T3JkZXJJZEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAABBkZWJ1Z19vcmRlcl9yb2lfBQAAAAdvcmRlcklkAQAAABBnZXRPcmRlclByaWNlS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAADG9yZGVyX3ByaWNlXwUAAAAHb3JkZXJJZAEAAAAQZ2V0T3JkZXJUb3RhbEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAAxvcmRlcl90b3RhbF8FAAAAB29yZGVySWQBAAAAEGdldE9yZGVyT3duZXJLZXkAAAABAAAAB29yZGVySWQJAAEsAAAAAgIAAAAMb3JkZXJfb3duZXJfBQAAAAdvcmRlcklkAQAAABFnZXRPcmRlckhlaWdodEtleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAA1vcmRlcl9oZWlnaHRfBQAAAAdvcmRlcklkAQAAABFnZXRPcmRlclN0YXR1c0tleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAA1vcmRlcl9zdGF0dXNfBQAAAAdvcmRlcklkAQAAABZnZXRPcmRlckZpbGxlZFRvdGFsS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAAE29yZGVyX2ZpbGxlZF90b3RhbF8FAAAAB29yZGVySWQBAAAAD2dldFByZXZPcmRlcktleQAAAAEAAAAHb3JkZXJJZAkAASwAAAACAgAAAAtvcmRlcl9wcmV2XwUAAAAHb3JkZXJJZAEAAAAPZ2V0TmV4dE9yZGVyS2V5AAAAAQAAAAdvcmRlcklkCQABLAAAAAICAAAAC29yZGVyX25leHRfBQAAAAdvcmRlcklkAQAAABZjb252ZXJ0TmV1dHJpbm9Ub1dhdmVzAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAABrAAAAAwkAAGsAAAADBQAAAAZhbW91bnQFAAAACFBSSUNFTEVUBQAAAAVwcmljZQUAAAAHV0FWRUxFVAUAAAAFUEFVTEkBAAAAFmNvbnZlcnRXYXZlc1RvTmV1dHJpbm8AAAACAAAABmFtb3VudAAAAAVwcmljZQkAAGsAAAADCQAAawAAAAMFAAAABmFtb3VudAUAAAAFcHJpY2UFAAAACFBSSUNFTEVUBQAAAAVQQVVMSQUAAAAHV0FWRUxFVAEAAAASY29udmVydFdhdmVzVG9Cb25kAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAQAAABZjb252ZXJ0V2F2ZXNUb05ldXRyaW5vAAAAAgUAAAAGYW1vdW50BQAAAAVwcmljZQEAAAASY29udmVydEJvbmRUb1dhdmVzAAAAAgAAAAZhbW91bnQAAAAFcHJpY2UJAQAAABZjb252ZXJ0TmV1dHJpbm9Ub1dhdmVzAAAAAgUAAAAGYW1vdW50BQAAAAVwcmljZQAAAAAQbmV1dHJpbm9Db250cmFjdAkBAAAAB0FkZHJlc3MAAAABAQAAABoBVHU7b6OlcTCIdohGSL8/NKL5nwWXL+YZyQAAAAAPY29udHJvbENvbnRyYWN0CQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUno2OAJeUn0PSjRqULfZsUfTQiLeRVcFDAAAAABNsaXF1aWRhdGlvbkNvbnRyYWN0CQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUrh+60NLfu2FBMSeZ0mudJuV2fLRxw6pzAAAAAA9uZXV0cmlub0Fzc2V0SWQBAAAAIA/yHBKs5MQ8muxGGqslqLDsugcrRsxtiHLwteKSSQG0AAAAAAtib25kQXNzZXRJZAEAAAAgmJo/x0eBXqqYBUsDVec3bkdYTgn3lisjb3dBcLTJiUgAAAAACWlzQmxvY2tlZAkBAAAAFmdldEJvb2xCeUFkZHJlc3NBbmRLZXkAAAACBQAAAA9jb250cm9sQ29udHJhY3QCAAAACmlzX2Jsb2NrZWQAAAAADGN1cnJlbnRQcmljZQkBAAAAGGdldE51bWJlckJ5QWRkcmVzc0FuZEtleQAAAAIFAAAAD2NvbnRyb2xDb250cmFjdAUAAAAIUHJpY2VLZXkAAAAAFW5ldXRyaW5vTG9ja2VkQmFsYW5jZQkBAAAAGGdldE51bWJlckJ5QWRkcmVzc0FuZEtleQAAAAIFAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAAGE5ldXRyaW5vTG9ja2VkQmFsYW5jZUtleQAAAAAHcmVzZXJ2ZQkAAGUAAAACCAkAA+8AAAABBQAAABBuZXV0cmlub0NvbnRyYWN0AAAAB3JlZ3VsYXIJAQAAABhnZXROdW1iZXJCeUFkZHJlc3NBbmRLZXkAAAACBQAAABBuZXV0cmlub0NvbnRyYWN0BQAAABVXYXZlc0xvY2tlZEJhbGFuY2VLZXkAAAAADnJlc2VydmVzSW5Vc2RuCQEAAAAWY29udmVydFdhdmVzVG9OZXV0cmlubwAAAAIFAAAAB3Jlc2VydmUFAAAADGN1cnJlbnRQcmljZQAAAAAObmV1dHJpbm9TdXBwbHkJAABlAAAAAgkAAGUAAAACCQAAZAAAAAIFAAAAFW5ldXRyaW5vTG9ja2VkQmFsYW5jZQgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAAPbmV1dHJpbm9Bc3NldElkAAAACHF1YW50aXR5CQAD8AAAAAIFAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAAD25ldXRyaW5vQXNzZXRJZAkAA/AAAAACBQAAABNsaXF1aWRhdGlvbkNvbnRyYWN0BQAAAA9uZXV0cmlub0Fzc2V0SWQAAAAAB2RlZmljaXQJAABlAAAAAgUAAAAObmV1dHJpbm9TdXBwbHkFAAAADnJlc2VydmVzSW5Vc2RuAAAAAA1jdXJyZW50TWF4Um9pCQAAawAAAAMFAAAAB2RlZmljaXQAAAAAAAAAAGQFAAAADm5ldXRyaW5vU3VwcGx5AAAAAA1jdXJyZW50QnJNdWx0CQAAawAAAAMFAAAADnJlc2VydmVzSW5Vc2RuBQAAAARNVUxUBQAAAA5uZXV0cmlub1N1cHBseQAAAAAKZmlyc3RPcmRlcgkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQUAAAANRmlyc3RPcmRlcktleQEAAAANZ2V0T3JkZXJQcmljZQAAAAEAAAACaWQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABBnZXRPcmRlclByaWNlS2V5AAAAAQUAAAACaWQBAAAADWdldE9yZGVyVG90YWwAAAABAAAAAmlkCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAQZ2V0T3JkZXJUb3RhbEtleQAAAAEFAAAAAmlkAQAAAA1nZXRPcmRlck93bmVyAAAAAQAAAAJpZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEGdldE9yZGVyT3duZXJLZXkAAAABBQAAAAJpZAEAAAAOZ2V0T3JkZXJTdGF0dXMAAAABAAAAAmlkCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAARZ2V0T3JkZXJTdGF0dXNLZXkAAAABBQAAAAJpZAEAAAATZ2V0T3JkZXJGaWxsZWRUb3RhbAAAAAEAAAACaWQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABZnZXRPcmRlckZpbGxlZFRvdGFsS2V5AAAAAQUAAAACaWQBAAAADGdldFByZXZPcmRlcgAAAAEAAAACaWQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAA9nZXRQcmV2T3JkZXJLZXkAAAABBQAAAAJpZAEAAAAMZ2V0TmV4dE9yZGVyAAAAAQAAAAJpZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAD2dldE5leHRPcmRlcktleQAAAAEFAAAAAmlkAQAAAA5nZXRQcmljZUZvclJvaQAAAAEAAAALcm9pUGVyY2VudHMJAABrAAAAAwkAAGQAAAACAAAAAAAAAABkBQAAAAtyb2lQZXJjZW50cwUAAAAMY3VycmVudFByaWNlAAAAAAAAAABkAQAAAA9nZXRSZXZlcnNlUHJpY2UAAAABAAAABXByaWNlCQAAaQAAAAIJAABoAAAAAgUAAAAIUFJJQ0VMRVQFAAAACFBSSUNFTEVUBQAAAAVwcmljZQEAAAAWY2FsY05zYnQyV2F2ZXNQcmljZVJhdwAAAAIAAAANc3BlbnRXYXZlc1JhdwAAAA9yZWNlaXZlZE5zYnRSYXcJAABrAAAAAwUAAAANc3BlbnRXYXZlc1JhdwkAAGgAAAACBQAAAAVQQVVMSQUAAAAIUFJJQ0VMRVQFAAAAD3JlY2VpdmVkTnNidFJhdwEAAAAJb3JkZXJEYXRhAAAABwAAAAdvcmRlcklkAAAADXRvdGFsV2F2ZWxldHMAAAAOZmlsbGVkV2F2ZWxldHMAAAAFb3duZXIAAAAGc3RhdHVzAAAAA3JvaQAAAAVwcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEGdldE9yZGVyUHJpY2VLZXkAAAABBQAAAAdvcmRlcklkBQAAAAVwcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEGdldE9yZGVyVG90YWxLZXkAAAABBQAAAAdvcmRlcklkBQAAAA10b3RhbFdhdmVsZXRzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAWZ2V0T3JkZXJGaWxsZWRUb3RhbEtleQAAAAEFAAAAB29yZGVySWQFAAAADmZpbGxlZFdhdmVsZXRzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBnZXRPcmRlck93bmVyS2V5AAAAAQUAAAAHb3JkZXJJZAUAAAAFb3duZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABFnZXRPcmRlckhlaWdodEtleQAAAAEFAAAAB29yZGVySWQFAAAABmhlaWdodAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAARZ2V0T3JkZXJTdGF0dXNLZXkAAAABBQAAAAdvcmRlcklkBQAAAAZzdGF0dXMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAZZGVidWdfb3JkZXJfY3VycmVudFByaWNlXwUAAAAHb3JkZXJJZAUAAAAMY3VycmVudFByaWNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAASZ2V0Um9pQnlPcmRlcklkS2V5AAAAAQUAAAAHb3JkZXJJZAUAAAADcm9pBQAAAANuaWwBAAAAEGludGVybmFsU2VsbEJvbmQAAAAIAAAAC3BGaXJzdE9yZGVyAAAACnBOZXh0T3JkZXIAAAAMcEZpbGxlZFRvdGFsAAAABHBSb2kAAAAGcFByaWNlAAAAEHBQYXltZW50V2F2ZWxldHMAAAARb3JkZXJPd25lckFkZHJlc3MAAAAMaW5zdGFudE9yZGVyBAAAABVwcmljZVdhdmVzQnlCb25kQ2VudHMJAQAAAA5nZXRQcmljZUZvclJvaQAAAAEFAAAABHBSb2kEAAAADXJlbWFpbmVkVG90YWwJAABlAAAAAgUAAAAQcFBheW1lbnRXYXZlbGV0cwUAAAAMcEZpbGxlZFRvdGFsBAAAABNmaWxsYWJsZU9yZGVyQW1vdW50CQEAAAASY29udmVydFdhdmVzVG9Cb25kAAAAAgUAAAANcmVtYWluZWRUb3RhbAUAAAAVcHJpY2VXYXZlc0J5Qm9uZENlbnRzBAAAABt0b3RhbE9yZGVyV2F2ZWxldGVzUmVxdWlyZWQJAQAAABJjb252ZXJ0Qm9uZFRvV2F2ZXMAAAACBQAAABNmaWxsYWJsZU9yZGVyQW1vdW50BQAAABVwcmljZVdhdmVzQnlCb25kQ2VudHMEAAAAFW5iVG9rZW5zU2VsbENvbmRpdGlvbgkAAGcAAAACBQAAAA1jdXJyZW50TWF4Um9pBQAAAARwUm9pAwkBAAAAASEAAAABBQAAABVuYlRva2Vuc1NlbGxDb25kaXRpb24JAAACAAAAAQkAASwAAAACAgAAABNpbm5hcHJvcHJpYXRlIHJvaTogCQABpAAAAAEFAAAABHBSb2kDCQAAAAAAAAIFAAAAG3RvdGFsT3JkZXJXYXZlbGV0ZXNSZXF1aXJlZAAAAAAAAAAAAAkAAAIAAAABAgAAAB9jYW5ub3QgZmlsbCBvcmRlciBhdCB0aGUgbW9tZW50BAAAAA5jaGFuZ2VXYXZlbGV0cwkAAGUAAAACBQAAAA1yZW1haW5lZFRvdGFsBQAAABt0b3RhbE9yZGVyV2F2ZWxldGVzUmVxdWlyZWQEAAAADHdyaXRlU2V0RGF0YQMFAAAADGluc3RhbnRPcmRlcgkBAAAACW9yZGVyRGF0YQAAAAcFAAAAC3BGaXJzdE9yZGVyBQAAABBwUGF5bWVudFdhdmVsZXRzCQAAZAAAAAIFAAAADHBGaWxsZWRUb3RhbAUAAAAbdG90YWxPcmRlcldhdmVsZXRlc1JlcXVpcmVkCQACWAAAAAEIBQAAABFvcmRlck93bmVyQWRkcmVzcwAAAAVieXRlcwUAAAAGRklMTEVEBQAAAARwUm9pBQAAAAxjdXJyZW50UHJpY2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABZnZXRPcmRlckZpbGxlZFRvdGFsS2V5AAAAAQUAAAALcEZpcnN0T3JkZXIJAABkAAAAAgUAAAAMcEZpbGxlZFRvdGFsBQAAABt0b3RhbE9yZGVyV2F2ZWxldGVzUmVxdWlyZWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEWdldE9yZGVyU3RhdHVzS2V5AAAAAQUAAAALcEZpcnN0T3JkZXIFAAAABkZJTExFRAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPZ2V0UHJldk9yZGVyS2V5AAAAAQUAAAAKcE5leHRPcmRlcgIAAAAACQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADUZpcnN0T3JkZXJLZXkFAAAACnBOZXh0T3JkZXIFAAAAA25pbAkABE4AAAACBQAAAAx3cml0ZVNldERhdGEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAARb3JkZXJPd25lckFkZHJlc3MFAAAAE2ZpbGxhYmxlT3JkZXJBbW91bnQFAAAAC2JvbmRBc3NldElkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAAG3RvdGFsT3JkZXJXYXZlbGV0ZXNSZXF1aXJlZAUAAAAEdW5pdAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAABFvcmRlck93bmVyQWRkcmVzcwUAAAAOY2hhbmdlV2F2ZWxldHMFAAAABHVuaXQFAAAAA25pbAEAAAAXaW50ZXJuYWxBZGRCdXlCb25kT3JkZXIAAAAFAAAAA3JvaQAAAAVwcmljZQAAAAlwcmV2T3JkZXIAAAADaW52AAAADGluc3RhbnRPcmRlcgQAAAADcG10CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAANpbnYAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAACm5ld09yZGVySWQJAAJYAAAAAQgFAAAAA2ludgAAAA10cmFuc2FjdGlvbklkAwUAAAAJaXNCbG9ja2VkCQAAAgAAAAECAAAAWWNvbnRyYWN0IGlzIGJsb2NrZWQgYnkgRU1FUkdFTkNZIFNIVVRET1dOIGFjdGlvbnMgdW50aWwgcmVhY3RpdmF0aW9uIGJ5IGVtZXJnZW5jeSBvcmFjbGVzAwkAAGYAAAACBQAAAA1NSU5PUkRFUlRPVEFMCAUAAAADcG10AAAABmFtb3VudAkAAAIAAAABCQABLAAAAAICAAAAF21pbiBvcmRlciB0b3RhbCBlcXVhbHMgCQABpAAAAAEFAAAADU1JTk9SREVSVE9UQUwDCQAAZgAAAAIFAAAAA3JvaQUAAAAGTUFYUk9JCQAAAgAAAAECAAAAF21heCBzZXRPcmRlciBST0kgaXMgOTUlAwkAAGYAAAACAAAAAAAAAAAABQAAAANyb2kJAAACAAAAAQIAAAAjY2FuJ3QgcGxhY2Ugb3JkZXIgd2l0aCBuZWdhdGl2ZSByb2kDCQAAAAAAAAIFAAAAA3JvaQAAAAAAAAAAAAkAAAIAAAABAgAAABxyb2kgc2hvdWxkIG5vdCBiZSBlcXVhbCB0byAwAwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAkAAAIAAAABAgAAABJjYW4gdXNlIHdhdmVzIG9ubHkDCQEAAAACIT0AAAACCQEAAAANZ2V0T3JkZXJPd25lcgAAAAEFAAAACm5ld09yZGVySWQCAAAAAAkAAAIAAAABAgAAAAxvcmRlciBleGlzdHMDAwkBAAAAAiE9AAAAAgUAAAAJcHJldk9yZGVyAgAAAAAJAQAAAAIhPQAAAAIJAQAAAA5nZXRPcmRlclN0YXR1cwAAAAEFAAAACXByZXZPcmRlcgUAAAADTkVXBwkAAAIAAAABAgAAABxwcmV2IG9yZGVyIHN0YXR1cyBpcyBub3QgbmV3BAAAABlpc05ld09yZGVyQXRGaXJzdFBvc2l0aW9uCQAAAAAAAAIFAAAACXByZXZPcmRlcgIAAAAABAAAAAVvd25lcgkABCUAAAABCAUAAAADaW52AAAABmNhbGxlcgQAAAAJbmV4dE9yZGVyAwUAAAAZaXNOZXdPcmRlckF0Rmlyc3RQb3NpdGlvbgUAAAAKZmlyc3RPcmRlcgkBAAAADGdldE5leHRPcmRlcgAAAAEFAAAACXByZXZPcmRlcgQAAAAMbmV4dE9yZGVyUm9pCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAASZ2V0Um9pQnlPcmRlcklkS2V5AAAAAQUAAAAJbmV4dE9yZGVyBAAAABBpc05leHRPcmRlckVycm9yAwMJAQAAAAIhPQAAAAIFAAAACW5leHRPcmRlcgIAAAAACQAAZwAAAAIFAAAAA3JvaQUAAAAMbmV4dE9yZGVyUm9pBwYHBAAAAAxwcmV2T3JkZXJSb2kJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABJnZXRSb2lCeU9yZGVySWRLZXkAAAABBQAAAAlwcmV2T3JkZXIEAAAAEGlzUHJldk9yZGVyRXJyb3IDAwkBAAAAAiE9AAAAAgUAAAAJcHJldk9yZGVyAgAAAAAJAABmAAAAAgUAAAAMcHJldk9yZGVyUm9pBQAAAANyb2kHBgcDAwUAAAAQaXNOZXh0T3JkZXJFcnJvcgYFAAAAEGlzUHJldk9yZGVyRXJyb3IJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAfaW52YWxpZCBvcmRlciBpc1ByZXZPcmRlckVycm9yOgkAAaUAAAABBQAAABBpc1ByZXZPcmRlckVycm9yAgAAABIgaXNOZXh0T3JkZXJFcnJvcjoJAAGlAAAAAQUAAAAQaXNOZXh0T3JkZXJFcnJvcgMDBQAAABlpc05ld09yZGVyQXRGaXJzdFBvc2l0aW9uCQAAZwAAAAIFAAAADWN1cnJlbnRNYXhSb2kFAAAAA3JvaQcJAQAAABBpbnRlcm5hbFNlbGxCb25kAAAACAUAAAAKbmV3T3JkZXJJZAUAAAAJbmV4dE9yZGVyAAAAAAAAAAAABQAAAANyb2kFAAAABXByaWNlCAUAAAADcG10AAAABmFtb3VudAgFAAAAA2ludgAAAAZjYWxsZXIGAwUAAAAMaW5zdGFudE9yZGVyCQAAAgAAAAECAAAAMkluc3RhbnQgb3JkZXIgY291bGRuJ3QgYmUgYWRkZWQgaW50byB3YWl0aW5nIHF1ZXVlCQAETgAAAAIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAD2dldFByZXZPcmRlcktleQAAAAEFAAAACm5ld09yZGVySWQFAAAACXByZXZPcmRlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPZ2V0TmV4dE9yZGVyS2V5AAAAAQUAAAAKbmV3T3JkZXJJZAUAAAAJbmV4dE9yZGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA9nZXROZXh0T3JkZXJLZXkAAAABBQAAAAlwcmV2T3JkZXIDCQAAAAAAAAIFAAAACXByZXZPcmRlcgIAAAAAAgAAAAAFAAAACm5ld09yZGVySWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAD2dldFByZXZPcmRlcktleQAAAAEFAAAACW5leHRPcmRlcgMJAAAAAAAAAgUAAAAJbmV4dE9yZGVyAgAAAAACAAAAAAUAAAAKbmV3T3JkZXJJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA1GaXJzdE9yZGVyS2V5AwMJAAAAAAAAAgUAAAAKZmlyc3RPcmRlcgIAAAAABgkAAAAAAAACBQAAAApmaXJzdE9yZGVyBQAAAAluZXh0T3JkZXIFAAAACm5ld09yZGVySWQFAAAACmZpcnN0T3JkZXIFAAAAA25pbAkBAAAACW9yZGVyRGF0YQAAAAcFAAAACm5ld09yZGVySWQIBQAAAANwbXQAAAAGYW1vdW50AAAAAAAAAAAABQAAAAVvd25lcgUAAAADTkVXBQAAAANyb2kFAAAABXByaWNlAQAAAA1jdXJ2ZUZ1bmN0aW9uAAAABgAAAAR3UmF3AAAABHVSYXcAAAAFcHJpY2UAAAAEbVJhdwAAAARzUmF3AAAAC3dhdmVzUGF5UmF3BAAAAANFWFAAAAAAABAzxIQEAAAAAWEJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwIAAAAQbnNidEN1cnZlUGFyYW1fYQAAAAAAAAAAAwQAAAAFcGF1bEIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwIAAAAQbnNidEN1cnZlUGFyYW1fYgkAAGkAAAACCQAAaAAAAAIAAAAAAAAAAAMFAAAABVBBVUxJAAAAAAAAAAAKBAAAAA93UmVzZXJ2ZXNJblVzZG4JAQAAABZjb252ZXJ0V2F2ZXNUb05ldXRyaW5vAAAAAgUAAAAEd1JhdwUAAAAFcHJpY2UEAAAABm11bHRCUgkAAGsAAAADBQAAAA93UmVzZXJ2ZXNJblVzZG4FAAAABE1VTFQFAAAABHVSYXcEAAAACW11bHRQb3dlcgkAAGgAAAACBQAAAAFhCQAAZQAAAAIFAAAABm11bHRCUgkAAGgAAAACAAAAAAAAAAABBQAAAARNVUxUBAAAAA5tdWx0RXhwSW5Qb3dlcgkAAGwAAAAGBQAAAANFWFAFAAAACU1VTFRTQ0FMRQUAAAAJbXVsdFBvd2VyBQAAAAlNVUxUU0NBTEUFAAAACU1VTFRTQ0FMRQUAAAAERE9XTgQAAAAFbXVsdEsJAABrAAAAAwUAAAAFcGF1bEIFAAAADm11bHRFeHBJblBvd2VyBQAAAAVQQVVMSQQAAAAHdXNkblBheQkBAAAAFmNvbnZlcnRXYXZlc1RvTmV1dHJpbm8AAAACBQAAAAt3YXZlc1BheVJhdwUAAAAFcHJpY2UEAAAACm11bHRTdGVwTTEJAABrAAAAAwUAAAAFbXVsdEsFAAAABG1SYXcFAAAABVBBVUxJBAAAAAltdWx0U3RlcDIJAABrAAAAAwUAAAAKbXVsdFN0ZXBNMQUAAAAFUEFVTEkJAABlAAAAAgUAAAAEbVJhdwUAAAAEc1JhdwQAAAAKbXVsdFN0ZXBNMwkAAGQAAAACCQAAawAAAAMFAAAAB3VzZG5QYXkFAAAABE1VTFQFAAAABVBBVUxJCQAAawAAAAMFAAAACW11bHRTdGVwMgUAAAAEbVJhdwUAAAAFUEFVTEkEAAAACW11bHRTdGVwNAkAAGsAAAADBQAAAAptdWx0U3RlcE0xBQAAAARNVUxUBQAAAAptdWx0U3RlcE0zBAAAAAZzdGVwTTUJAABrAAAAAwUAAAAJbXVsdFN0ZXA0BQAAAARtUmF3BQAAAARNVUxUBAAAAA1uc2J0QW1vdW50UmF3CQAAZQAAAAIJAABlAAAAAgUAAAAEbVJhdwUAAAAEc1JhdwUAAAAGc3RlcE01CQAETAAAAAIFAAAADW5zYnRBbW91bnRSYXcJAARMAAAAAgUAAAAHdXNkblBheQkABEwAAAACBQAAAAR3UmF3CQAETAAAAAIFAAAABHVSYXcJAARMAAAAAgUAAAAEbVJhdwkABEwAAAACBQAAAARzUmF3CQAETAAAAAIFAAAAAWEJAARMAAAAAgUAAAAFcGF1bEIJAARMAAAAAgUAAAAPd1Jlc2VydmVzSW5Vc2RuCQAETAAAAAIFAAAABXByaWNlCQAETAAAAAIFAAAABm11bHRCUgkABEwAAAACBQAAAAltdWx0UG93ZXIJAARMAAAAAgUAAAAObXVsdEV4cEluUG93ZXIJAARMAAAAAgUAAAAFbXVsdEsJAARMAAAAAgUAAAAKbXVsdFN0ZXBNMQkABEwAAAACBQAAAAltdWx0U3RlcDIJAARMAAAAAgUAAAAKbXVsdFN0ZXBNMwkABEwAAAACBQAAAAltdWx0U3RlcDQJAARMAAAAAgUAAAAGc3RlcE01BQAAAANuaWwBAAAABXRvU3RyAAAAAgAAAARuYW1lAAAAC2N1cnZlUmVzdWx0CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARuYW1lAgAAAA9bbnNidEFtb3VudFJhdz0JAAGkAAAAAQkAAZEAAAACBQAAAAtjdXJ2ZVJlc3VsdAAAAAAAAAAAAAIAAAANIHVzZG5QYXltZW50PQkAAaQAAAABCQABkQAAAAIFAAAAC2N1cnZlUmVzdWx0AAAAAAAAAAABAgAAAAYgd1Jhdz0JAAGkAAAAAQkAAZEAAAACBQAAAAtjdXJ2ZVJlc3VsdAAAAAAAAAAAAgIAAAAGIHVSYXc9CQABpAAAAAEJAAGRAAAAAgUAAAALY3VydmVSZXN1bHQAAAAAAAAAAAMCAAAABiBtUmF3PQkAAaQAAAABCQABkQAAAAIFAAAAC2N1cnZlUmVzdWx0AAAAAAAAAAAEAgAAAAYgc1Jhdz0JAAGkAAAAAQkAAZEAAAACBQAAAAtjdXJ2ZVJlc3VsdAAAAAAAAAAABQIAAAASIG5zYnRDdXJ2ZVBhcmFtX2E9CQABpAAAAAEJAAGRAAAAAgUAAAALY3VydmVSZXN1bHQAAAAAAAAAAAYCAAAAEiBuc2J0Q3VydmVQYXJhbV9iPQkAAaQAAAABCQABkQAAAAIFAAAAC2N1cnZlUmVzdWx0AAAAAAAAAAAHAgAAABEgd1Jlc2VydmVzSW5Vc2RuPQkAAaQAAAABCQABkQAAAAIFAAAAC2N1cnZlUmVzdWx0AAAAAAAAAAAIAgAAAAcgcHJpY2U9CQABpAAAAAEJAAGRAAAAAgUAAAALY3VydmVSZXN1bHQAAAAAAAAAAAkCAAAACCBtdWx0QlI9CQABpAAAAAEJAAGRAAAAAgUAAAALY3VydmVSZXN1bHQAAAAAAAAAAAoCAAAACyBtdWx0UG93ZXI9CQABpAAAAAEJAAGRAAAAAgUAAAALY3VydmVSZXN1bHQAAAAAAAAAAAsCAAAAECBtdWx0RXhwSW5Qb3dlcj0JAAGkAAAAAQkAAZEAAAACBQAAAAtjdXJ2ZVJlc3VsdAAAAAAAAAAADAIAAAAHIG11bHRLPQkAAaQAAAABCQABkQAAAAIFAAAAC2N1cnZlUmVzdWx0AAAAAAAAAAANAgAAAAwgbXVsdFN0ZXBNMT0JAAGkAAAAAQkAAZEAAAACBQAAAAtjdXJ2ZVJlc3VsdAAAAAAAAAAADgIAAAALIG11bHRTdGVwMj0JAAGkAAAAAQkAAZEAAAACBQAAAAtjdXJ2ZVJlc3VsdAAAAAAAAAAADwIAAAAMIG11bHRTdGVwTTM9CQABpAAAAAEJAAGRAAAAAgUAAAALY3VydmVSZXN1bHQAAAAAAAAAABACAAAACyBtdWx0U3RlcDQ9CQABpAAAAAEJAAGRAAAAAgUAAAALY3VydmVSZXN1bHQAAAAAAAAAABECAAAACCBzdGVwTTU9CQABpAAAAAEJAAGRAAAAAgUAAAALY3VydmVSZXN1bHQAAAAAAAAAABICAAAAAV0BAAAADWJpZ0NvbXBsZXhpdHkAAAABAAAAAWkDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCQAD7gAAAAEJAAJZAAAAAQIAAAAsUGRMdzVKSzVwcGZTRXF2bUZKdmNoZWpvckFremQ0QnJXTHZvRnd2TUd1NWsJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACxhZEx3NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACxzZEx3NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACxkZEx3NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACxmZEx3NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACxnZEx3NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACxoZEx3NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACxqZEx3NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACxrZEx3NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACxyZEx3NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACx0ZExxNUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACx0ZEx5NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACx0ZEx1NUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACx0ZExoNUpLZHBxZlNFcXZtRkp2Y2hlam9yQWt6ZDRCcldMdm9Gd3ZNR3U1awcJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEJAAPuAAAAAQkAAlkAAAABAgAAACsxZEw0SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkAA+4AAAABCQACWQAAAAECAAAALDJkTDI1SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkAA+4AAAABCQACWQAAAAECAAAALDNkTDk1SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkAA+4AAAABCQACWQAAAAECAAAALDRkTDk1SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkAA+4AAAABCQACWQAAAAECAAAALDVkTDk1SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkAA+4AAAABCQACWQAAAAECAAAALDZkTDk1SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkAA+4AAAABCQACWQAAAAECAAAALDdkTDk1SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkAA+4AAAABCQACWQAAAAECAAAALDhkTDk1SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkAA+4AAAABCQACWQAAAAECAAAALDkxTDk1SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkAA+4AAAABCQACWQAAAAECAAAALDkyTDk1SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkAA+4AAAABCQACWQAAAAECAAAALDkzTDk1SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkAA+4AAAABCQACWQAAAAECAAAALDk0TDk1SktkcHFmU0Vxdm1GSnZjaGVqb3JBa3pkNEJyV0x2b0Z3dk1HdTVrBwAAAAUAAAABaQEAAAAQYnV5TnNidEluU3VycGx1cwAAAAAEAAAAA3BtdAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAJcG10QW1vdW50CAUAAAADcG10AAAABmFtb3VudAQAAAAId2F2ZXNQYXkFAAAACXBtdEFtb3VudAQAAAAMb3duZXJBZGRyZXNzCAUAAAABaQAAAAZjYWxsZXIDBQAAAAlpc0Jsb2NrZWQJAAACAAAAAQIAAABZY29udHJhY3QgaXMgYmxvY2tlZCBieSBFTUVSR0VOQ1kgU0hVVERPV04gYWN0aW9ucyB1bnRpbCByZWFjdGl2YXRpb24gYnkgZW1lcmdlbmN5IG9yYWNsZXMDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkCQAAAgAAAAECAAAAEmNhbiB1c2Ugd2F2ZXMgb25seQMJAABmAAAAAgkAAGgAAAACAAAAAAAAAAAKBQAAAAdXQVZFTEVUBQAAAAlwbXRBbW91bnQJAAACAAAAAQIAAAAVbWluIDEwIHdhdmVzIGV4cGVjdGVkBAAAAAppc3N1ZWROc2J0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMCAAAAEHRtcF9pc3N1ZWROc2J0XzIAAAAAAAAAAAAEAAAAB25zYnRNYXgJAABoAAAAAgkAAGgAAAACAAAAAAAAAAsiAAAAAAAAAAPoBQAAAAVQQVVMSQQAAAALbnNidEN1cnJlbnQJAABkAAAAAgkAAGgAAAACCQAAaAAAAAIAAAAAAAAABzoAAAAAAAAAA+gFAAAABVBBVUxJBQAAAAppc3N1ZWROc2J0BAAAAAtjdXJ2ZVJlc3VsdAkBAAAADWN1cnZlRnVuY3Rpb24AAAAGBQAAAAdyZXNlcnZlBQAAAA5uZXV0cmlub1N1cHBseQUAAAAMY3VycmVudFByaWNlBQAAAAduc2J0TWF4BQAAAAtuc2J0Q3VycmVudAUAAAAId2F2ZXNQYXkEAAAACm5zYnRBbW91bnQJAAGRAAAAAgUAAAALY3VydmVSZXN1bHQAAAAAAAAAAAAEAAAAEm5zYnQyV2F2ZXNQcmljZVJhdwkBAAAAFmNhbGNOc2J0MldhdmVzUHJpY2VSYXcAAAACBQAAAAh3YXZlc1BheQUAAAAKbnNidEFtb3VudAQAAAADcm9pCQAAZQAAAAIJAABrAAAAAwkBAAAAD2dldFJldmVyc2VQcmljZQAAAAEFAAAAEm5zYnQyV2F2ZXNQcmljZVJhdwAAAAAAAAAAZAUAAAAMY3VycmVudFByaWNlAAAAAAAAAABkCQAETgAAAAIJAQAAAAlvcmRlckRhdGEAAAAHCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAACXBtdEFtb3VudAUAAAAJcG10QW1vdW50CQAEJQAAAAEFAAAADG93bmVyQWRkcmVzcwUAAAAGRklMTEVEBQAAAANyb2kFAAAAEm5zYnQyV2F2ZXNQcmljZVJhdwkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAxvd25lckFkZHJlc3MFAAAACm5zYnRBbW91bnQFAAAAC2JvbmRBc3NldElkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAACHdhdmVzUGF5BQAAAAR1bml0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAAEWRlYnVnX2N1cnZlUmVzdWx0CQEAAAAFdG9TdHIAAAACAgAAAAtjdXJ2ZVJlc3VsdAUAAAALY3VydmVSZXN1bHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEHRtcF9pc3N1ZWROc2J0XzIJAABkAAAAAgUAAAAKaXNzdWVkTnNidAUAAAAKbnNidEFtb3VudAUAAAADbmlsAAAAAWkBAAAAFGluc3RhbnRCdXlOc2J0T3JGYWlsAAAAAQAAAA1ub0xlc3NUaGVuUm9pBAAAAANwbXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAAA3JvaQUAAAANY3VycmVudE1heFJvaQMJAABmAAAAAgUAAAANbm9MZXNzVGhlblJvaQUAAAADcm9pCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAD0N1cnJlbnQgbWF4Um9pPQkAAaQAAAABBQAAAANyb2kCAAAALSBpcyBsZXNzIHRoZW4gcGFzc2VkIHBhcmFtZXRlciBub0xlc3NUaGVuUm9pPQkAAaQAAAABBQAAAA1ub0xlc3NUaGVuUm9pBAAAABVwcmljZVdhdmVzQnlCb25kQ2VudHMJAQAAAA5nZXRQcmljZUZvclJvaQAAAAEFAAAAA3JvaQkBAAAAF2ludGVybmFsQWRkQnV5Qm9uZE9yZGVyAAAABQUAAAADcm9pCQEAAAAPZ2V0UmV2ZXJzZVByaWNlAAAAAQUAAAAVcHJpY2VXYXZlc0J5Qm9uZENlbnRzAgAAAAAFAAAAAWkGAAAAAWkBAAAAD2FkZEJ1eUJvbmRPcmRlcgAAAAIAAAAFcHJpY2UAAAAJcHJldk9yZGVyBAAAAANwbXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAAFXByaWNlV2F2ZXNCeUJvbmRDZW50cwkBAAAAD2dldFJldmVyc2VQcmljZQAAAAEFAAAABXByaWNlAwkAAGcAAAACAAAAAAAAAAAABQAAAAVwcmljZQkAAAIAAAABAgAAAA9wcmljZSBsZXNzIHplcm8JAQAAABdpbnRlcm5hbEFkZEJ1eUJvbmRPcmRlcgAAAAUJAABrAAAAAwkAAGUAAAACBQAAABVwcmljZVdhdmVzQnlCb25kQ2VudHMFAAAADGN1cnJlbnRQcmljZQAAAAAAAAAAZAUAAAAMY3VycmVudFByaWNlBQAAAAVwcmljZQUAAAAJcHJldk9yZGVyBQAAAAFpBwAAAAFpAQAAAAtjYW5jZWxPcmRlcgAAAAEAAAAHb3JkZXJJZAQAAAAFb3duZXIJAQAAAA1nZXRPcmRlck93bmVyAAAAAQUAAAAHb3JkZXJJZAQAAAAGYW1vdW50CQAAZQAAAAIJAQAAAA1nZXRPcmRlclRvdGFsAAAAAQUAAAAHb3JkZXJJZAkBAAAAE2dldE9yZGVyRmlsbGVkVG90YWwAAAABBQAAAAdvcmRlcklkBAAAAAZjYWxsZXIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAluZXh0T3JkZXIJAQAAAAxnZXROZXh0T3JkZXIAAAABBQAAAAdvcmRlcklkBAAAAAlwcmV2T3JkZXIJAQAAAAxnZXRQcmV2T3JkZXIAAAABBQAAAAdvcmRlcklkAwUAAAAJaXNCbG9ja2VkCQAAAgAAAAECAAAAWWNvbnRyYWN0IGlzIGJsb2NrZWQgYnkgRU1FUkdFTkNZIFNIVVRET1dOIGFjdGlvbnMgdW50aWwgcmVhY3RpdmF0aW9uIGJ5IGVtZXJnZW5jeSBvcmFjbGVzAwkBAAAAAiE9AAAAAgUAAAAFb3duZXIFAAAABmNhbGxlcgkAAAIAAAABAgAAABFwZXJtaXNzaW9uIGRlbmllZAMJAQAAAAIhPQAAAAIJAQAAAA5nZXRPcmRlclN0YXR1cwAAAAEFAAAAB29yZGVySWQFAAAAA05FVwkAAAIAAAABAgAAABRpbnZhbGlkIG9yZGVyIHN0YXR1cwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA1GaXJzdE9yZGVyS2V5AwkAAAAAAAACBQAAAApmaXJzdE9yZGVyBQAAAAdvcmRlcklkBQAAAAluZXh0T3JkZXIFAAAACmZpcnN0T3JkZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAD2dldE5leHRPcmRlcktleQAAAAEFAAAACXByZXZPcmRlcgUAAAAJbmV4dE9yZGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA9nZXRQcmV2T3JkZXJLZXkAAAABBQAAAAluZXh0T3JkZXIFAAAACXByZXZPcmRlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAARZ2V0T3JkZXJTdGF0dXNLZXkAAAABBQAAAAdvcmRlcklkBQAAAAhDQU5DRUxFRAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAABmFtb3VudAUAAAAEdW5pdAUAAAADbmlsAAAAAWkBAAAACHNlbGxCb25kAAAAAAMFAAAACWlzQmxvY2tlZAkAAAIAAAABAgAAAFljb250cmFjdCBpcyBibG9ja2VkIGJ5IEVNRVJHRU5DWSBTSFVURE9XTiBhY3Rpb25zIHVudGlsIHJlYWN0aXZhdGlvbiBieSBlbWVyZ2VuY3kgb3JhY2xlcwMJAAAAAAAAAgUAAAAKZmlyc3RPcmRlcgIAAAAACQAAAgAAAAECAAAAD2VtcHR5IG9yZGVyYm9vawQAAAAJbmV4dE9yZGVyCQEAAAAMZ2V0TmV4dE9yZGVyAAAAAQUAAAAKZmlyc3RPcmRlcgQAAAALZmlsbGVkVG90YWwJAQAAABNnZXRPcmRlckZpbGxlZFRvdGFsAAAAAQUAAAAKZmlyc3RPcmRlcgQAAAAKb3JkZXJQcmljZQkBAAAADWdldE9yZGVyUHJpY2UAAAABBQAAAApmaXJzdE9yZGVyBAAAAANyb2kJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABJnZXRSb2lCeU9yZGVySWRLZXkAAAABBQAAAApmaXJzdE9yZGVyBAAAAA9wYXltZW50V2F2ZWxldHMJAQAAAA1nZXRPcmRlclRvdGFsAAAAAQUAAAAKZmlyc3RPcmRlcgQAAAARb3JkZXJPd25lckFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAANZ2V0T3JkZXJPd25lcgAAAAEFAAAACmZpcnN0T3JkZXIJAQAAABBpbnRlcm5hbFNlbGxCb25kAAAACAUAAAAKZmlyc3RPcmRlcgUAAAAJbmV4dE9yZGVyBQAAAAtmaWxsZWRUb3RhbAUAAAADcm9pBQAAAApvcmRlclByaWNlBQAAAA9wYXltZW50V2F2ZWxldHMFAAAAEW9yZGVyT3duZXJBZGRyZXNzBwAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAEHB1YktleUFkbWluc0xpc3QJAARMAAAAAgIAAAAsR1h4bVphQ2lnUGdKc1Q2ZDFjTHI4blVYQTY1bkdYOFY3RnVBenpyWTh3UUUJAARMAAAAAgIAAAAsM3h1bXg0aHJQcGVlb283OUhMR2JaQ2dmejk1TDM5WkZkeHh3V2VTVUMyUHUJAARMAAAAAgIAAAAsRDRDcXRLNWZCc256Um8zM1pNaHJNN25pTHNlREgydVJvSzZ3ZUJxMkpRM0EJAARMAAAAAgIAAAAsNVdSWEZTandjVGJOZktjSnM4WnFYbVNTV1lzU1ZKVXRNdk1xWmo1aEg0TmMFAAAAA25pbAQAAAAFY291bnQJAABkAAAAAgkAAGQAAAACCQAAZAAAAAIDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAkAAlkAAAABCQABkQAAAAIFAAAAEHB1YktleUFkbWluc0xpc3QAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAADCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQkAAlkAAAABCQABkQAAAAIFAAAAEHB1YktleUFkbWluc0xpc3QAAAAAAAAAAAEAAAAAAAAAAAEAAAAAAAAAAAADCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAgkAAlkAAAABCQABkQAAAAIFAAAAEHB1YktleUFkbWluc0xpc3QAAAAAAAAAAAIAAAAAAAAAAAEAAAAAAAAAAAADCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAwkAAlkAAAABCQABkQAAAAIFAAAAEHB1YktleUFkbWluc0xpc3QAAAAAAAAAAAMAAAAAAAAAAAIAAAAAAAAAAAAJAABnAAAAAgUAAAAFY291bnQAAAAAAAAAAAOEicrs", "chainId": 84, "height": 1351766, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2ouMhj8ivPh81KrkUmZgL4kB7fTEiErURkQn1vkfTRo3 Next: CMZRDuE8nV6x3S1DPMn2VF8oYNFuyvRwY7USwytKyZdy Diff:
OldNewDifferences
239239 func aZ (ba,bb,L,bc,bd,be) = {
240240 let bf = 271828100
241241 let bg = valueOrElse(getInteger(this, "nsbtCurveParam_a"), 3)
242- let bh = M(ba, L)
243- let bi = fraction(bh, l, bb)
244- let bj = (bg * (bi - (1 * l)))
245- let bk = pow(bf, m, bj, m, m, DOWN)
246- let bl = log(((bc - bd) - be), j, bf, m, m, DOWN)
247- let bm = log((bc - bd), j, bf, m, m, DOWN)
248- let bn = (bm - bl)
249- let bo = fraction(bc, bn, l)
250- let bp = fraction(bk, bo, l)
251- let bq = J(bp, L)
252-[bq, bp, ba, bb, bc, bd, be, bg, bh, bi, bj, bk, bm, bl, bn, bo]
242+ let bh = valueOrElse(getInteger(this, "nsbtCurveParam_b"), ((3 * i) / 10))
243+ let bi = M(ba, L)
244+ let bj = fraction(bi, l, bb)
245+ let bk = (bg * (bj - (1 * l)))
246+ let bl = pow(bf, m, bk, m, m, DOWN)
247+ let bm = fraction(bh, bl, i)
248+ let bn = M(be, L)
249+ let bo = fraction(bm, bc, i)
250+ let bp = fraction(bo, i, (bc - bd))
251+ let bq = (fraction(bn, l, i) + fraction(bp, bc, i))
252+ let br = fraction(bo, l, bq)
253+ let bs = fraction(br, bc, l)
254+ let bt = ((bc - bd) - bs)
255+[bt, bn, ba, bb, bc, bd, bg, bh, bi, L, bj, bk, bl, bm, bo, bp, bq, br, bs]
253256 }
254257
255258
256-func br (bs,bt) = (((((((((((((((((((((((((((((((((bs + "[wavesPayment=") + toString(bt[0])) + " usdnPayment=") + toString(bt[1])) + " wRaw=") + toString(bt[2])) + " uRaw=") + toString(bt[3])) + " mRaw=") + toString(bt[4])) + " sRaw=") + toString(bt[5])) + " nRaw=") + toString(bt[6])) + " nsbtCurveParamA=") + toString(bt[7])) + " wReservesInUsdn=") + toString(bt[8])) + " brMult=") + toString(bt[9])) + " powerMult=") + toString(bt[10])) + " expInPowerMult=") + toString(bt[11])) + " lnRes0=") + toString(bt[12])) + " lnRes1=") + toString(bt[13])) + " lnDiffMult=") + toString(bt[14])) + " maxXlndiff=") + toString(bt[15])) + "]")
259+func bu (bv,bw) = (((((((((((((((((((((((((((((((((((((((bv + "[nsbtAmountRaw=") + toString(bw[0])) + " usdnPayment=") + toString(bw[1])) + " wRaw=") + toString(bw[2])) + " uRaw=") + toString(bw[3])) + " mRaw=") + toString(bw[4])) + " sRaw=") + toString(bw[5])) + " nsbtCurveParam_a=") + toString(bw[6])) + " nsbtCurveParam_b=") + toString(bw[7])) + " wReservesInUsdn=") + toString(bw[8])) + " price=") + toString(bw[9])) + " multBR=") + toString(bw[10])) + " multPower=") + toString(bw[11])) + " multExpInPower=") + toString(bw[12])) + " multK=") + toString(bw[13])) + " multStepM1=") + toString(bw[14])) + " multStep2=") + toString(bw[15])) + " multStepM3=") + toString(bw[16])) + " multStep4=") + toString(bw[17])) + " stepM5=") + toString(bw[18])) + "]")
257260
258261
259-func bu (bv) = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (!(isDefined(transferTransactionById(fromBase58String("PdLw5JK5ppfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k")))))
262+func bx (by) = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (!(isDefined(transferTransactionById(fromBase58String("PdLw5JK5ppfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k")))))
260263 then !(isDefined(transferTransactionById(fromBase58String("adLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
261264 else false)
262265 then !(isDefined(transferTransactionById(fromBase58String("sdLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
309312 else false
310313
311314
312-@Callable(bv)
313-func buyNsbtInSurplus (bw) = {
314- let aR = value(bv.payments[0])
315- let bx = aR.amount
316- let by = bv.caller
315+@Callable(by)
316+func buyNsbtInSurplus () = {
317+ let aR = value(by.payments[0])
318+ let bz = aR.amount
319+ let bA = bz
320+ let bB = by.caller
317321 if (U)
318322 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
319323 else if (isDefined(aR.assetId))
320324 then throw("can use waves only")
321- else if (((10 * h) > bx))
325+ else if (((10 * h) > bz))
322326 then throw("min 10 waves expected")
323327 else {
324- let bz = valueOrElse(getInteger(this, "tmp_issuedNsbt"), 0)
325- let bA = ((2500 * 1000) * i)
326- let bB = (((1500 * 1000) * i) + bz)
327- let bt = aZ(X, Z, V, bA, bB, bw)
328- let bC = bt[0]
329- if ((bC > bx))
330- then throw(((("Payment amount is less then required: pmtAmount=" + toString(bx)) + " requiredWaves=") + toString(bC)))
331- else {
332- let bD = ap(bC, bw)
333- let ax = (fraction(ao(bD), 100, V) - 100)
334- (as(toBase58String(bv.transactionId), bx, bx, toString(by), r, ax, bD) ++ [ScriptTransfer(by, bw, T), ScriptTransfer(by, (bx - bC), unit), ScriptTransfer(P, bC, unit), StringEntry("debug_curveResult", br("curveResult", bt)), IntegerEntry("tmp_issuedNsbt", (bz + bw))])
335- }
328+ let bC = valueOrElse(getInteger(this, "tmp_issuedNsbt_2"), 0)
329+ let bD = ((2850 * 1000) * i)
330+ let bE = (((1850 * 1000) * i) + bC)
331+ let bw = aZ(X, Z, V, bD, bE, bA)
332+ let bF = bw[0]
333+ let bG = ap(bA, bF)
334+ let ax = (fraction(ao(bG), 100, V) - 100)
335+ (as(toBase58String(by.transactionId), bz, bz, toString(bB), r, ax, bG) ++ [ScriptTransfer(bB, bF, T), ScriptTransfer(P, bA, unit), StringEntry("debug_curveResult", bu("curveResult", bw)), IntegerEntry("tmp_issuedNsbt_2", (bC + bF))])
336336 }
337337 }
338338
339339
340340
341-@Callable(bv)
342-func instantBuyNsbtOrFail (bE) = {
343- let aR = value(bv.payments[0])
341+@Callable(by)
342+func instantBuyNsbtOrFail (bH) = {
343+ let aR = value(by.payments[0])
344344 let ax = ab
345- if ((bE > ax))
346- then throw(((("Current maxRoi=" + toString(ax)) + " is less then passed parameter noLessThenRoi=") + toString(bE)))
345+ if ((bH > ax))
346+ then throw(((("Current maxRoi=" + toString(ax)) + " is less then passed parameter noLessThenRoi=") + toString(bH)))
347347 else {
348348 let aH = am(ax)
349- aO(ax, ao(aH), "", bv, true)
349+ aO(ax, ao(aH), "", by, true)
350350 }
351351 }
352352
353353
354354
355-@Callable(bv)
355+@Callable(by)
356356 func addBuyBondOrder (L,aP) = {
357- let aR = value(bv.payments[0])
357+ let aR = value(by.payments[0])
358358 let aH = ao(L)
359359 if ((0 >= L))
360360 then throw("price less zero")
361- else aO(fraction((aH - V), 100, V), L, aP, bv, false)
361+ else aO(fraction((aH - V), 100, V), L, aP, by, false)
362362 }
363363
364364
365365
366-@Callable(bv)
366+@Callable(by)
367367 func cancelOrder (A) = {
368368 let av = ah(A)
369369 let K = (ag(A) - aj(A))
370- let bF = toString(bv.caller)
370+ let bI = toString(by.caller)
371371 let aU = al(A)
372372 let aP = ak(A)
373373 if (U)
374374 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
375- else if ((av != bF))
375+ else if ((av != bI))
376376 then throw("permission denied")
377377 else if ((ai(A) != q))
378378 then throw("invalid order status")
379379 else [StringEntry(y, if ((ad == A))
380380 then aU
381- else ad), StringEntry(I(aP), aU), StringEntry(H(aU), aP), StringEntry(F(A), p), ScriptTransfer(bv.caller, K, unit)]
381+ else ad), StringEntry(I(aP), aU), StringEntry(H(aU), aP), StringEntry(F(A), p), ScriptTransfer(by.caller, K, unit)]
382382 }
383383
384384
385385
386-@Callable(bv)
386+@Callable(by)
387387 func sellBond () = if (U)
388388 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
389389 else if ((ad == ""))
390390 then throw("empty orderbook")
391391 else {
392392 let aU = al(ad)
393- let bG = aj(ad)
394- let bH = ae(ad)
393+ let bJ = aj(ad)
394+ let bK = ae(ad)
395395 let ax = a(z(ad))
396- let bI = ag(ad)
396+ let bL = ag(ad)
397397 let aF = Address(fromBase58String(ah(ad)))
398- ay(ad, aU, bG, ax, bH, bI, aF, false)
398+ ay(ad, aU, bJ, ax, bK, bL, aF, false)
399399 }
400400
401401
402-@Verifier(bJ)
403-func bK () = {
404- let bL = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
405- let bM = ((((if (sigVerify(bJ.bodyBytes, bJ.proofs[0], fromBase58String(bL[0])))
402+@Verifier(bM)
403+func bN () = {
404+ let bO = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
405+ let bP = ((((if (sigVerify(bM.bodyBytes, bM.proofs[0], fromBase58String(bO[0])))
406406 then 1
407- else 0) + (if (sigVerify(bJ.bodyBytes, bJ.proofs[1], fromBase58String(bL[1])))
407+ else 0) + (if (sigVerify(bM.bodyBytes, bM.proofs[1], fromBase58String(bO[1])))
408408 then 1
409- else 0)) + (if (sigVerify(bJ.bodyBytes, bJ.proofs[2], fromBase58String(bL[2])))
409+ else 0)) + (if (sigVerify(bM.bodyBytes, bM.proofs[2], fromBase58String(bO[2])))
410410 then 1
411- else 0)) + (if (sigVerify(bJ.bodyBytes, bJ.proofs[3], fromBase58String(bL[3])))
411+ else 0)) + (if (sigVerify(bM.bodyBytes, bM.proofs[3], fromBase58String(bO[3])))
412412 then 2
413413 else 0))
414- (bM >= 3)
414+ (bP >= 3)
415415 }
416416
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b) = valueOrElse(getInteger(this, b), 0)
55
66
77 func c (b) = valueOrElse(getString(this, b), "")
88
99
1010 func d (e,b) = valueOrElse(getBoolean(e, b), false)
1111
1212
1313 func f (e,b) = valueOrElse(getString(e, b), "")
1414
1515
1616 func g (e,b) = valueOrElse(getInteger(e, b), 0)
1717
1818
1919 let h = 100000000
2020
2121 let i = 1000000
2222
2323 let j = 6
2424
2525 let k = 1000000
2626
2727 let l = 100000000
2828
2929 let m = 8
3030
3131 let n = (10 * h)
3232
3333 let o = 95
3434
3535 let p = "canceled"
3636
3737 let q = "new"
3838
3939 let r = "filled"
4040
4141 let s = "price"
4242
4343 let t = "bond_asset_id"
4444
4545 let u = "neutrino_asset_id"
4646
4747 let v = "balance_lock_"
4848
4949 let w = (v + "waves")
5050
5151 let x = (v + "neutrino")
5252
5353 let y = "order_first"
5454
5555 func z (A) = ("debug_order_roi_" + A)
5656
5757
5858 func B (A) = ("order_price_" + A)
5959
6060
6161 func C (A) = ("order_total_" + A)
6262
6363
6464 func D (A) = ("order_owner_" + A)
6565
6666
6767 func E (A) = ("order_height_" + A)
6868
6969
7070 func F (A) = ("order_status_" + A)
7171
7272
7373 func G (A) = ("order_filled_total_" + A)
7474
7575
7676 func H (A) = ("order_prev_" + A)
7777
7878
7979 func I (A) = ("order_next_" + A)
8080
8181
8282 func J (K,L) = fraction(fraction(K, k, L), h, i)
8383
8484
8585 func M (K,L) = fraction(fraction(K, L, k), i, h)
8686
8787
8888 func N (K,L) = M(K, L)
8989
9090
9191 func O (K,L) = J(K, L)
9292
9393
9494 let P = Address(base58'3Mzbx34Ex5rRbn39vUHx9kiwh3nneF8S5we')
9595
9696 let Q = Address(base58'3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx')
9797
9898 let R = Address(base58'3N5nmMvMH8o3RPEyCKCaoWahBTYTexnZy62')
9999
100100 let S = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
101101
102102 let T = base58'BGhPYquXSK6UYjnPLEn94gFhetp4Jvf7toekEY4x1VDH'
103103
104104 let U = d(Q, "is_blocked")
105105
106106 let V = g(Q, s)
107107
108108 let W = g(P, x)
109109
110110 let X = (wavesBalance(P).regular - g(P, w))
111111
112112 let Y = M(X, V)
113113
114114 let Z = (((W + value(assetInfo(S)).quantity) - assetBalance(P, S)) - assetBalance(R, S))
115115
116116 let aa = (Z - Y)
117117
118118 let ab = fraction(aa, 100, Z)
119119
120120 let ac = fraction(Y, l, Z)
121121
122122 let ad = c(y)
123123
124124 func ae (af) = a(B(af))
125125
126126
127127 func ag (af) = a(C(af))
128128
129129
130130 func ah (af) = c(D(af))
131131
132132
133133 func ai (af) = c(F(af))
134134
135135
136136 func aj (af) = a(G(af))
137137
138138
139139 func ak (af) = c(H(af))
140140
141141
142142 func al (af) = c(I(af))
143143
144144
145145 func am (an) = fraction((100 + an), V, 100)
146146
147147
148148 func ao (L) = ((k * k) / L)
149149
150150
151151 func ap (aq,ar) = fraction(aq, (i * k), ar)
152152
153153
154154 func as (A,at,au,av,aw,ax,L) = [IntegerEntry(B(A), L), IntegerEntry(C(A), at), IntegerEntry(G(A), au), StringEntry(D(A), av), IntegerEntry(E(A), height), StringEntry(F(A), aw), IntegerEntry(("debug_order_currentPrice_" + A), V), IntegerEntry(z(A), ax)]
155155
156156
157157 func ay (az,aA,aB,aC,aD,aE,aF,aG) = {
158158 let aH = am(aC)
159159 let aI = (aE - aB)
160160 let aJ = N(aI, aH)
161161 let aK = O(aJ, aH)
162162 let aL = (ab >= aC)
163163 if (!(aL))
164164 then throw(("innapropriate roi: " + toString(aC)))
165165 else if ((aK == 0))
166166 then throw("cannot fill order at the moment")
167167 else {
168168 let aM = (aI - aK)
169169 let aN = if (aG)
170170 then as(az, aE, (aB + aK), toBase58String(aF.bytes), r, aC, V)
171171 else [IntegerEntry(G(az), (aB + aK)), StringEntry(F(az), r), StringEntry(H(aA), ""), StringEntry(y, aA)]
172172 (aN ++ [ScriptTransfer(aF, aJ, T), ScriptTransfer(P, aK, unit), ScriptTransfer(aF, aM, unit)])
173173 }
174174 }
175175
176176
177177 func aO (ax,L,aP,aQ,aG) = {
178178 let aR = value(aQ.payments[0])
179179 let aS = toBase58String(aQ.transactionId)
180180 if (U)
181181 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
182182 else if ((n > aR.amount))
183183 then throw(("min order total equals " + toString(n)))
184184 else if ((ax > o))
185185 then throw("max setOrder ROI is 95%")
186186 else if ((0 > ax))
187187 then throw("can't place order with negative roi")
188188 else if ((ax == 0))
189189 then throw("roi should not be equal to 0")
190190 else if (isDefined(aR.assetId))
191191 then throw("can use waves only")
192192 else if ((ah(aS) != ""))
193193 then throw("order exists")
194194 else if (if ((aP != ""))
195195 then (ai(aP) != q)
196196 else false)
197197 then throw("prev order status is not new")
198198 else {
199199 let aT = (aP == "")
200200 let av = toString(aQ.caller)
201201 let aU = if (aT)
202202 then ad
203203 else al(aP)
204204 let aV = a(z(aU))
205205 let aW = if (if ((aU != ""))
206206 then (ax >= aV)
207207 else false)
208208 then true
209209 else false
210210 let aX = a(z(aP))
211211 let aY = if (if ((aP != ""))
212212 then (aX > ax)
213213 else false)
214214 then true
215215 else false
216216 if (if (aW)
217217 then true
218218 else aY)
219219 then throw(((("invalid order isPrevOrderError:" + toString(aY)) + " isNextOrderError:") + toString(aW)))
220220 else if (if (aT)
221221 then (ab >= ax)
222222 else false)
223223 then ay(aS, aU, 0, ax, L, aR.amount, aQ.caller, true)
224224 else if (aG)
225225 then throw("Instant order couldn't be added into waiting queue")
226226 else ([StringEntry(H(aS), aP), StringEntry(I(aS), aU), StringEntry(I(aP), if ((aP == ""))
227227 then ""
228228 else aS), StringEntry(H(aU), if ((aU == ""))
229229 then ""
230230 else aS), StringEntry(y, if (if ((ad == ""))
231231 then true
232232 else (ad == aU))
233233 then aS
234234 else ad)] ++ as(aS, aR.amount, 0, av, q, ax, L))
235235 }
236236 }
237237
238238
239239 func aZ (ba,bb,L,bc,bd,be) = {
240240 let bf = 271828100
241241 let bg = valueOrElse(getInteger(this, "nsbtCurveParam_a"), 3)
242- let bh = M(ba, L)
243- let bi = fraction(bh, l, bb)
244- let bj = (bg * (bi - (1 * l)))
245- let bk = pow(bf, m, bj, m, m, DOWN)
246- let bl = log(((bc - bd) - be), j, bf, m, m, DOWN)
247- let bm = log((bc - bd), j, bf, m, m, DOWN)
248- let bn = (bm - bl)
249- let bo = fraction(bc, bn, l)
250- let bp = fraction(bk, bo, l)
251- let bq = J(bp, L)
252-[bq, bp, ba, bb, bc, bd, be, bg, bh, bi, bj, bk, bm, bl, bn, bo]
242+ let bh = valueOrElse(getInteger(this, "nsbtCurveParam_b"), ((3 * i) / 10))
243+ let bi = M(ba, L)
244+ let bj = fraction(bi, l, bb)
245+ let bk = (bg * (bj - (1 * l)))
246+ let bl = pow(bf, m, bk, m, m, DOWN)
247+ let bm = fraction(bh, bl, i)
248+ let bn = M(be, L)
249+ let bo = fraction(bm, bc, i)
250+ let bp = fraction(bo, i, (bc - bd))
251+ let bq = (fraction(bn, l, i) + fraction(bp, bc, i))
252+ let br = fraction(bo, l, bq)
253+ let bs = fraction(br, bc, l)
254+ let bt = ((bc - bd) - bs)
255+[bt, bn, ba, bb, bc, bd, bg, bh, bi, L, bj, bk, bl, bm, bo, bp, bq, br, bs]
253256 }
254257
255258
256-func br (bs,bt) = (((((((((((((((((((((((((((((((((bs + "[wavesPayment=") + toString(bt[0])) + " usdnPayment=") + toString(bt[1])) + " wRaw=") + toString(bt[2])) + " uRaw=") + toString(bt[3])) + " mRaw=") + toString(bt[4])) + " sRaw=") + toString(bt[5])) + " nRaw=") + toString(bt[6])) + " nsbtCurveParamA=") + toString(bt[7])) + " wReservesInUsdn=") + toString(bt[8])) + " brMult=") + toString(bt[9])) + " powerMult=") + toString(bt[10])) + " expInPowerMult=") + toString(bt[11])) + " lnRes0=") + toString(bt[12])) + " lnRes1=") + toString(bt[13])) + " lnDiffMult=") + toString(bt[14])) + " maxXlndiff=") + toString(bt[15])) + "]")
259+func bu (bv,bw) = (((((((((((((((((((((((((((((((((((((((bv + "[nsbtAmountRaw=") + toString(bw[0])) + " usdnPayment=") + toString(bw[1])) + " wRaw=") + toString(bw[2])) + " uRaw=") + toString(bw[3])) + " mRaw=") + toString(bw[4])) + " sRaw=") + toString(bw[5])) + " nsbtCurveParam_a=") + toString(bw[6])) + " nsbtCurveParam_b=") + toString(bw[7])) + " wReservesInUsdn=") + toString(bw[8])) + " price=") + toString(bw[9])) + " multBR=") + toString(bw[10])) + " multPower=") + toString(bw[11])) + " multExpInPower=") + toString(bw[12])) + " multK=") + toString(bw[13])) + " multStepM1=") + toString(bw[14])) + " multStep2=") + toString(bw[15])) + " multStepM3=") + toString(bw[16])) + " multStep4=") + toString(bw[17])) + " stepM5=") + toString(bw[18])) + "]")
257260
258261
259-func bu (bv) = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (!(isDefined(transferTransactionById(fromBase58String("PdLw5JK5ppfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k")))))
262+func bx (by) = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (!(isDefined(transferTransactionById(fromBase58String("PdLw5JK5ppfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k")))))
260263 then !(isDefined(transferTransactionById(fromBase58String("adLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
261264 else false)
262265 then !(isDefined(transferTransactionById(fromBase58String("sdLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
263266 else false)
264267 then !(isDefined(transferTransactionById(fromBase58String("ddLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
265268 else false)
266269 then !(isDefined(transferTransactionById(fromBase58String("fdLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
267270 else false)
268271 then !(isDefined(transferTransactionById(fromBase58String("gdLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
269272 else false)
270273 then !(isDefined(transferTransactionById(fromBase58String("hdLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
271274 else false)
272275 then !(isDefined(transferTransactionById(fromBase58String("jdLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
273276 else false)
274277 then !(isDefined(transferTransactionById(fromBase58String("kdLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
275278 else false)
276279 then !(isDefined(transferTransactionById(fromBase58String("rdLw5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
277280 else false)
278281 then !(isDefined(transferTransactionById(fromBase58String("tdLq5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
279282 else false)
280283 then !(isDefined(transferTransactionById(fromBase58String("tdLy5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
281284 else false)
282285 then !(isDefined(transferTransactionById(fromBase58String("tdLu5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
283286 else false)
284287 then !(isDefined(transferTransactionById(fromBase58String("tdLh5JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
285288 else false)
286289 then !(isDefined(transferTransactionById(fromBase58String("1dL4JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
287290 else false)
288291 then !(isDefined(transferTransactionById(fromBase58String("2dL25JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
289292 else false)
290293 then !(isDefined(transferTransactionById(fromBase58String("3dL95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
291294 else false)
292295 then !(isDefined(transferTransactionById(fromBase58String("4dL95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
293296 else false)
294297 then !(isDefined(transferTransactionById(fromBase58String("5dL95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
295298 else false)
296299 then !(isDefined(transferTransactionById(fromBase58String("6dL95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
297300 else false)
298301 then !(isDefined(transferTransactionById(fromBase58String("7dL95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
299302 else false)
300303 then !(isDefined(transferTransactionById(fromBase58String("8dL95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
301304 else false)
302305 then !(isDefined(transferTransactionById(fromBase58String("91L95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
303306 else false)
304307 then !(isDefined(transferTransactionById(fromBase58String("92L95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
305308 else false)
306309 then !(isDefined(transferTransactionById(fromBase58String("93L95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
307310 else false)
308311 then !(isDefined(transferTransactionById(fromBase58String("94L95JKdpqfSEqvmFJvchejorAkzd4BrWLvoFwvMGu5k"))))
309312 else false
310313
311314
312-@Callable(bv)
313-func buyNsbtInSurplus (bw) = {
314- let aR = value(bv.payments[0])
315- let bx = aR.amount
316- let by = bv.caller
315+@Callable(by)
316+func buyNsbtInSurplus () = {
317+ let aR = value(by.payments[0])
318+ let bz = aR.amount
319+ let bA = bz
320+ let bB = by.caller
317321 if (U)
318322 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
319323 else if (isDefined(aR.assetId))
320324 then throw("can use waves only")
321- else if (((10 * h) > bx))
325+ else if (((10 * h) > bz))
322326 then throw("min 10 waves expected")
323327 else {
324- let bz = valueOrElse(getInteger(this, "tmp_issuedNsbt"), 0)
325- let bA = ((2500 * 1000) * i)
326- let bB = (((1500 * 1000) * i) + bz)
327- let bt = aZ(X, Z, V, bA, bB, bw)
328- let bC = bt[0]
329- if ((bC > bx))
330- then throw(((("Payment amount is less then required: pmtAmount=" + toString(bx)) + " requiredWaves=") + toString(bC)))
331- else {
332- let bD = ap(bC, bw)
333- let ax = (fraction(ao(bD), 100, V) - 100)
334- (as(toBase58String(bv.transactionId), bx, bx, toString(by), r, ax, bD) ++ [ScriptTransfer(by, bw, T), ScriptTransfer(by, (bx - bC), unit), ScriptTransfer(P, bC, unit), StringEntry("debug_curveResult", br("curveResult", bt)), IntegerEntry("tmp_issuedNsbt", (bz + bw))])
335- }
328+ let bC = valueOrElse(getInteger(this, "tmp_issuedNsbt_2"), 0)
329+ let bD = ((2850 * 1000) * i)
330+ let bE = (((1850 * 1000) * i) + bC)
331+ let bw = aZ(X, Z, V, bD, bE, bA)
332+ let bF = bw[0]
333+ let bG = ap(bA, bF)
334+ let ax = (fraction(ao(bG), 100, V) - 100)
335+ (as(toBase58String(by.transactionId), bz, bz, toString(bB), r, ax, bG) ++ [ScriptTransfer(bB, bF, T), ScriptTransfer(P, bA, unit), StringEntry("debug_curveResult", bu("curveResult", bw)), IntegerEntry("tmp_issuedNsbt_2", (bC + bF))])
336336 }
337337 }
338338
339339
340340
341-@Callable(bv)
342-func instantBuyNsbtOrFail (bE) = {
343- let aR = value(bv.payments[0])
341+@Callable(by)
342+func instantBuyNsbtOrFail (bH) = {
343+ let aR = value(by.payments[0])
344344 let ax = ab
345- if ((bE > ax))
346- then throw(((("Current maxRoi=" + toString(ax)) + " is less then passed parameter noLessThenRoi=") + toString(bE)))
345+ if ((bH > ax))
346+ then throw(((("Current maxRoi=" + toString(ax)) + " is less then passed parameter noLessThenRoi=") + toString(bH)))
347347 else {
348348 let aH = am(ax)
349- aO(ax, ao(aH), "", bv, true)
349+ aO(ax, ao(aH), "", by, true)
350350 }
351351 }
352352
353353
354354
355-@Callable(bv)
355+@Callable(by)
356356 func addBuyBondOrder (L,aP) = {
357- let aR = value(bv.payments[0])
357+ let aR = value(by.payments[0])
358358 let aH = ao(L)
359359 if ((0 >= L))
360360 then throw("price less zero")
361- else aO(fraction((aH - V), 100, V), L, aP, bv, false)
361+ else aO(fraction((aH - V), 100, V), L, aP, by, false)
362362 }
363363
364364
365365
366-@Callable(bv)
366+@Callable(by)
367367 func cancelOrder (A) = {
368368 let av = ah(A)
369369 let K = (ag(A) - aj(A))
370- let bF = toString(bv.caller)
370+ let bI = toString(by.caller)
371371 let aU = al(A)
372372 let aP = ak(A)
373373 if (U)
374374 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
375- else if ((av != bF))
375+ else if ((av != bI))
376376 then throw("permission denied")
377377 else if ((ai(A) != q))
378378 then throw("invalid order status")
379379 else [StringEntry(y, if ((ad == A))
380380 then aU
381- else ad), StringEntry(I(aP), aU), StringEntry(H(aU), aP), StringEntry(F(A), p), ScriptTransfer(bv.caller, K, unit)]
381+ else ad), StringEntry(I(aP), aU), StringEntry(H(aU), aP), StringEntry(F(A), p), ScriptTransfer(by.caller, K, unit)]
382382 }
383383
384384
385385
386-@Callable(bv)
386+@Callable(by)
387387 func sellBond () = if (U)
388388 then throw("contract is blocked by EMERGENCY SHUTDOWN actions until reactivation by emergency oracles")
389389 else if ((ad == ""))
390390 then throw("empty orderbook")
391391 else {
392392 let aU = al(ad)
393- let bG = aj(ad)
394- let bH = ae(ad)
393+ let bJ = aj(ad)
394+ let bK = ae(ad)
395395 let ax = a(z(ad))
396- let bI = ag(ad)
396+ let bL = ag(ad)
397397 let aF = Address(fromBase58String(ah(ad)))
398- ay(ad, aU, bG, ax, bH, bI, aF, false)
398+ ay(ad, aU, bJ, ax, bK, bL, aF, false)
399399 }
400400
401401
402-@Verifier(bJ)
403-func bK () = {
404- let bL = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
405- let bM = ((((if (sigVerify(bJ.bodyBytes, bJ.proofs[0], fromBase58String(bL[0])))
402+@Verifier(bM)
403+func bN () = {
404+ let bO = ["GXxmZaCigPgJsT6d1cLr8nUXA65nGX8V7FuAzzrY8wQE", "3xumx4hrPpeeoo79HLGbZCgfz95L39ZFdxxwWeSUC2Pu", "D4CqtK5fBsnzRo33ZMhrM7niLseDH2uRoK6weBq2JQ3A", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
405+ let bP = ((((if (sigVerify(bM.bodyBytes, bM.proofs[0], fromBase58String(bO[0])))
406406 then 1
407- else 0) + (if (sigVerify(bJ.bodyBytes, bJ.proofs[1], fromBase58String(bL[1])))
407+ else 0) + (if (sigVerify(bM.bodyBytes, bM.proofs[1], fromBase58String(bO[1])))
408408 then 1
409- else 0)) + (if (sigVerify(bJ.bodyBytes, bJ.proofs[2], fromBase58String(bL[2])))
409+ else 0)) + (if (sigVerify(bM.bodyBytes, bM.proofs[2], fromBase58String(bO[2])))
410410 then 1
411- else 0)) + (if (sigVerify(bJ.bodyBytes, bJ.proofs[3], fromBase58String(bL[3])))
411+ else 0)) + (if (sigVerify(bM.bodyBytes, bM.proofs[3], fromBase58String(bO[3])))
412412 then 2
413413 else 0))
414- (bM >= 3)
414+ (bP >= 3)
415415 }
416416

github/deemru/w8io/169f3d6 
141.99 ms