tx · 4AxfNBjDx64akYRvCSCqU2RZHfGrUGW9uyNnFethohTi

3MuH9NgpoGaSQufEQLPRikXNS9PXhkhcLzp:  -0.01400000 Waves

2022.05.19 14:51 [2058515] smart account 3MuH9NgpoGaSQufEQLPRikXNS9PXhkhcLzp > SELF 0.00000000 Waves

{ "type": 13, "id": "4AxfNBjDx64akYRvCSCqU2RZHfGrUGW9uyNnFethohTi", "fee": 1400000, "feeAssetId": null, "timestamp": 1652961123296, "version": 2, "chainId": 84, "sender": "3MuH9NgpoGaSQufEQLPRikXNS9PXhkhcLzp", "senderPublicKey": "74D2dSZ2CcYprVwEPr2GayHyp7wbLrppDt4SWXZcfT1z", "proofs": [ "3Bs7zPatiiawn4qGz42ZUpFrruEGf36bBQVTuSrzwNu7vsLKQcAsY5GrvGa9ikZWXr9ZnrESaELre3MWHzFEo1sw" ], "script": "base64:AAIFAAAAAAAAAAwIAhIDCgEBEgMKAQEAAAAhAAAAAAlzZXBhcmF0b3ICAAAAAV8AAAAAE2tleUxhc3RCYXR0bGVIZWlnaHQCAAAAEmxhc3RfYmF0dGxlX2hlaWdodAAAAAANa2V5SXRlbXNDb3VudAIAAAALaXRlbXNfY291bnQAAAAADGtleUl0ZW1Pd25lcgIAAAAKaXRlbV9vd25lcgAAAAAPa2V5SXRlbUNhdGVnb3J5AgAAAA1pdGVtX2NhdGVnb3J5AAAAAAtrZXlJdGVtVHlwZQIAAAAJaXRlbV90eXBlAAAAABJrZXlJdGVtRWZmZWN0VHlwZTECAAAAEml0ZW1fZWZmZWN0X3R5cGVfMQAAAAATa2V5SXRlbUVmZmVjdFZhbHVlMQIAAAATaXRlbV9lZmZlY3RfdmFsdWVfMQAAAAASa2V5SXRlbUVmZmVjdFR5cGUyAgAAABJpdGVtX2VmZmVjdF90eXBlXzIAAAAAE2tleUl0ZW1FZmZlY3RWYWx1ZTICAAAAE2l0ZW1fZWZmZWN0X3ZhbHVlXzIAAAAAEmtleUl0ZW1FZmZlY3RUeXBlMwIAAAASaXRlbV9lZmZlY3RfdHlwZV8zAAAAABNrZXlJdGVtRWZmZWN0VmFsdWUzAgAAABNpdGVtX2VmZmVjdF92YWx1ZV8zAAAAABJrZXlJdGVtRWZmZWN0VHlwZTQCAAAAEml0ZW1fZWZmZWN0X3R5cGVfNAAAAAATa2V5SXRlbUVmZmVjdFZhbHVlNAIAAAATaXRlbV9lZmZlY3RfdmFsdWVfNAAAAAAGZ292QXBwCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABAgAAACMzTXl4Znd2YnVlVUJ5bllIZlFzdXROWFpOcU5vekdpTW5zRwAAAAAVa2V5RWNvc3lzdGVtQWRkcmVzc2VzAgAAABNlY29zeXN0ZW1fYWRkcmVzc2VzAAAAABNrZXlCYXR0bGVSZXN0UGVyaW9kAgAAABJiYXR0bGVfcmVzdF9wZXJpb2QAAAAAGWtleUJhdHRsZVdpbkNoYW5jZUhhcmRjYXACAAAAGWJhdHRsZV93aW5fY2hhbmNlX2hhcmRjYXAAAAAAHmtleUJhdHRsZVdpbkNoYW5jZUluY3JQZXJCbG9jawIAAAAgYmF0dGxlX3dpbl9jaGFuY2VfaW5jcl9wZXJfYmxvY2sAAAAAGWtleUJhdHRsZUxvb3RSYXJpdHlSYW5nZXMCAAAAGWJhdHRsZV9sb290X3Jhcml0eV9yYW5nZXMAAAAAIGtleUNoYXJzTmF0dXJhbEJhdHRsZUJvbnVzUmFuZ2VzAgAAACFjaGFyc19uYXR1cmFsX2JhdHRsZV9ib251c19yYW5nZXMAAAAAEmtleUl0ZW1zQ2F0ZWdvcmllcwIAAAAQaXRlbXNfY2F0ZWdvcmllcwAAAAATa2V5SXRlbXNUeXBlc1BlckNhdAIAAAATaXRlbXNfdHlwZXNfcGVyX2NhdAAAAAAPa2V5SXRlbXNFZmZlY3RzAgAAAA1pdGVtc19lZmZlY3RzAAAAABhrZXlpdGVtc0VmZmVjdHNNYXhSYW5nZXMCAAAAF2l0ZW1zX2VmZmVjdHNfbWF4X3JhbmdlAAAAAAhjaGFyc0FwcAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQIAAAAjM05BM0xSU2lnazZrbkxaMTZ1VHpjZExOb3cyRVFadFhUYUoAAAAACGtleU93bmVyAgAAAAVvd25lcgAAAAAVa2V5TmF0dXJhbEJhdHRsZUJvbnVzAgAAABRuYXR1cmFsX2JhdHRsZV9ib251cwAAAAAIbGFuZHNBcHAJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAECAAAAIzNNeGlKTHJZNlFhNWJTWXh4U0ZIU0c1YlZWMm41OXgxTUduAQAAAAxpbnZva2VDaGVja3MAAAABAAAACmNhbGxlckFkZHIDCQEAAAACIT0AAAACCQAEHgAAAAEFAAAABmdvdkFwcAcJAAACAAAAAQIAAAAXR292ZXJuaW5nIGFwcCBub3QgcmVhZHkEAAAAEmVjb3N5c3RlbUFkZHJlc3NlcwkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAGZ292QXBwBQAAABVrZXlFY29zeXN0ZW1BZGRyZXNzZXMDCQEAAAACIT0AAAACCQEAAAAIY29udGFpbnMAAAACBQAAABJlY29zeXN0ZW1BZGRyZXNzZXMJAAQlAAAAAQUAAAAKY2FsbGVyQWRkcgcJAAACAAAAAQIAAAANQWNjZXNzIGRlbmllZAYBAAAADmVjb3N5c3RlbUNoZWNrAAAAAQAAAAZjYWxsZXIDCQEA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dkFwcAUAAAAPa2V5SXRlbXNFZmZlY3RzBAAAABRpdGVtRWZmZWN0c01heFJhbmdlcwkABLUAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAZnb3ZBcHAFAAAAGGtleWl0ZW1zRWZmZWN0c01heFJhbmdlcwUAAAAJc2VwYXJhdG9yBAAAAA9pdGVtRWZmZWN0VHlwZTEJAQAAAAdyYW5kSW50AAAABAAAAAAAAAAAAQUAAAASaXRlbUVmZmVjdHNBbW91bnRzBQAAAAR0eElkAAAAAAAAAAAEBAAAABBpdGVtRWZmZWN0VmFsdWUxCQEAAAAHcmFuZEludAAAAAQAAAAAAAAAAAEJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABRpdGVtRWZmZWN0c01heFJhbmdlcwUAAAAPaXRlbUVmZmVjdFR5cGUxBQAAAAR0eElkAAAAAAAAAAAFBAAAAA9pdGVtRWZmZWN0VHlwZTIDCQAAZgAAAAIFAAAAD2l0ZW1FZmZlY3RTbG90cwAAAAAAAAAAAQkBAAAAB3JhbmRJbnQAAAAEAAAAAAAAAAABBQAAABJpdGVtRWZmZWN0c0Ftb3VudHMFAAAABHR4SWQAAAAAAAAAAAYAAAAAAAAAAAAEAAAAEGl0ZW1FZmZlY3RWYWx1ZTIDCQAAZgAAAAIFAAAAD2l0ZW1FZmZlY3RTbG90cwAAAAAAAAAAAQkBAAAAB3JhbmRJbnQAAAAEAAAAAAAAAAABCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAUaXRlbUVmZmVjdHNNYXhSYW5nZXMFAAAAD2l0ZW1FZmZlY3RUeXBlMgUAAAAEdHhJZAAAAAAAAAAABwAAAAAAAAAAAAQAAAAPaXRlbUVmZmVjdFR5cGUzAwkAAGYAAAACBQAAAA9pdGVtRWZmZWN0U2xvdHMAAAAAAAAAAAIJAQAAAAdyYW5kSW50AAAABAAAAAAAAAAAAQUAAAASaXRlbUVmZmVjdHNBbW91bnRzBQAAAAR0eElkAAAAAAAAAAAIAAAAAAAAAAAABAAAABBpdGVtRWZmZWN0VmFsdWUzAwkAAGYAAAACBQAAAA9pdGVtRWZmZWN0U2xvdHMAAAAAAAAAAAIJAQAAAAdyYW5kSW50AAAABAAAAAAAAAAAAQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAFGl0ZW1FZmZlY3RzTWF4UmFuZ2VzBQAAAA9pdGVtRWZmZWN0VHlwZTMFAAAABHR4SWQAAAAAAAAAAAkAAAAAAAAAAAAEAAAAD2l0ZW1FZmZlY3RUeXBlNAMJAABmAAAAAgUAAAAPaXRlbUVmZmVjdFNsb3RzAAAAAAAAAAADCQEAAAAHcmFuZEludAAAAAQAAAAAAAAAAAEFAAAAEml0ZW1FZmZlY3RzQW1vdW50cwUAAAAEdHhJZAAAAAAAAAAACgAAAAAAAAAAAAQAAAAQaXRlbUVmZmVjdFZhbHVlNAMJAABmAAAAAgUAAAAPaXRlbUVmZmVjdFNsb3RzAAAAAAAAAAADCQEAAAAHcmFuZEludAAAAAQAAAAAAAAAAAEJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABRpdGVtRWZmZWN0c01heFJhbmdlcwUAAAAPaXRlbUVmZmVjdFR5cGU0BQAAAAR0eElkAAAAAAAAAAALAAAAAAAAAAAABAAAAAZpdGVtSWQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAADWtleUl0ZW1zQ291bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAATa2V5TGFzdEJhdHRsZUhlaWdodAUAAAAGY2hhcklkBQAAAAZoZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADWtleUl0ZW1zQ291bnQJAABkAAAAAgUAAAAGaXRlbUlkAAAAAAAAAAABCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAAMa2V5SXRlbU93bmVyBQAAAAZpdGVtSWQFAAAACmNhbGxlckFkZHIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAAPa2V5SXRlbUNhdGVnb3J5BQAAAAZpdGVtSWQFAAAAB2l0ZW1DYXQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAALa2V5SXRlbVR5cGUFAAAABml0ZW1JZAUAAAAIaXRlbVR5cGUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAASa2V5SXRlbUVmZmVjdFR5cGUxBQAAAAZpdGVtSWQFAAAAD2l0ZW1FZmZlY3RUeXBlMQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAABNrZXlJdGVtRWZmZWN0VmFsdWUxBQAAAAZpdGVtSWQFAAAAEGl0ZW1FZmZlY3RWYWx1ZTEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAASa2V5SXRlbUVmZmVjdFR5cGUyBQAAAAZpdGVtSWQFAAAAD2l0ZW1FZmZlY3RUeXBlMgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAABNrZXlJdGVtRWZmZWN0VmFsdWUyBQAAAAZpdGVtSWQFAAAAEGl0ZW1FZmZlY3RWYWx1ZTIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAASa2V5SXRlbUVmZmVjdFR5cGUzBQAAAAZpdGVtSWQFAAAAD2l0ZW1FZmZlY3RUeXBlMwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAABNrZXlJdGVtRWZmZWN0VmFsdWUzBQAAAAZpdGVtSWQFAAAAEGl0ZW1FZmZlY3RWYWx1ZTMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAASa2V5SXRlbUVmZmVjdFR5cGU0BQAAAAZpdGVtSWQFAAAAD2l0ZW1FZmZlY3RUeXBlNAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAABHdpdGgAAAACBQAAABNrZXlJdGVtRWZmZWN0VmFsdWU0BQAAAAZpdGVtSWQFAAAAEGl0ZW1FZmZlY3RWYWx1ZTQFAAAAA25pbAAAAAFpAQAAABZ1cGRhdGVMYXN0QmF0dGxlSGVpZ2h0AAAAAQAAAAZjaGFySWQDCQEAAAACIT0AAAACCQEAAAAOZWNvc3lzdGVtQ2hlY2sAAAABCAUAAAABaQAAAAZjYWxsZXIGCQEAAAAFdGhyb3cAAAAACQAFFAAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAR3aXRoAAAAAgUAAAATa2V5TGFzdEJhdHRsZUhlaWdodAUAAAAGY2hhcklkBQAAAAZoZWlnaHQFAAAAA25pbAUAAAAGaGVpZ2h0AAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkkXxOb", "height": 2058515, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: CpkC2rZHyT7bxghCZKwzjxWzGdJ6qKnfuhV9qK1Zq3Lx Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let separator = "_"
5+
6+let keyLastBattleHeight = "last_battle_height"
7+
8+let keyItemsCount = "items_count"
9+
10+let keyItemOwner = "item_owner"
11+
12+let keyItemCategory = "item_category"
13+
14+let keyItemType = "item_type"
15+
16+let keyItemEffectType1 = "item_effect_type_1"
17+
18+let keyItemEffectValue1 = "item_effect_value_1"
19+
20+let keyItemEffectType2 = "item_effect_type_2"
21+
22+let keyItemEffectValue2 = "item_effect_value_2"
23+
24+let keyItemEffectType3 = "item_effect_type_3"
25+
26+let keyItemEffectValue3 = "item_effect_value_3"
27+
28+let keyItemEffectType4 = "item_effect_type_4"
29+
30+let keyItemEffectValue4 = "item_effect_value_4"
31+
32+let govApp = addressFromStringValue("3MyxfwvbueUBynYHfQsutNXZNqNozGiMnsG")
33+
34+let keyEcosystemAddresses = "ecosystem_addresses"
35+
36+let keyBattleRestPeriod = "battle_rest_period"
37+
38+let keyBattleWinChanceHardcap = "battle_win_chance_hardcap"
39+
40+let keyBattleWinChanceIncrPerBlock = "battle_win_chance_incr_per_block"
41+
42+let keyBattleLootRarityRanges = "battle_loot_rarity_ranges"
43+
44+let keyCharsNaturalBattleBonusRanges = "chars_natural_battle_bonus_ranges"
45+
46+let keyItemsCategories = "items_categories"
47+
48+let keyItemsTypesPerCat = "items_types_per_cat"
49+
50+let keyItemsEffects = "items_effects"
51+
52+let keyitemsEffectsMaxRanges = "items_effects_max_range"
53+
54+let charsApp = addressFromStringValue("3NA3LRSigk6knLZ16uTzcdLNow2EQZtXTaJ")
55+
56+let keyOwner = "owner"
57+
58+let keyNaturalBattleBonus = "natural_battle_bonus"
59+
60+let landsApp = addressFromStringValue("3MxiJLrY6Qa5bSYxxSFHSG5bVV2n59x1MGn")
61+
62+func invokeChecks (callerAddr) = if ((isDataStorageUntouched(govApp) != false))
63+ then throw("Governing app not ready")
64+ else {
65+ let ecosystemAddresses = getStringValue(govApp, keyEcosystemAddresses)
66+ if ((contains(ecosystemAddresses, toString(callerAddr)) != false))
67+ then throw("Access denied")
68+ else true
69+ }
70+
71+
72+func ecosystemCheck (caller) = if ((contains(getStringValue(this, keyEcosystemAddresses), toBase58String(caller.bytes)) != true))
73+ then throw("Access denied")
74+ else true
75+
76+
77+func with (a,b) = {
78+ let c = match b {
79+ case isInt: Int =>
80+ toString(isInt)
81+ case isStr: String =>
82+ isStr
83+ case _ =>
84+ throw("Matching issue in with function")
85+ }
86+ ((c + separator) + a)
87+ }
88+
89+
90+func randInt (min,max,txId,nonce) = {
91+ let hash = value(sha256_16Kb(((value(value(blockInfoByHeight(height)).vrf) + txId) + toBytes(nonce))))
92+ value(((value(toInt(hash)) % ((max - min) + 1)) + min))
93+ }
94+
95+
96+@Callable(i)
97+func battle (charId) = if ((invokeChecks(i.caller) != true))
98+ then throw()
99+ else {
100+ let callerAddr = toBase58String(i.caller.bytes)
101+ let txId = i.transactionId
102+ if ((getStringValue(charsApp, with(keyOwner, charId)) != callerAddr))
103+ then throw("Caller doesn't own this char")
104+ else {
105+ let battleReadyHeight = (getIntegerValue(this, with(keyLastBattleHeight, charId)) + getIntegerValue(govApp, keyBattleRestPeriod))
106+ if ((battleReadyHeight > height))
107+ then throw("Still resting")
108+ else {
109+ let winChance = min([((getIntegerValue(govApp, keyBattleWinChanceIncrPerBlock) * (height - battleReadyHeight)) + getIntegerValue(charsApp, with(keyNaturalBattleBonus, charId))), getIntegerValue(govApp, keyBattleWinChanceHardcap)])
110+ if ((winChance > randInt(0, 10000, txId, 0)))
111+ then [IntegerEntry(with(keyLastBattleHeight, charId), height)]
112+ else {
113+ let itemCat = randInt(1, getIntegerValue(govApp, keyItemsCategories), txId, 1)
114+ let itemCatTypesAmount = parseIntValue(split(getStringValue(govApp, keyItemsTypesPerCat), separator)[(itemCat - 1)])
115+ let itemType = randInt(1, itemCatTypesAmount, txId, 2)
116+ let itemRarityRanges = split(getStringValue(govApp, keyBattleLootRarityRanges), separator)
117+ let itemRarity = randInt(0, 10000, txId, 3)
118+ let itemEffectSlots = if ((parseIntValue(itemRarityRanges[0]) >= itemRarity))
119+ then 1
120+ else if ((parseIntValue(itemRarityRanges[1]) >= itemRarity))
121+ then 2
122+ else if ((parseIntValue(itemRarityRanges[2]) >= itemRarity))
123+ then 3
124+ else 4
125+ let itemEffectsAmounts = getIntegerValue(govApp, keyItemsEffects)
126+ let itemEffectsMaxRanges = split(getStringValue(govApp, keyitemsEffectsMaxRanges), separator)
127+ let itemEffectType1 = randInt(1, itemEffectsAmounts, txId, 4)
128+ let itemEffectValue1 = randInt(1, parseIntValue(itemEffectsMaxRanges[itemEffectType1]), txId, 5)
129+ let itemEffectType2 = if ((itemEffectSlots > 1))
130+ then randInt(1, itemEffectsAmounts, txId, 6)
131+ else 0
132+ let itemEffectValue2 = if ((itemEffectSlots > 1))
133+ then randInt(1, parseIntValue(itemEffectsMaxRanges[itemEffectType2]), txId, 7)
134+ else 0
135+ let itemEffectType3 = if ((itemEffectSlots > 2))
136+ then randInt(1, itemEffectsAmounts, txId, 8)
137+ else 0
138+ let itemEffectValue3 = if ((itemEffectSlots > 2))
139+ then randInt(1, parseIntValue(itemEffectsMaxRanges[itemEffectType3]), txId, 9)
140+ else 0
141+ let itemEffectType4 = if ((itemEffectSlots > 3))
142+ then randInt(1, itemEffectsAmounts, txId, 10)
143+ else 0
144+ let itemEffectValue4 = if ((itemEffectSlots > 3))
145+ then randInt(1, parseIntValue(itemEffectsMaxRanges[itemEffectType4]), txId, 11)
146+ else 0
147+ let itemId = getIntegerValue(this, keyItemsCount)
148+[IntegerEntry(with(keyLastBattleHeight, charId), height), IntegerEntry(keyItemsCount, (itemId + 1)), StringEntry(with(keyItemOwner, itemId), callerAddr), IntegerEntry(with(keyItemCategory, itemId), itemCat), IntegerEntry(with(keyItemType, itemId), itemType), IntegerEntry(with(keyItemEffectType1, itemId), itemEffectType1), IntegerEntry(with(keyItemEffectValue1, itemId), itemEffectValue1), IntegerEntry(with(keyItemEffectType2, itemId), itemEffectType2), IntegerEntry(with(keyItemEffectValue2, itemId), itemEffectValue2), IntegerEntry(with(keyItemEffectType3, itemId), itemEffectType3), IntegerEntry(with(keyItemEffectValue3, itemId), itemEffectValue3), IntegerEntry(with(keyItemEffectType4, itemId), itemEffectType4), IntegerEntry(with(keyItemEffectValue4, itemId), itemEffectValue4)]
149+ }
150+ }
151+ }
152+ }
153+
154+
155+
156+@Callable(i)
157+func updateLastBattleHeight (charId) = if ((ecosystemCheck(i.caller) != true))
158+ then throw()
159+ else $Tuple2([IntegerEntry(with(keyLastBattleHeight, charId), height)], height)
160+
161+
162+@Verifier(tx)
163+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
164+

github/deemru/w8io/873ac7e 
19.14 ms