tx · 3EkWVLxCyv7nZ5cY3GPJsqTUodzdYsD61AY3FN76aeZc

3N61RYWc9QuqKUwLvowpZZLpgUnqpQSFwLq:  -0.01200000 Waves

2024.03.09 14:25 [3010438] smart account 3N61RYWc9QuqKUwLvowpZZLpgUnqpQSFwLq > SELF 0.00000000 Waves

{ "type": 13, "id": "3EkWVLxCyv7nZ5cY3GPJsqTUodzdYsD61AY3FN76aeZc", "fee": 1200000, "feeAssetId": null, "timestamp": 1709983548705, "version": 2, "chainId": 84, "sender": "3N61RYWc9QuqKUwLvowpZZLpgUnqpQSFwLq", "senderPublicKey": "HdwFH8HPYu3HG27yK6bszu1CdR4uik4HgzyTimeSfcYf", "proofs": [ "5t7ni53pLRAwmmuJ3QyEva3A8qVQyZicQvdDJjycADLxAcb9NjtC5yBf9EPiLVfvuvDUhhBHDfMS3m9N46ExXNA7" ], "script": "base64:BgITCAISABIDCgEBEgMKAQgSAwoBBBIAEGFtb3VudEFzc2V0SWRLZXkCDWFtb3VudEFzc2V0SWQAD3ByaWNlQXNzZXRJZEtleQIMcHJpY2VBc3NldElkAApmZWVSYXRlS2V5AgdmZWVSYXRlAAxmb3JjZVN0b3BLZXkCCWZvcmNlU3RvcAEKZ2V0QXNzZXRJZAENYXNzZXRJZFN0cmluZwMJAAACBQ1hc3NldElkU3RyaW5nAgVXQVZFUwUEdW5pdAkA2QQBBQ1hc3NldElkU3RyaW5nAQ9nZXRBc3NldEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAJAPAHAgUEdGhpcwUCaWQICQDvBwEFBHRoaXMJYXZhaWxhYmxlABNhbW91bnRBc3NldElkU3RyaW5nCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBRBhbW91bnRBc3NldElkS2V5AA1hbW91bnRBc3NldElkCQEKZ2V0QXNzZXRJZAEFE2Ftb3VudEFzc2V0SWRTdHJpbmcAEnByaWNlQXNzZXRJZFN0cmluZwkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUPcHJpY2VBc3NldElkS2V5AAxwcmljZUFzc2V0SWQJAQpnZXRBc3NldElkAQUScHJpY2VBc3NldElkU3RyaW5nAAZTQ0FMRTgAgMLXLwAHZmVlUmF0ZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQpmZWVSYXRlS2V5AMCaDAAOaXNGb3JjZVN0b3BwZWQJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUMZm9yY2VTdG9wS2V5BwEJY2FsY1ByaWNlAAkAawMJAQ9nZXRBc3NldEJhbGFuY2UBBQxwcmljZUFzc2V0SWQFBlNDQUxFOAkBD2dldEFzc2V0QmFsYW5jZQEFDWFtb3VudEFzc2V0SWQBEWNhbGNSYXdTZW5kQW1vdW50AxFhc3NldDFJbml0QmFsYW5jZRFhc3NldDJJbml0QmFsYW5jZRNhc3NldDJQYXltZW50QW1vdW50BBBuZXdBc3NldDJCYWxhbmNlCQBkAgURYXNzZXQySW5pdEJhbGFuY2UFE2Fzc2V0MlBheW1lbnRBbW91bnQEEG5ld0Fzc2V0MUJhbGFuY2UJAGsDBRFhc3NldDFJbml0QmFsYW5jZQURYXNzZXQySW5pdEJhbGFuY2UFEG5ld0Fzc2V0MkJhbGFuY2UECnNlbmRBbW91bnQJAGUCBRFhc3NldDFJbml0QmFsYW5jZQUQbmV3QXNzZXQxQmFsYW5jZQUKc2VuZEFtb3VudAEOY2FsY1NlbmRBbW91bnQDDnBheW1lbnRBc3NldElkDXBheW1lbnRBbW91bnQIcmVhZG9ubHkECyR0MDE1NTUxNzE1AwkAAAIFDnBheW1lbnRBc3NldElkBQ1hbW91bnRBc3NldElkCQCUCgIFDHByaWNlQXNzZXRJZAUNYW1vdW50QXNzZXRJZAkAlAoCBQ1hbW91bnRBc3NldElkBQxwcmljZUFzc2V0SWQEDWFzc2V0MUFzc2V0SWQIBQskdDAxNTU1MTcxNQJfMQQNYXNzZXQyQXNzZXRJZAgFCyR0MDE1NTUxNzE1Al8yBBFhc3NldDFJbml0QmFsYW5jZQkBD2dldEFzc2V0QmFsYW5jZQEFDWFzc2V0MUFzc2V0SWQEEWFzc2V0MkluaXRCYWxhbmNlCQBlAgkBD2dldEFzc2V0QmFsYW5jZQEFDWFzc2V0MkFzc2V0SWQDBQhyZWFkb25seQAABQ1wYXltZW50QW1vdW50BA1yYXdTZW5kQW1vdW50CQERY2FsY1Jhd1NlbmRBbW91bnQDBRFhc3NldDFJbml0QmFsYW5jZQURYXNzZXQySW5pdEJhbGFuY2UFDXBheW1lbnRBbW91bnQECWZlZUFtb3VudAkAawMFDXJhd1NlbmRBbW91bnQFB2ZlZVJhdGUFBlNDQUxFOAQKc2VuZEFtb3VudAkAZQIFDXJhd1NlbmRBbW91bnQFCWZlZUFtb3VudAQNdXNlclJlYWxQcmljZQMJAAACBQ5wYXltZW50QXNzZXRJZAUNYW1vdW50QXNzZXRJZAkAawMFCnNlbmRBbW91bnQFBlNDQUxFOAUNcGF5bWVudEFtb3VudAkAawMFDXBheW1lbnRBbW91bnQFBlNDQUxFOAUKc2VuZEFtb3VudAkAlgoEBQpzZW5kQW1vdW50BQlmZWVBbW91bnQFDWFzc2V0MUFzc2V0SWQFDXVzZXJSZWFsUHJpY2UBDHN3YXBJbnRlcm5hbAIHYWRkcmVzcwFpBAZjaGVja3MJAMwIAgMJAQEhAQUOaXNGb3JjZVN0b3BwZWQGCQACAQIdY29udHJhY3QgaXMgdGVtcG9yYXJ5IHN0b3BwZWQJAMwIAgMJAGYCCQCQAwEIBQFpCHBheW1lbnRzAAAGCQACAQIYc2hvdWxkIGJlIHdpdGggMSBwYXltZW50CQDMCAIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQ1hbW91bnRBc3NldElkCQDMCAIFDHByaWNlQXNzZXRJZAUDbmlsCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQGCQACAQkAuQkCCQDMCAICGXBheW1lbnQgYXNzZXRJZCBzaG91bGQgYmUJAMwIAgUTYW1vdW50QXNzZXRJZFN0cmluZwkAzAgCAgJvcgkAzAgCBRJwcmljZUFzc2V0SWRTdHJpbmcFA25pbAIBIAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBA5wYXltZW50QXNzZXRJZAgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBA1wYXltZW50QW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQLJHQwMjgzMjI5NDIJAQ5jYWxjU2VuZEFtb3VudAMFDnBheW1lbnRBc3NldElkBQ1wYXltZW50QW1vdW50BwQKc2VuZEFtb3VudAgFCyR0MDI4MzIyOTQyAl8xBAlmZWVBbW91bnQIBQskdDAyODMyMjk0MgJfMgQLc2VuZEFzc2V0SWQIBQskdDAyODMyMjk0MgJfMwQNdXNlclJlYWxQcmljZQgFCyR0MDI4MzIyOTQyAl80BAtzZW5kQWN0aW9ucwMJAGYCBQlmZWVBbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQdhZGRyZXNzBQpzZW5kQW1vdW50BQtzZW5kQXNzZXRJZAUDbmlsCQACAQIRYW1vdW50IGlzIHRvbyBsb3cJAJQKAgULc2VuZEFjdGlvbnMJAJYKBAUKc2VuZEFtb3VudAUJZmVlQW1vdW50BQtzZW5kQXNzZXRJZAUNdXNlclJlYWxQcmljZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEWY2FsY1NlbmRBbW91bnRSRUFET05MWQIScGF5bWVudEFzc2V0U3RyaW5nDXBheW1lbnRBbW91bnQECyR0MDMyNzQzMzk4CQEOY2FsY1NlbmRBbW91bnQDCQEKZ2V0QXNzZXRJZAEFEnBheW1lbnRBc3NldFN0cmluZwUNcGF5bWVudEFtb3VudAYECnNlbmRBbW91bnQIBQskdDAzMjc0MzM5OAJfMQQJZmVlQW1vdW50CAULJHQwMzI3NDMzOTgCXzIECWFtQXNzZXRJZAgFCyR0MDMyNzQzMzk4Al8zBA11c2VyUmVhbFByaWNlCAULJHQwMzI3NDMzOTgCXzQJAJUKAwUKc2VuZEFtb3VudAUNdXNlclJlYWxQcmljZQUJYW1Bc3NldElkBAFpAQRzd2FwAAkBDHN3YXBJbnRlcm5hbAIIBQFpBmNhbGxlcgUBaQFpAQpzd2FwTm9MZXNzAQltaW5BbW91bnQECyR0MDM1ODAzNjMyCQEMc3dhcEludGVybmFsAggFAWkGY2FsbGVyBQFpBAtzZW5kQWN0aW9ucwgFCyR0MDM1ODAzNjMyAl8xBAV0dXBsZQgFCyR0MDM1ODAzNjMyAl8yBAskdDAzNjM3MzcwMAUFdHVwbGUECnNlbmRBbW91bnQIBQskdDAzNjM3MzcwMAJfMQQJZmVlQW1vdW50CAULJHQwMzYzNzM3MDACXzIEC3NlbmRBc3NldElkCAULJHQwMzYzNzM3MDACXzMEDXVzZXJSZWFsUHJpY2UIBQskdDAzNjM3MzcwMAJfNAMJAGYCBQltaW5BbW91bnQFCnNlbmRBbW91bnQJAAIBCQC5CQIJAMwIAgIaUHJpY2Ugc2xpcHBlZC4gbWluQW1vdW50OiAJAMwIAgkApAMBBQltaW5BbW91bnQJAMwIAgINIHN3YXBBbW91bnQ6IAkAzAgCCQCkAwEFCnNlbmRBbW91bnQFA25pbAIACQCUCgIFC3NlbmRBY3Rpb25zBQV0dXBsZQFpAQdzd2FwRm9yAQdhZGRyZXNzCQEMc3dhcEludGVybmFsAgkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwUBaQFpAQlmb3JjZVN0b3ABCHN0b3BGbGFnBAZjaGVja3MJAMwIAgMJAAACCAUBaQZjYWxsZXIFBHRoaXMGCQACAQIRcGVybWlzc2lvbiBkZW5pZWQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwkAzAgCCQEMQm9vbGVhbkVudHJ5AgUMZm9yY2VTdG9wS2V5BQhzdG9wRmxhZwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAEsw0ho=", "height": 3010438, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HhD2BVD5Nrzp9NkMnioivX7qSq4THeTBajYR1mXwDVQZ Next: none Diff:
OldNewDifferences
77
88 let c = "feeRate"
99
10-func d (e) = if ((e == "WAVES"))
10+let d = "forceStop"
11+
12+func e (f) = if ((f == "WAVES"))
1113 then unit
12- else fromBase58String(e)
14+ else fromBase58String(f)
1315
1416
15-func f (g) = {
16- let h = g
17- if ($isInstanceOf(h, "ByteVector"))
17+func g (h) = {
18+ let i = h
19+ if ($isInstanceOf(i, "ByteVector"))
1820 then {
19- let i = h
20- assetBalance(this, i)
21+ let j = i
22+ assetBalance(this, j)
2123 }
2224 else wavesBalance(this).available
2325 }
2426
2527
26-let j = getStringValue(this, a)
28+let k = getStringValue(this, a)
2729
28-let k = d(j)
30+let l = e(k)
2931
30-let l = getStringValue(this, b)
32+let m = getStringValue(this, b)
3133
32-let m = d(l)
34+let n = e(m)
3335
34-let n = 100000000
36+let o = 100000000
3537
36-let o = valueOrElse(getInteger(this, c), 200000)
38+let p = valueOrElse(getInteger(this, c), 200000)
3739
38-func p () = fraction(f(m), n, f(k))
40+let q = valueOrElse(getBoolean(this, d), false)
41+
42+func r () = fraction(g(n), o, g(l))
3943
4044
41-func q (r,s,t) = {
42- let u = (s + t)
43- let v = fraction(r, s, u)
44- let w = (r - v)
45- w
45+func s (t,u,v) = {
46+ let w = (u + v)
47+ let x = fraction(t, u, w)
48+ let y = (t - x)
49+ y
4650 }
4751
4852
49-func x (y,t,z) = {
50- let A = if ((y == k))
51- then $Tuple2(m, k)
52- else $Tuple2(k, m)
53- let B = A._1
54- let C = A._2
55- let r = f(B)
56- let s = (f(C) - (if (z)
53+func z (A,B,C) = {
54+ let D = if ((A == l))
55+ then $Tuple2(n, l)
56+ else $Tuple2(l, n)
57+ let E = D._1
58+ let F = D._2
59+ let t = g(E)
60+ let u = (g(F) - (if (C)
5761 then 0
58- else t))
59- let D = q(r, s, t)
60- let E = fraction(D, o, n)
61- let w = (D - E)
62- let F = if ((y == k))
63- then fraction(w, n, t)
64- else fraction(t, n, w)
65- $Tuple4(w, E, B, F)
62+ else B))
63+ let G = s(t, u, B)
64+ let H = fraction(G, p, o)
65+ let y = (G - H)
66+ let I = if ((A == l))
67+ then fraction(y, o, B)
68+ else fraction(B, o, y)
69+ $Tuple4(y, H, E, I)
6670 }
6771
6872
69-func G (H,I) = {
70- let J = [if ((size(I.payments) > 0))
73+func J (K,L) = {
74+ let M = [if (!(q))
7175 then true
72- else throw("should be with 1 payment"), if (containsElement([k, m], I.payments[0].assetId))
76+ else throw("contract is temporary stopped"), if ((size(L.payments) > 0))
7377 then true
74- else throw(makeString(["payment assetId should be", j, "or", l], " "))]
75- if ((J == J))
78+ else throw("should be with 1 payment"), if (containsElement([l, n], L.payments[0].assetId))
79+ then true
80+ else throw(makeString(["payment assetId should be", k, "or", m], " "))]
81+ if ((M == M))
7682 then {
77- let y = I.payments[0].assetId
78- let t = I.payments[0].amount
79- let K = x(y, t, false)
80- let w = K._1
81- let E = K._2
82- let L = K._3
83- let F = K._4
84- let M = if ((E > 0))
85- then [ScriptTransfer(H, w, L)]
83+ let A = L.payments[0].assetId
84+ let B = L.payments[0].amount
85+ let N = z(A, B, false)
86+ let y = N._1
87+ let H = N._2
88+ let O = N._3
89+ let I = N._4
90+ let P = if ((H > 0))
91+ then [ScriptTransfer(K, y, O)]
8692 else throw("amount is too low")
87- $Tuple2(M, $Tuple4(w, E, L, F))
93+ $Tuple2(P, $Tuple4(y, H, O, I))
8894 }
8995 else throw("Strict value is not equal to itself.")
9096 }
9197
9298
93-func N (O,t) = {
94- let P = x(d(O), t, true)
95- let w = P._1
96- let E = P._2
97- let B = P._3
98- let F = P._4
99- $Tuple3(w, F, B)
99+func Q (R,B) = {
100+ let S = z(e(R), B, true)
101+ let y = S._1
102+ let H = S._2
103+ let T = S._3
104+ let I = S._4
105+ $Tuple3(y, I, T)
100106 }
101107
102108
103-@Callable(I)
104-func swap () = G(I.caller, I)
109+@Callable(L)
110+func swap () = J(L.caller, L)
105111
106112
107113
108-@Callable(I)
109-func swapNoLess (Q) = {
110- let R = G(I.caller, I)
111- let M = R._1
112- let S = R._2
113- let T = S
114- let w = T._1
115- let E = T._2
116- let L = T._3
117- let F = T._4
118- if ((Q > w))
119- then throw(makeString(["Price slipped. minAmount: ", toString(Q), " swapAmount: ", toString(w)], ""))
120- else $Tuple2(M, S)
114+@Callable(L)
115+func swapNoLess (U) = {
116+ let V = J(L.caller, L)
117+ let P = V._1
118+ let W = V._2
119+ let X = W
120+ let y = X._1
121+ let H = X._2
122+ let O = X._3
123+ let I = X._4
124+ if ((U > y))
125+ then throw(makeString(["Price slipped. minAmount: ", toString(U), " swapAmount: ", toString(y)], ""))
126+ else $Tuple2(P, W)
121127 }
122128
123129
124130
125-@Callable(I)
126-func swapFor (H) = G(addressFromStringValue(H), I)
131+@Callable(L)
132+func swapFor (K) = J(addressFromStringValue(K), L)
133+
134+
135+
136+@Callable(L)
137+func forceStop (Y) = {
138+ let M = [if ((L.caller == this))
139+ then true
140+ else throw("permission denied")]
141+ if ((M == M))
142+ then [BooleanEntry(d, Y)]
143+ else throw("Strict value is not equal to itself.")
144+ }
127145
128146
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "amountAssetId"
55
66 let b = "priceAssetId"
77
88 let c = "feeRate"
99
10-func d (e) = if ((e == "WAVES"))
10+let d = "forceStop"
11+
12+func e (f) = if ((f == "WAVES"))
1113 then unit
12- else fromBase58String(e)
14+ else fromBase58String(f)
1315
1416
15-func f (g) = {
16- let h = g
17- if ($isInstanceOf(h, "ByteVector"))
17+func g (h) = {
18+ let i = h
19+ if ($isInstanceOf(i, "ByteVector"))
1820 then {
19- let i = h
20- assetBalance(this, i)
21+ let j = i
22+ assetBalance(this, j)
2123 }
2224 else wavesBalance(this).available
2325 }
2426
2527
26-let j = getStringValue(this, a)
28+let k = getStringValue(this, a)
2729
28-let k = d(j)
30+let l = e(k)
2931
30-let l = getStringValue(this, b)
32+let m = getStringValue(this, b)
3133
32-let m = d(l)
34+let n = e(m)
3335
34-let n = 100000000
36+let o = 100000000
3537
36-let o = valueOrElse(getInteger(this, c), 200000)
38+let p = valueOrElse(getInteger(this, c), 200000)
3739
38-func p () = fraction(f(m), n, f(k))
40+let q = valueOrElse(getBoolean(this, d), false)
41+
42+func r () = fraction(g(n), o, g(l))
3943
4044
41-func q (r,s,t) = {
42- let u = (s + t)
43- let v = fraction(r, s, u)
44- let w = (r - v)
45- w
45+func s (t,u,v) = {
46+ let w = (u + v)
47+ let x = fraction(t, u, w)
48+ let y = (t - x)
49+ y
4650 }
4751
4852
49-func x (y,t,z) = {
50- let A = if ((y == k))
51- then $Tuple2(m, k)
52- else $Tuple2(k, m)
53- let B = A._1
54- let C = A._2
55- let r = f(B)
56- let s = (f(C) - (if (z)
53+func z (A,B,C) = {
54+ let D = if ((A == l))
55+ then $Tuple2(n, l)
56+ else $Tuple2(l, n)
57+ let E = D._1
58+ let F = D._2
59+ let t = g(E)
60+ let u = (g(F) - (if (C)
5761 then 0
58- else t))
59- let D = q(r, s, t)
60- let E = fraction(D, o, n)
61- let w = (D - E)
62- let F = if ((y == k))
63- then fraction(w, n, t)
64- else fraction(t, n, w)
65- $Tuple4(w, E, B, F)
62+ else B))
63+ let G = s(t, u, B)
64+ let H = fraction(G, p, o)
65+ let y = (G - H)
66+ let I = if ((A == l))
67+ then fraction(y, o, B)
68+ else fraction(B, o, y)
69+ $Tuple4(y, H, E, I)
6670 }
6771
6872
69-func G (H,I) = {
70- let J = [if ((size(I.payments) > 0))
73+func J (K,L) = {
74+ let M = [if (!(q))
7175 then true
72- else throw("should be with 1 payment"), if (containsElement([k, m], I.payments[0].assetId))
76+ else throw("contract is temporary stopped"), if ((size(L.payments) > 0))
7377 then true
74- else throw(makeString(["payment assetId should be", j, "or", l], " "))]
75- if ((J == J))
78+ else throw("should be with 1 payment"), if (containsElement([l, n], L.payments[0].assetId))
79+ then true
80+ else throw(makeString(["payment assetId should be", k, "or", m], " "))]
81+ if ((M == M))
7682 then {
77- let y = I.payments[0].assetId
78- let t = I.payments[0].amount
79- let K = x(y, t, false)
80- let w = K._1
81- let E = K._2
82- let L = K._3
83- let F = K._4
84- let M = if ((E > 0))
85- then [ScriptTransfer(H, w, L)]
83+ let A = L.payments[0].assetId
84+ let B = L.payments[0].amount
85+ let N = z(A, B, false)
86+ let y = N._1
87+ let H = N._2
88+ let O = N._3
89+ let I = N._4
90+ let P = if ((H > 0))
91+ then [ScriptTransfer(K, y, O)]
8692 else throw("amount is too low")
87- $Tuple2(M, $Tuple4(w, E, L, F))
93+ $Tuple2(P, $Tuple4(y, H, O, I))
8894 }
8995 else throw("Strict value is not equal to itself.")
9096 }
9197
9298
93-func N (O,t) = {
94- let P = x(d(O), t, true)
95- let w = P._1
96- let E = P._2
97- let B = P._3
98- let F = P._4
99- $Tuple3(w, F, B)
99+func Q (R,B) = {
100+ let S = z(e(R), B, true)
101+ let y = S._1
102+ let H = S._2
103+ let T = S._3
104+ let I = S._4
105+ $Tuple3(y, I, T)
100106 }
101107
102108
103-@Callable(I)
104-func swap () = G(I.caller, I)
109+@Callable(L)
110+func swap () = J(L.caller, L)
105111
106112
107113
108-@Callable(I)
109-func swapNoLess (Q) = {
110- let R = G(I.caller, I)
111- let M = R._1
112- let S = R._2
113- let T = S
114- let w = T._1
115- let E = T._2
116- let L = T._3
117- let F = T._4
118- if ((Q > w))
119- then throw(makeString(["Price slipped. minAmount: ", toString(Q), " swapAmount: ", toString(w)], ""))
120- else $Tuple2(M, S)
114+@Callable(L)
115+func swapNoLess (U) = {
116+ let V = J(L.caller, L)
117+ let P = V._1
118+ let W = V._2
119+ let X = W
120+ let y = X._1
121+ let H = X._2
122+ let O = X._3
123+ let I = X._4
124+ if ((U > y))
125+ then throw(makeString(["Price slipped. minAmount: ", toString(U), " swapAmount: ", toString(y)], ""))
126+ else $Tuple2(P, W)
121127 }
122128
123129
124130
125-@Callable(I)
126-func swapFor (H) = G(addressFromStringValue(H), I)
131+@Callable(L)
132+func swapFor (K) = J(addressFromStringValue(K), L)
133+
134+
135+
136+@Callable(L)
137+func forceStop (Y) = {
138+ let M = [if ((L.caller == this))
139+ then true
140+ else throw("permission denied")]
141+ if ((M == M))
142+ then [BooleanEntry(d, Y)]
143+ else throw("Strict value is not equal to itself.")
144+ }
127145
128146

github/deemru/w8io/169f3d6 
63.37 ms