tx · EfgMatcnFzGMj47jtPVjXpEEfpb4a7HktmKR3u83MPkc 3N8iygiXd1v34PPaMSQb34SSrBwGxT2DpGK: -0.01400000 Waves 2022.08.14 21:10 [2184481] smart account 3N8iygiXd1v34PPaMSQb34SSrBwGxT2DpGK > SELF 0.00000000 Waves
{ "type": 13, "id": "EfgMatcnFzGMj47jtPVjXpEEfpb4a7HktmKR3u83MPkc", "fee": 1400000, "feeAssetId": null, "timestamp": 1660500646169, "version": 2, "chainId": 84, "sender": "3N8iygiXd1v34PPaMSQb34SSrBwGxT2DpGK", "senderPublicKey": "FshLkkgzcLs6iQJ1Z8Nnfhm494tC8xZQczf9iXpZep3Y", "proofs": [ "3ePVDjJsrCH1t9djbxAfm7daB1m62JRrF3TR1Wknt5xc6uFL7ZnRK3ujTwJQrjVNXumvyGNPo7gar8Qwbb2G8CUv" ], "script": "base64:AAIFAAAAAAAAAAYIAhIAEgAAAAAFAAAAAApCVENBc3NldElEAQAAACD0NPJEoKaVcLA62QAal819hhYdQl83FUDxF7HRh6LUlwAAAAALU0FUU0Fzc2V0SUQBAAAAIIQVHLyAa6peOQxN4R+aXTT73bjvUy7OZLsC9igQULD7AAAAABNJc3N1ZWZzVE5GZWVBZGRyZXNzCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABAQAAACBSg9mgi9eQkjsz5eBARHIbc7Hg/F4fmB0sxZ6ySMfiIAAAAAAEdHhucwQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzAgAAAAlUb3RhbHR4bnMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAAAAAAJdG90YWx0eG5zCQAAZAAAAAIFAAAABHR4bnMAAAAAAAAAAAEAAAACAAAAAWkBAAAACUlzc3VlU0FUUwAAAAAEAAAAA3BtdAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAKY3VycmVudEtleQkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAxQcmljZVBlclNBVFMJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAACFNBVFMvQlRDBAAAAA5TQVRTQ3VycmVudENhcAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAAOU0FUU0N1cnJlbnRDYXAEAAAADU5ld1NBVFNUb1VzZXIJAABrAAAAAwAAAAAAAAGGoAgFAAAAA3BtdAAAAAZhbW91bnQFAAAADFByaWNlUGVyU0FUUwQAAAASUHJldmlvdXNJc3N1ZWRTQVRTCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzAgAAABJUb3RhbF9Jc3N1ZWRfU0FUUzoEAAAAD1RvdGFsSXNzdWVkU0FUUwkAAGQAAAACBQAAABJQcmV2aW91c0lzc3VlZFNBVFMFAAAADU5ld1NBVFNUb1VzZXIEAAAADlBlbmRpbmdNaW50aW5nCQAAZQAAAAIFAAAADlNBVFNDdXJyZW50Q2FwBQAAAA9Ub3RhbElzc3VlZFNBVFMEAAAAGFByZXZpb3VzU0FUU1Jlc2VydmVWYWx1ZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAAaVG90YWxfU0FUU19SZXNlcnZlX0luX0JUQzoEAAAAA2ZlZQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzAgAAABNUb3RhbF9GZWVfQ29sbGVjdGVkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAC0ZlZXNDaGFyZ2VkAAAAAAAAAAABBAAAABBTQVRTUmVzZXJ2ZVZhbHVlCQAAZAAAAAIFAAAAGFByZXZpb3VzU0FUU1Jlc2VydmVWYWx1ZQgFAAAAA3BtdAAAAAZhbW91bnQEAAAAF1ByZXZpb3VzU0FUU0JhY2t1cFByaWNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzAgAAABlTQVRTX0JhY2t1cF9WYWx1ZV9Jbl9CVEM6BAAAAA9TQVRTQmFja3VwUHJpY2UJAABrAAAAAwAAAAAAAAGGoAUAAAAQU0FUU1Jlc2VydmVWYWx1ZQUAAAAPVG90YWxJc3N1ZWRTQVRTAwkBAAAAAiE9AAAAAggFAAAAA3BtdAAAAAdhc3NldElkBQAAAApCVENBc3NldElECQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAADBJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQsIHBsZWFzZSBhdHRhY2ggW0JUQ10gLSAJAAJYAAAAAQUAAAAKQlRDQXNzZXRJRAIAAAAGIG9ubHkuAwkAAGYAAAACAAAAAAAAABOICAUAAAADcG10AAAABmFtb3VudAkAAAIAAAABAgAAADlQbGVhc2UgQXR0YWNoIG1pbmltdW0gNTAwMCBTYXRvc2hpJ3MgVG8gSXNzdWUgU0FUUyBBc3NldC4DCQAAZgAAAAIFAAAAD1RvdGFsSXNzdWVkU0FUUwUAAAAOU0FUU0N1cnJlbnRDYXAJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAqU0FUUyBNaW50aW5nIGlzIGFib3V0IHRvIHJlYWNoIHRoZSBDYXAgb2YgCQABpAAAAAEFAAAADlNBVFNDdXJyZW50Q2FwAgAAADAvMTBeNiBTQVRTLiBQbGVhc2UgUmVkdWNlIHlvdXIgTWludGluZyBPcmRlciBieSAJAAGkAAAAAQUAAAAOUGVuZGluZ01pbnRpbmcCAAAACCBvciBwdXQgCQABpAAAAAEJAABlAAAAAgUAAAAOU0FUU0N1cnJlbnRDYXAFAAAAElByZXZpb3VzSXNzdWVkU0FUUwIAAAAFLzEwXjYJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAElRvdGFsX0lzc3VlZF9TQVRTOgUAAAAPVG90YWxJc3N1ZWRTQVRTCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABVCYWxhbmNlX01pbnRpbmdfU0FUUzoFAAAADlBlbmRpbmdNaW50aW5nCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABpUb3RhbF9TQVRTX1Jlc2VydmVfSW5fQlRDOgUAAAAQU0FUU1Jlc2VydmVWYWx1ZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAZU0FUU19CYWNrdXBfVmFsdWVfSW5fQlRDOgUAAAAPU0FUU0JhY2t1cFByaWNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABNUb3RhbF9GZWVfQ29sbGVjdGVkBQAAAAtGZWVzQ2hhcmdlZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAJVG90YWx0eG5zBQAAAAl0b3RhbHR4bnMJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAHbWVzc2FnZQIAAAAmPGgxPlNBVFMgSXNzdWVkIFN1Y2Nlc3NmdWxseSE8L2gxPjxicj4JAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADBQAAAAtTQVRTQXNzZXRJRAUAAAANTmV3U0FUU1RvVXNlcgYJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyCQAAZQAAAAIFAAAADU5ld1NBVFNUb1VzZXIFAAAAC0ZlZXNDaGFyZ2VkBQAAAAtTQVRTQXNzZXRJRAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAABNJc3N1ZWZzVE5GZWVBZGRyZXNzBQAAAAtGZWVzQ2hhcmdlZAUAAAALU0FUU0Fzc2V0SUQFAAAAA25pbAAAAAFpAQAAAAlMaXF1aWRhdGUAAAAABAAAAApjdXJyZW50S2V5CQACWAAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQQAAAADcG10CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAABJQcmV2aW91c0lzc3VlZFNBVFMJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAAElRvdGFsX0lzc3VlZF9TQVRTOgQAAAASUHJldmlvdXNCdXJuZWRTQVRTCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzAgAAABJUb3RhbF9CdXJuZWRfU0FUUzoEAAAADlNBVFNDdXJyZW50Q2FwCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzAgAAAA5TQVRTQ3VycmVudENhcAQAAAAPVG90YWxJc3N1ZWRTQVRTCQAAZQAAAAIFAAAAElByZXZpb3VzSXNzdWVkU0FUUwgFAAAAA3BtdAAAAAZhbW91bnQEAAAAD1RvdGFsQnVybmVkU0FUUwkAAGQAAAACBQAAABJQcmV2aW91c0J1cm5lZFNBVFMIBQAAAANwbXQAAAAGYW1vdW50BAAAAA5QZW5kaW5nTWludGluZwkAAGUAAAACBQAAAA5TQVRTQ3VycmVudENhcAUAAAAPVG90YWxJc3N1ZWRTQVRTBAAAABhQcmV2aW91c1NBVFNSZXNlcnZlVmFsdWUJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMCAAAAGlRvdGFsX1NBVFNfUmVzZXJ2ZV9Jbl9CVEM6BAAAABdQcmV2aW91c1NBVFNCYWNrdXBQcmljZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwIAAAAZU0FUU19CYWNrdXBfVmFsdWVfSW5fQlRDOgQAAAASY2FsY3VsYXRlYnVybnZhbHVlCQAAawAAAAMFAAAAF1ByZXZpb3VzU0FUU0JhY2t1cFByaWNlCAUAAAADcG10AAAABmFtb3VudAAAAAAAAAGGoAQAAAAQU0FUU1Jlc2VydmVWYWx1ZQkAAGUAAAACBQAAABhQcmV2aW91c1NBVFNSZXNlcnZlVmFsdWUFAAAAEmNhbGN1bGF0ZWJ1cm52YWx1ZQQAAAAPU0FUU0JhY2t1cFByaWNlCQAAawAAAAMAAAAAAAABhqAFAAAAEFNBVFNSZXNlcnZlVmFsdWUFAAAAD1RvdGFsSXNzdWVkU0FUUwMJAQAAAAIhPQAAAAIIBQAAAANwbXQAAAAHYXNzZXRJZAUAAAALU0FUU0Fzc2V0SUQJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAFEtpbmRseSBEZXBvc2l0IE9ubHkgCQACWAAAAAEFAAAAC1NBVFNBc3NldElEAgAAAAggW1NBVFNdLgMJAABmAAAAAgAAAAAAAAATiAgFAAAAA3BtdAAAAAZhbW91bnQJAAACAAAAAQIAAAAtQXR0YWNoIEFtb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiA1MDAwIFNBVFMuCQAETAAAAAIJAQAAAARCdXJuAAAAAgUAAAALU0FUU0Fzc2V0SUQIBQAAAANwbXQAAAAGYW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAlUb3RhbHR4bnMFAAAACXRvdGFsdHhucwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAASVG90YWxfSXNzdWVkX1NBVFM6BQAAAA9Ub3RhbElzc3VlZFNBVFMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAElRvdGFsX0J1cm5lZF9TQVRTOgUAAAAPVG90YWxCdXJuZWRTQVRTCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABVCYWxhbmNlX01pbnRpbmdfU0FUUzoFAAAADlBlbmRpbmdNaW50aW5nCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABpUb3RhbF9TQVRTX1Jlc2VydmVfSW5fQlRDOgUAAAAQU0FUU1Jlc2VydmVWYWx1ZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAZU0FUU19CYWNrdXBfVmFsdWVfSW5fQlRDOgUAAAAPU0FUU0JhY2t1cFByaWNlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAAB21lc3NhZ2UCAAAAKjxoMT5TQVRTIExpcXVpZGF0ZWQgU3VjY2Vzc2Z1bGx5ITwvaDE+PGJyPgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAEmNhbGN1bGF0ZWJ1cm52YWx1ZQUAAAAKQlRDQXNzZXRJRAUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAAHJG1hdGNoMAUAAAACdHgJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5d8FD3w==", "height": 2184481, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GPTiidx2B6mLzzuvioxeWUVa8MWjGKhvuHiiUD5Hfn5s Next: GDacafw1jT8v461WPFqHuqXsqLLYGjxswE3NuhpYjFT4 Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let BTCAssetID = base58' | |
4 | + | let BTCAssetID = base58'HSHJecCLGF7DEPA23dJe6WwroaLeDnik5eptjxEJYvwY' | |
5 | 5 | ||
6 | - | let SATSAssetID = base58' | |
6 | + | let SATSAssetID = base58'9tbVJFXNxWGtZefTnuH9yojcYEPHwXGxhDvY4UK4qf2z' | |
7 | 7 | ||
8 | 8 | let IssuefsTNFeeAddress = addressFromPublicKey(base58'6Z73KxcX3sugpiStpSRXxKxTmWqCaLVwFeM6kwyiKVDR') | |
9 | 9 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let BTCAssetID = base58' | |
4 | + | let BTCAssetID = base58'HSHJecCLGF7DEPA23dJe6WwroaLeDnik5eptjxEJYvwY' | |
5 | 5 | ||
6 | - | let SATSAssetID = base58' | |
6 | + | let SATSAssetID = base58'9tbVJFXNxWGtZefTnuH9yojcYEPHwXGxhDvY4UK4qf2z' | |
7 | 7 | ||
8 | 8 | let IssuefsTNFeeAddress = addressFromPublicKey(base58'6Z73KxcX3sugpiStpSRXxKxTmWqCaLVwFeM6kwyiKVDR') | |
9 | 9 | ||
10 | 10 | let txns = match getInteger(this, "Totaltxns") { | |
11 | 11 | case a: Int => | |
12 | 12 | a | |
13 | 13 | case _ => | |
14 | 14 | 0 | |
15 | 15 | } | |
16 | 16 | ||
17 | 17 | let totaltxns = (txns + 1) | |
18 | 18 | ||
19 | 19 | @Callable(i) | |
20 | 20 | func IssueSATS () = { | |
21 | 21 | let pmt = value(i.payments[0]) | |
22 | 22 | let currentKey = toBase58String(i.caller.bytes) | |
23 | 23 | let PricePerSATS = getIntegerValue(this, "SATS/BTC") | |
24 | 24 | let SATSCurrentCap = getIntegerValue(this, "SATSCurrentCap") | |
25 | 25 | let NewSATSToUser = fraction(100000, pmt.amount, PricePerSATS) | |
26 | 26 | let PreviousIssuedSATS = getIntegerValue(this, "Total_Issued_SATS:") | |
27 | 27 | let TotalIssuedSATS = (PreviousIssuedSATS + NewSATSToUser) | |
28 | 28 | let PendingMinting = (SATSCurrentCap - TotalIssuedSATS) | |
29 | 29 | let PreviousSATSReserveValue = getIntegerValue(this, "Total_SATS_Reserve_In_BTC:") | |
30 | 30 | let fee = match getInteger(this, "Total_Fee_Collected") { | |
31 | 31 | case a: Int => | |
32 | 32 | a | |
33 | 33 | case _ => | |
34 | 34 | 0 | |
35 | 35 | } | |
36 | 36 | let FeesCharged = 1 | |
37 | 37 | let SATSReserveValue = (PreviousSATSReserveValue + pmt.amount) | |
38 | 38 | let PreviousSATSBackupPrice = getIntegerValue(this, "SATS_Backup_Value_In_BTC:") | |
39 | 39 | let SATSBackupPrice = fraction(100000, SATSReserveValue, TotalIssuedSATS) | |
40 | 40 | if ((pmt.assetId != BTCAssetID)) | |
41 | 41 | then throw((("Incorrect asset attached, please attach [BTC] - " + toBase58String(BTCAssetID)) + " only.")) | |
42 | 42 | else if ((5000 > pmt.amount)) | |
43 | 43 | then throw("Please Attach minimum 5000 Satoshi's To Issue SATS Asset.") | |
44 | 44 | else if ((TotalIssuedSATS > SATSCurrentCap)) | |
45 | 45 | then throw((((((("SATS Minting is about to reach the Cap of " + toString(SATSCurrentCap)) + "/10^6 SATS. Please Reduce your Minting Order by ") + toString(PendingMinting)) + " or put ") + toString((SATSCurrentCap - PreviousIssuedSATS))) + "/10^6")) | |
46 | 46 | else [IntegerEntry("Total_Issued_SATS:", TotalIssuedSATS), IntegerEntry("Balance_Minting_SATS:", PendingMinting), IntegerEntry("Total_SATS_Reserve_In_BTC:", SATSReserveValue), IntegerEntry("SATS_Backup_Value_In_BTC:", SATSBackupPrice), IntegerEntry("Total_Fee_Collected", FeesCharged), IntegerEntry("Totaltxns", totaltxns), StringEntry("message", "<h1>SATS Issued Successfully!</h1><br>"), Reissue(SATSAssetID, NewSATSToUser, true), ScriptTransfer(i.caller, (NewSATSToUser - FeesCharged), SATSAssetID), ScriptTransfer(IssuefsTNFeeAddress, FeesCharged, SATSAssetID)] | |
47 | 47 | } | |
48 | 48 | ||
49 | 49 | ||
50 | 50 | ||
51 | 51 | @Callable(i) | |
52 | 52 | func Liquidate () = { | |
53 | 53 | let currentKey = toBase58String(i.callerPublicKey) | |
54 | 54 | let pmt = value(i.payments[0]) | |
55 | 55 | let PreviousIssuedSATS = getIntegerValue(this, "Total_Issued_SATS:") | |
56 | 56 | let PreviousBurnedSATS = getIntegerValue(this, "Total_Burned_SATS:") | |
57 | 57 | let SATSCurrentCap = getIntegerValue(this, "SATSCurrentCap") | |
58 | 58 | let TotalIssuedSATS = (PreviousIssuedSATS - pmt.amount) | |
59 | 59 | let TotalBurnedSATS = (PreviousBurnedSATS + pmt.amount) | |
60 | 60 | let PendingMinting = (SATSCurrentCap - TotalIssuedSATS) | |
61 | 61 | let PreviousSATSReserveValue = getIntegerValue(this, "Total_SATS_Reserve_In_BTC:") | |
62 | 62 | let PreviousSATSBackupPrice = getIntegerValue(this, "SATS_Backup_Value_In_BTC:") | |
63 | 63 | let calculateburnvalue = fraction(PreviousSATSBackupPrice, pmt.amount, 100000) | |
64 | 64 | let SATSReserveValue = (PreviousSATSReserveValue - calculateburnvalue) | |
65 | 65 | let SATSBackupPrice = fraction(100000, SATSReserveValue, TotalIssuedSATS) | |
66 | 66 | if ((pmt.assetId != SATSAssetID)) | |
67 | 67 | then throw((("Kindly Deposit Only " + toBase58String(SATSAssetID)) + " [SATS].")) | |
68 | 68 | else if ((5000 > pmt.amount)) | |
69 | 69 | then throw("Attach Amount must be greater than 5000 SATS.") | |
70 | 70 | else [Burn(SATSAssetID, pmt.amount), IntegerEntry("Totaltxns", totaltxns), IntegerEntry("Total_Issued_SATS:", TotalIssuedSATS), IntegerEntry("Total_Burned_SATS:", TotalBurnedSATS), IntegerEntry("Balance_Minting_SATS:", PendingMinting), IntegerEntry("Total_SATS_Reserve_In_BTC:", SATSReserveValue), IntegerEntry("SATS_Backup_Value_In_BTC:", SATSBackupPrice), StringEntry("message", "<h1>SATS Liquidated Successfully!</h1><br>"), ScriptTransfer(i.caller, calculateburnvalue, BTCAssetID)] | |
71 | 71 | } | |
72 | 72 | ||
73 | 73 | ||
74 | 74 | @Verifier(tx) | |
75 | 75 | func verify () = match tx { | |
76 | 76 | case _ => | |
77 | 77 | sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
78 | 78 | } | |
79 | 79 |
github/deemru/w8io/169f3d6 33.51 ms ◑![]()