2024.05.27 00:11 [4189594] exchange 3PHVATdeZezu7hbhi978kGv476jqhvzgJpv > 3PGNvzRBV7UeFD6x9PHmN4rHxXSEMJfZxcp 68822.852335 WBTC-ERC20-PPT/USDT-PPT 10.312416 USDT-PPT 2024.05.27 00:11 [4189594] exchange 3PGNvzRBV7UeFD6x9PHmN4rHxXSEMJfZxcp > 3PHVATdeZezu7hbhi978kGv476jqhvzgJpv 68822.852335 WBTC-ERC20-PPT/USDT-PPT 0.00014984 WBTC-ERC20-PPT 2024.05.27 00:11 [4189594] matcher MATCHER > 3PEjHv3JGjcWNpYEEkif2w8NXV4kbhnoGgu +0.00300000 Waves 2024.05.27 00:11 [4189594] matcher MATCHER > 3PEjHv3JGjcWNpYEEkif2w8NXV4kbhnoGgu 0.00000014 WBTC-ERC20-PPT 2024.05.27 00:11 [4189594] exchange 3P4AvhaPoEPsN4UEc1xVFoZ1nFtteVjQKzJ > 3P8auNWJkxxByyJtwErFXaxiXcGM45qQ1hA 0.300000 L2MP/XTN. 1248.693300 XTN. 2024.05.27 00:11 [4189594] exchange 3P8auNWJkxxByyJtwErFXaxiXcGM45qQ1hA > 3P4AvhaPoEPsN4UEc1xVFoZ1nFtteVjQKzJ 0.300000 L2MP/XTN. 4162.31100000 L2MP 2024.05.27 00:11 [4189594] matcher MATCHER > 3PEjHv3JGjcWNpYEEkif2w8NXV4kbhnoGgu +0.00300000 Waves 2024.05.27 00:11 [4189594] matcher MATCHER > 3PEjHv3JGjcWNpYEEkif2w8NXV4kbhnoGgu 41.62311000 L2MP 2024.05.27 00:11 [4189594] matcher MATCHER > 3PEjHv3JGjcWNpYEEkif2w8NXV4kbhnoGgu 45.72940499 Waves.Exchange 2024.05.27 00:11 [4189594] exchange 3P4AvhaPoEPsN4UEc1xVFoZ1nFtteVjQKzJ > 3PQoNPWtnTWwrf8GS7BTeg2NfLJZM16RfWV 0.299076 L2MP/XTN. 659.239920 XTN. 2024.05.27 00:11 [4189594] exchange 3PQoNPWtnTWwrf8GS7BTeg2NfLJZM16RfWV > 3P4AvhaPoEPsN4UEc1xVFoZ1nFtteVjQKzJ 0.299076 L2MP/XTN. 2204.25550697 L2MP 2024.05.27 00:11 [4189594] matcher MATCHER > 3PEjHv3JGjcWNpYEEkif2w8NXV4kbhnoGgu +0.00300000 Waves 2024.05.27 00:11 [4189594] matcher MATCHER > 3PEjHv3JGjcWNpYEEkif2w8NXV4kbhnoGgu 24.14255709 Waves.Exchange 2024.05.27 00:11 [4189594] transfer 3PRDdJfgUDq4fCwbNLDaGnfs5eYc6S9A1xX > 3P8auNWJkxxByyJtwErFXaxiXcGM45qQ1hA exchange() 4168.40140757 L2MP 2024.05.27 00:11 [4189594] invoke 3P8auNWJkxxByyJtwErFXaxiXcGM45qQ1hA > 3PRDdJfgUDq4fCwbNLDaGnfs5eYc6S9A1xX exchange() 1236.206367 XTN. 2024.05.27 00:11 [4189594] transfer 3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93 > 3PCA7wkovBpAGgm5e6rZMXyXY97jUwVENWe swap() 0.87024000 WEST 2024.05.27 00:11 [4189594] transfer 3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93 > 3PEjHv3JGjcWNpYEEkif2w8NXV4kbhnoGgu swap() 0.87024000 WEST 2024.05.27 00:11 [4189594] transfer 3PCA7wkovBpAGgm5e6rZMXyXY97jUwVENWe > 3PNq1sS6HfbsjLpgMk7KGvSQg8XUNjoctFe calculateAmountOutForSwapAndSendTokens() 3.28803139 Waves 2024.05.27 00:11 [4189594] transfer 3PCA7wkovBpAGgm5e6rZMXyXY97jUwVENWe > 3PCoDJZ4R95qFdiAwdhjf9y2jtTiskJ9STo calculateAmountOutForSwapAndSendTokens() 0.00140809 sWAVES 2024.05.27 00:11 [4189594] transfer 3P4dXbaBwREskBrTvx3UjvSCmJWcnqpnJVn > 3PCA7wkovBpAGgm5e6rZMXyXY97jUwVENWe withdraw() 2.62539752 Waves 2024.05.27 00:11 [4189594] transfer 3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV > 3P4dXbaBwREskBrTvx3UjvSCmJWcnqpnJVn withdraw() 2.62539752 Waves 2024.05.27 00:11 [4189594] burn 3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV > SELF withdraw() 2.34216307 sWAVES 2024.05.27 00:11 [4189594] transfer 3PHTxmSNQsrZocZRAWidNbdcxqRpzHiK5Mt > 3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV unstake() 2.62539752 Waves 2024.05.27 00:11 [4189594] lease 3PHTxmSNQsrZocZRAWidNbdcxqRpzHiK5Mt > 3PDETXtiaErZncMduS8h9G6aopcjT7wheqj unstake() 1700607.13558265 Waves 2024.05.27 00:11 [4189594] unlease 3PHTxmSNQsrZocZRAWidNbdcxqRpzHiK5Mt > 3PDETXtiaErZncMduS8h9G6aopcjT7wheqj unstake() +1700609.76098017 Waves 2024.05.27 00:11 [4189594] invoke 3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV > 3PHTxmSNQsrZocZRAWidNbdcxqRpzHiK5Mt unstake() 2024.05.27 00:11 [4189594] invoke 3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV > 3PHTxmSNQsrZocZRAWidNbdcxqRpzHiK5Mt claimReward() 2024.05.27 00:11 [4189594] invoke 3P4dXbaBwREskBrTvx3UjvSCmJWcnqpnJVn > 3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV withdraw() 2.34216307 sWAVES 2024.05.27 00:11 [4189594] invoke 3PCA7wkovBpAGgm5e6rZMXyXY97jUwVENWe > 3P4dXbaBwREskBrTvx3UjvSCmJWcnqpnJVn withdraw() 2.34216307 sWAVES 2024.05.27 00:11 [4189594] invoke 3P4dXbaBwREskBrTvx3UjvSCmJWcnqpnJVn > 3PDPzZVLhN1EuzGy4xAxjjTVkawKDLEaHiV getRate() 2024.05.27 00:11 [4189594] invoke 3PCA7wkovBpAGgm5e6rZMXyXY97jUwVENWe > 3P4dXbaBwREskBrTvx3UjvSCmJWcnqpnJVn getRate() 2024.05.27 00:11 [4189594] invoke 3PCA7wkovBpAGgm5e6rZMXyXY97jUwVENWe > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv getPoolLeaseConfigREADONLY() 2024.05.27 00:11 [4189594] invoke 3PCA7wkovBpAGgm5e6rZMXyXY97jUwVENWe > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv getPoolLeaseConfigREADONLY() 2024.05.27 00:11 [4189594] invoke 3PCA7wkovBpAGgm5e6rZMXyXY97jUwVENWe > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv getSwapContractREADONLY() 2024.05.27 00:11 [4189594] invoke 3PCA7wkovBpAGgm5e6rZMXyXY97jUwVENWe > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv isPoolSwapDisabledREADONLY() 2024.05.27 00:11 [4189594] invoke 3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93 > 3PCA7wkovBpAGgm5e6rZMXyXY97jUwVENWe calculateAmountOutForSwapAndSendTokens() 433.37952000 WEST 2024.05.27 00:11 [4189594] invoke 3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93 > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv getSwapFeeREADONLY() 2024.05.27 00:11 [4189594] invoke 3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93 > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv getPoolStatusREADONLY() 2024.05.27 00:11 [4189594] invoke 3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93 > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv getPoolAddressFromLpAssetREADONLY() 2024.05.27 00:11 [4189594] invoke 3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93 > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv getLpAssetFromPoolAssetsREADONLY() 2024.05.27 00:11 [4189594] invoke 3PNq1sS6HfbsjLpgMk7KGvSQg8XUNjoctFe > 3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93 swap() 435.12000000 WEST 2024.05.27 00:11 [4189594] invoke 3P668fL3YmMRajtfdengdu3Mkbz1PYjnSnV > 3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF finalizeDORA2() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv isPoolSwapDisabledREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv isPoolOneTokenOperationsDisabledREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv getOutFeeREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv getInFeeREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PDi7Qq8pLQYvtKyTfQuqqPUWyhoYbU957t fromX18WrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PDi7Qq8pLQYvtKyTfQuqqPUWyhoYbU957t fromX18WrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PDi7Qq8pLQYvtKyTfQuqqPUWyhoYbU957t calcPricesWrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PDi7Qq8pLQYvtKyTfQuqqPUWyhoYbU957t getAccBalanceWrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PDi7Qq8pLQYvtKyTfQuqqPUWyhoYbU957t getAccBalanceWrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PDi7Qq8pLQYvtKyTfQuqqPUWyhoYbU957t getPoolConfigWrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv getPoolStatusREADONLY() 2024.05.27 00:11 [4189594] invoke 3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF > 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW poolStatsREADONLY() 2024.05.27 00:11 [4189594] invoke 3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF > 3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp calcGetAmountCPMM() 2024.05.27 00:11 [4189594] invoke 3P668fL3YmMRajtfdengdu3Mkbz1PYjnSnV > 3PKkojKdd6BBzTf1RXbQVfUDraNFXXHKzQF finalizeDORA2() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv isPoolSwapDisabledREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv isPoolOneTokenOperationsDisabledREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv getOutFeeREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv getInFeeREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PEtzvd7onMdQ3RiQLhkE8we5jSWxzcZ6UM fromX18WrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PEtzvd7onMdQ3RiQLhkE8we5jSWxzcZ6UM fromX18WrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PEtzvd7onMdQ3RiQLhkE8we5jSWxzcZ6UM calcPricesWrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PEtzvd7onMdQ3RiQLhkE8we5jSWxzcZ6UM getAccBalanceWrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PEtzvd7onMdQ3RiQLhkE8we5jSWxzcZ6UM getAccBalanceWrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PEtzvd7onMdQ3RiQLhkE8we5jSWxzcZ6UM getPoolConfigWrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv getPoolStatusREADONLY() 2024.05.27 00:11 [4189594] invoke 3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP > 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW poolStatsREADONLY() 2024.05.27 00:11 [4189594] invoke 3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP > 3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp calcGetAmountCPMM() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv isPoolSwapDisabledREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv isPoolOneTokenOperationsDisabledREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv getOutFeeREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv getInFeeREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3P7Z7X5kKXN4TpZ2SmqP2xyLGuotAqht1pU fromX18WrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3P7Z7X5kKXN4TpZ2SmqP2xyLGuotAqht1pU fromX18WrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3P7Z7X5kKXN4TpZ2SmqP2xyLGuotAqht1pU calcPricesWrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3P7Z7X5kKXN4TpZ2SmqP2xyLGuotAqht1pU getAccBalanceWrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3P7Z7X5kKXN4TpZ2SmqP2xyLGuotAqht1pU getAccBalanceWrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3P7Z7X5kKXN4TpZ2SmqP2xyLGuotAqht1pU getPoolConfigWrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv getPoolStatusREADONLY() 2024.05.27 00:11 [4189594] invoke 3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP > 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW poolStatsREADONLY() 2024.05.27 00:11 [4189594] invoke 3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP > 3P56jNQzECXnrWpnbbSJKw7Eooo6fkUaMPp calcGetAmountCPMM() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv isPoolSwapDisabledREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv isPoolOneTokenOperationsDisabledREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv getOutFeeREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv getInFeeREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PFzaH2ghpwANHFgjeva83N1yxzErELx2eh fromX18WrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PFzaH2ghpwANHFgjeva83N1yxzErELx2eh fromX18WrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PFzaH2ghpwANHFgjeva83N1yxzErELx2eh calcPricesWrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PFzaH2ghpwANHFgjeva83N1yxzErELx2eh getAccBalanceWrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PFzaH2ghpwANHFgjeva83N1yxzErELx2eh getAccBalanceWrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PFzaH2ghpwANHFgjeva83N1yxzErELx2eh getPoolConfigWrapperREADONLY() 2024.05.27 00:11 [4189594] invoke 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > 3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv getPoolStatusREADONLY() 2024.05.27 00:11 [4189594] invoke 3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP > 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW poolStatsREADONLY() 2024.05.27 00:11 [4189594] invoke 3P668fL3YmMRajtfdengdu3Mkbz1PYjnSnV > 3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP finalizeCurrentPrice() 2024.05.27 00:10 [4189593] fees GENERATOR > 3PA1KvFfq9VuJjg45p2ytGgaNjrgnLSgf4r 0.01780000 Waves 2024.05.27 00:10 [4189593] reward 3PA1KvFfq9VuJjg45p2ytGgaNjrgnLSgf4r > 3PFjHWuH6WXNJbwnfLHqNFBpwBS5dkYjTfv 2.00000000 Waves 2024.05.27 00:10 [4189593] reward 3PA1KvFfq9VuJjg45p2ytGgaNjrgnLSgf4r > 3PEgG7eZHLFhcfsTSaYxgRhZsh4AxMvA4Ms 2.00000000 Waves 2024.05.27 00:10 [4189593] reward GENERATOR > 3PA1KvFfq9VuJjg45p2ytGgaNjrgnLSgf4r 6.00000000 Waves 2024.05.27 00:10 [4189593] invoke 3PKSw5WZ5x9TZ9EXZsiEiQWDx6HVs8s79uP > 3PHNNEZmpW7jWg54Q7jKRtGxfCG1XwZRZwh finalizeDORA2()...
github/deemru/w8io/3ef1775 9.78 ms ◑