From a4ab86bdf06341fd758e05f9429e412b1f8dbafb Mon Sep 17 00:00:00 2001 From: Jorge Silva Date: Thu, 13 Jun 2024 14:36:41 +0100 Subject: [PATCH 1/8] fix: ERC721NFTs return error when NFT does not exist --- packages/vm/core/evm/iscmagic/ERC721NFTs.sol | 37 +++++++++++++------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/packages/vm/core/evm/iscmagic/ERC721NFTs.sol b/packages/vm/core/evm/iscmagic/ERC721NFTs.sol index 1ed55522a0..d482cd1274 100644 --- a/packages/vm/core/evm/iscmagic/ERC721NFTs.sol +++ b/packages/vm/core/evm/iscmagic/ERC721NFTs.sol @@ -24,7 +24,7 @@ contract ERC721NFTs { /** * @dev Emitted when a token is transferred from one address to another. - * + * * @param from The address transferring the token. * @param to The address receiving the token. * @param tokenId The ID of the token being transferred. @@ -37,7 +37,7 @@ contract ERC721NFTs { /** * @dev Emitted when the approval of a token is changed or reaffirmed. - * + * * @param owner The owner of the token. * @param approved The new approved address. * @param tokenId The ID of the token. @@ -50,7 +50,7 @@ contract ERC721NFTs { /** * @dev Emitted when operator gets the allowance from owner. - * + * * @param owner The owner of the token. * @param operator The operator to get the approval. * @param approved True if the operator got approval, false if not. @@ -91,23 +91,32 @@ contract ERC721NFTs { * @return The address of the owner of the token. */ function ownerOf(uint256 tokenId) public view returns (address) { - ISCNFT memory nft = __iscSandbox.getNFTData(tokenId.asNFTID()); - require(nft.owner.isEthereum()); - require(_isManagedByThisContract(nft)); - return nft.owner.ethAddress(); + try __iscSandbox.getNFTData(tokenId.asNFTID()) returns ( + ISCNFT memory nft + ) { + require(nft.owner.isEthereum()); + require(_isManagedByThisContract(nft)); + return nft.owner.ethAddress(); + } catch { + revert("ERC721NonexistentToken"); + } + } + + function _requireNftExists(uint256 tokenId) internal view { + ownerOf(tokenId); // ownderOf will revert if the NFT does not exist } /** * @dev Safely transfers an ERC721 token from one address to another. - * + * * Emits a `Transfer` event. - * + * * Requirements: * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - The token must exist and be owned by `from`. * - If `to` is a smart contract, it must implement the `onERC721Received` function and return the magic value. - * + * * @param from The address to transfer the token from. * @param to The address to transfer the token to. * @param tokenId The ID of the token to be transferred. @@ -125,14 +134,14 @@ contract ERC721NFTs { /** * @dev Safely transfers an ERC721 token from one address to another. - * + * * Emits a `Transfer` event. - * + * * Requirements: * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - The caller must own the token or be approved for it. - * + * * @param from The address to transfer the token from. * @param to The address to transfer the token to. * @param tokenId The ID of the token to be transferred. @@ -197,6 +206,7 @@ contract ERC721NFTs { * @return The address approved to transfer the ownership of the token. */ function getApproved(uint256 tokenId) public view returns (address) { + _requireNftExists(tokenId); return _tokenApprovals[tokenId]; } @@ -301,6 +311,7 @@ contract ERC721NFTs { } function tokenURI(uint256 tokenId) external view returns (string memory) { + _requireNftExists(tokenId); IRC27NFT memory nft = __iscSandbox.getIRC27NFTData(tokenId.asNFTID()); require(_isManagedByThisContract(nft.nft)); return nft.metadata.uri; From a13cc12d8bf757b5c37b442a72569d1989c4f3be Mon Sep 17 00:00:00 2001 From: Jorge Silva Date: Thu, 13 Jun 2024 14:38:52 +0100 Subject: [PATCH 2/8] fix: ERC721NFTs return non-empty name and symbol --- packages/vm/core/evm/iscmagic/ERC721NFTs.sol | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/vm/core/evm/iscmagic/ERC721NFTs.sol b/packages/vm/core/evm/iscmagic/ERC721NFTs.sol index d482cd1274..9019202e2d 100644 --- a/packages/vm/core/evm/iscmagic/ERC721NFTs.sol +++ b/packages/vm/core/evm/iscmagic/ERC721NFTs.sol @@ -300,16 +300,15 @@ contract ERC721NFTs { return size > 0; } - // IERC721Metadata - function name() external view virtual returns (string memory) { - return ""; + return "L1 NFTs"; } function symbol() external pure returns (string memory) { - return ""; // not defined in IRC27 + return "CollectionL1"; } + // IERC721Metadata function tokenURI(uint256 tokenId) external view returns (string memory) { _requireNftExists(tokenId); IRC27NFT memory nft = __iscSandbox.getIRC27NFTData(tokenId.asNFTID()); From 63aab7bf2581b52f708d22285f1d14d70bf1197e Mon Sep 17 00:00:00 2001 From: Jorge Silva Date: Wed, 19 Jun 2024 11:50:31 +0100 Subject: [PATCH 3/8] mint to L1 from EVM test --- packages/evm/evmtest/ISCTest.sol | 24 +++++++++++++++++++ packages/vm/core/evm/evmtest/evm_test.go | 28 ++++++++++++++++++---- packages/vm/core/evm/iscmagic/ISCTypes.sol | 23 ++++++++++++++++++ 3 files changed, 71 insertions(+), 4 deletions(-) diff --git a/packages/evm/evmtest/ISCTest.sol b/packages/evm/evmtest/ISCTest.sol index e713cc3e6b..f37ae2cc0f 100644 --- a/packages/evm/evmtest/ISCTest.sol +++ b/packages/evm/evmtest/ISCTest.sol @@ -232,4 +232,28 @@ contract ISCTest { emit nftMint(ret.items[0].value); } + + function mintNFTToL1(bytes memory l1addr ) public payable { + ISCAssets memory allowance; + allowance.baseTokens = 100000; + + // TODO why does this not work correctly (importing via ISCTypes) + ISCAgentID memory agentID = ISCTypes.newL1AgentID(l1addr); + + ISCDict memory params = ISCDict(new ISCDictItem[](3)); + params.items[0] = ISCDictItem("I", "{\"name\": \"test\"}"); + params.items[1] = ISCDictItem("a", agentID.data); + bytes memory withdrawParam = new bytes(1); + withdrawParam[0] = 0x01; + params.items[2] = ISCDictItem("w", withdrawParam); + + ISCDict memory ret = ISC.sandbox.call( + ISC.util.hn("accounts"), + ISC.util.hn("mintNFT"), + params, + allowance + ); + emit nftMint(ret.items[0].value); + } + } diff --git a/packages/vm/core/evm/evmtest/evm_test.go b/packages/vm/core/evm/evmtest/evm_test.go index 69ae8c0687..1cc9f826c6 100644 --- a/packages/vm/core/evm/evmtest/evm_test.go +++ b/packages/vm/core/evm/evmtest/evm_test.go @@ -545,6 +545,22 @@ func TestISCNFTMint(t *testing.T) { require.Equal(t, irc27MetaData.Name, retIRC27.Metadata.Name) } +func TestEVMMintNFTToL1(t *testing.T) { + env := InitEVM(t, false) + ethKey, _ := env.Chain.NewEthereumAccountWithL2Funds() + iscTest := env.deployISCTestContract(ethKey) + + someL1Addr := tpkg.RandEd25519Address() + + _, err := iscTest.CallFn([]ethCallOptions{{ + value: big.NewInt(int64(5000000000000 * isc.Million)), + }}, "mintNFTToL1", someL1Addr[:]) + + require.NoError(t, err) + + require.Len(t, env.solo.L1NFTs(someL1Addr), 1) +} + func TestISCTriggerEvent(t *testing.T) { env := InitEVM(t, false) ethKey, _ := env.Chain.NewEthereumAccountWithL2Funds() @@ -1025,6 +1041,7 @@ func TestERC721NFTCollection(t *testing.T) { "text/html", "https://my-awesome-nft-project.com", "a string that is longer than 32 bytes", + `[{"trait_type": "collection", "value": "super"}]`, ) collection, collectionInfo, err := env.solo.MintNFTL1(collectionOwner, collectionOwnerAddr, collectionMetadata.Bytes()) @@ -1035,11 +1052,13 @@ func TestERC721NFTCollection(t *testing.T) { "application/json", "https://my-awesome-nft-project.com/1.json", "nft1", + `[{"trait_type": "Foo", "value": "Bar"}]`, ), isc.NewIRC27NFTMetadata( "application/json", "https://my-awesome-nft-project.com/2.json", "nft2", + `[{"trait_type": "Bar", "value": "Baz"}]`, ), } allNFTs, _, err := env.solo.MintNFTsL1(collectionOwner, collectionOwnerAddr, &collectionInfo.OutputID, @@ -1168,6 +1187,7 @@ func TestERC721NFTCollection(t *testing.T) { require.EqualValues(t, nftMetadatas[0].URI, p.Image) require.EqualValues(t, nftMetadatas[0].Name, p.Name) require.EqualValues(t, nftMetadatas[0].Description, p.Description) + require.EqualValues(t, nftMetadatas[0].Attributes, p.Attributes) } } @@ -2454,8 +2474,8 @@ func TestTraceTransaction(t *testing.T) { _, err := storage.store(43) require.NoError(t, err) trace := traceLatestTx() - require.EqualValues(t, ethAddr, common.HexToAddress(trace.From)) - require.EqualValues(t, storage.address, common.HexToAddress(trace.To)) + require.EqualValues(t, ethAddr, trace.From) + require.EqualValues(t, storage.address, trace.To) require.Empty(t, trace.Calls) } { @@ -2463,8 +2483,8 @@ func TestTraceTransaction(t *testing.T) { _, err := iscTest.triggerEvent("Hi from EVM!") require.NoError(t, err) trace := traceLatestTx() - require.EqualValues(t, ethAddr, common.HexToAddress(trace.From)) - require.EqualValues(t, iscTest.address, common.HexToAddress(trace.To)) + require.EqualValues(t, ethAddr, trace.From) + require.EqualValues(t, iscTest.address, trace.To) require.NotEmpty(t, trace.Calls) } } diff --git a/packages/vm/core/evm/iscmagic/ISCTypes.sol b/packages/vm/core/evm/iscmagic/ISCTypes.sol index afaf907004..5f76d4dcca 100644 --- a/packages/vm/core/evm/iscmagic/ISCTypes.sol +++ b/packages/vm/core/evm/iscmagic/ISCTypes.sol @@ -64,8 +64,13 @@ struct IRC27NFTMetadata { // "description": NFT.description, // "image": NFT.URI // })) + // tokenURI fields string uri; string name; + string description; + string image; + string attributes; + string tokenURI; // encoded JSON with the fields above } // Information about an on-chain IRC27 NFT @@ -174,6 +179,24 @@ library ISCTypes { return r; } + function newL1AgentID( + bytes memory l1Addr + ) internal pure returns (ISCAgentID memory) { + if (l1Addr.length != 32) { + revert("bad address length"); + } + ISCAgentID memory r; + r.data = new bytes(2 + 32); // 2 for the kind + The hash size of BLAKE2b-256 in bytes. + r.data[0] = bytes1(ISCAgentIDKindAddress); // isc agentID kind + r.data[1] = bytes1(0); // iota go AddressEd25519 AddressType = 0 + + //write l1 address + for (uint i = 0; i < l1Addr.length; i++) { + r.data[i + 2] = l1Addr[i]; + } + return r; + } + function isEthereum(ISCAgentID memory a) internal pure returns (bool) { return uint8(a.data[0]) == ISCAgentIDKindEthereumAddress; } From 54bc3e4f145bcf2c2e77f0a5259085a2f1728bcf Mon Sep 17 00:00:00 2001 From: Jorge Silva Date: Wed, 19 Jun 2024 11:50:42 +0100 Subject: [PATCH 4/8] update EVMi, add attributes to ERC721NFTs --- .../corecontracts/test/core_accounts_test.go | 6 + go.mod | 19 +- go.sum | 134 ++------- packages/chainutil/evmtrace.go | 2 +- packages/evm/evmlogger/evmlogger.go | 2 +- packages/evm/evmtest/ERC20Basic.bin | 2 +- packages/evm/evmtest/ERC20Basic.bin-runtime | 2 +- packages/evm/evmtest/ERC20Example.bin | 2 +- packages/evm/evmtest/EndlessLoop.bin | 2 +- packages/evm/evmtest/Fibonacci.bin | 2 +- packages/evm/evmtest/GasTestExecutionTime.bin | 2 +- packages/evm/evmtest/GasTestMemory.bin | 2 +- packages/evm/evmtest/GasTestStorage.bin | 2 +- packages/evm/evmtest/ISCTest.abi | 2 +- packages/evm/evmtest/ISCTest.bin | 2 +- packages/evm/evmtest/ISCTest.sol | 16 + packages/evm/evmtest/RevertTest.bin | 2 +- packages/evm/evmtest/SelfDestruct6780.abi | 1 + packages/evm/evmtest/SelfDestruct6780.bin | 1 + packages/evm/evmtest/Storage.bin | 2 +- packages/evm/jsonrpc/chainbackend.go | 2 +- packages/evm/jsonrpc/evmchain.go | 16 +- .../evm/jsonrpc/jsonrpctest/jsonrpc_test.go | 2 +- packages/evm/jsonrpc/service.go | 4 - packages/evm/jsonrpc/tracer.go | 6 +- packages/evm/jsonrpc/tracer_call.go | 282 ++++++++++++------ packages/evm/jsonrpc/waspevmbackend.go | 2 +- packages/isc/irc27nft.go | 15 +- packages/isc/irc27nft_test.go | 2 +- packages/isc/sandbox_interface.go | 2 +- packages/solo/evm.go | 2 +- ...positNFTWithMinStorageDeposit-accounts.hex | 2 +- ...C20NativeTokensWithExternalFoundry-evm.hex | 2 +- ...s-max_supply_10,_mintTokens_5-accounts.hex | 2 +- .../testdbhash/TestGetEvents-blocklog.hex | 2 +- packages/testutil/testdbhash/TestInitLoad.hex | 2 +- ...mint_from_it_as_a_collection1-accounts.hex | 2 +- ...mint_from_it_as_a_collection2-accounts.hex | 2 +- .../testdbhash/TestSelfDestruct-evm.hex | 2 +- .../testdbhash/TestSendBaseTokens-evm.hex | 2 +- .../testdbhash/TestStorageContract-evm.hex | 2 +- .../TestUnprocessableWithPruning-blocklog.hex | 2 +- packages/vm/core/evm/emulator/blockchaindb.go | 5 +- packages/vm/core/evm/emulator/emulator.go | 7 +- packages/vm/core/evm/emulator/statedb.go | 89 ++++-- .../vm/core/evm/emulator/transient_storage.go | 79 +++++ packages/vm/core/evm/evmimpl/internal.go | 6 +- .../core/evm/evmimpl/iscmagic_sandbox_view.go | 11 +- packages/vm/core/evm/evmtest/evm_test.go | 34 ++- .../evm/iscmagic/ERC20BaseTokens.bin-runtime | 2 +- .../ERC20ExternalNativeTokens.bin-runtime | 2 +- .../iscmagic/ERC20NativeTokens.bin-runtime | 2 +- .../iscmagic/ERC721NFTCollection.bin-runtime | 2 +- .../core/evm/iscmagic/ERC721NFTs.bin-runtime | 2 +- packages/vm/core/evm/iscmagic/ERC721NFTs.sol | 5 +- packages/vm/core/evm/iscmagic/ISCSandbox.abi | 2 +- packages/vm/core/evm/iscmagic/ISCSandbox.sol | 80 ++--- packages/vm/core/evm/iscmagic/ISCTypes.sol | 9 - packages/vm/core/evm/iscmagic/types.go | 24 +- packages/vm/core/evm/nfthack.go | 2 + packages/vm/core/testcore/accounts_test.go | 4 +- tools/evm/evmemulator/go.mod | 18 +- tools/evm/evmemulator/go.sum | 36 +-- tools/gascalibration/go.mod | 20 +- tools/gascalibration/go.sum | 40 ++- tools/gendoc/go.mod | 18 +- tools/gendoc/go.sum | 36 +-- tools/wasp-cli/go.mod | 18 +- tools/wasp-cli/go.sum | 36 +-- 69 files changed, 651 insertions(+), 500 deletions(-) create mode 100644 packages/evm/evmtest/SelfDestruct6780.abi create mode 100644 packages/evm/evmtest/SelfDestruct6780.bin create mode 100644 packages/vm/core/evm/emulator/transient_storage.go diff --git a/contracts/wasm/corecontracts/test/core_accounts_test.go b/contracts/wasm/corecontracts/test/core_accounts_test.go index 69c6377076..93f017754f 100644 --- a/contracts/wasm/corecontracts/test/core_accounts_test.go +++ b/contracts/wasm/corecontracts/test/core_accounts_test.go @@ -307,6 +307,7 @@ func TestAccountNFTAmountInCollection(t *testing.T) { "text/html", "https://my-awesome-nft-project.com", "a string that is longer than 32 bytes", + `[{"trait_type": "collection", "value": "super"}]`, ) collection, collectionInfo, err := ctx.Chain.Env.MintNFTL1(collectionOwner, collectionOwnerAddr, collectionMetadata.Bytes()) @@ -317,11 +318,13 @@ func TestAccountNFTAmountInCollection(t *testing.T) { "application/json", "https://my-awesome-nft-project.com/1.json", "nft1", + `[{"trait_type": "Foo", "value": "Bar"}]`, ), isc.NewIRC27NFTMetadata( "application/json", "https://my-awesome-nft-project.com/2.json", "nft2", + `[{"trait_type": "Bar", "value": "Baz"}]`, ), } nftNum := len(nftMetadatas) @@ -377,6 +380,7 @@ func TestAccountNFTsInCollection(t *testing.T) { "text/html", "https://my-awesome-nft-project.com", "a string that is longer than 32 bytes", + `[{"trait_type": "collection", "value": "super"}]`, ) collection, collectionInfo, err := ctx.Chain.Env.MintNFTL1(collectionOwner, collectionOwnerAddr, collectionMetadata.Bytes()) @@ -387,11 +391,13 @@ func TestAccountNFTsInCollection(t *testing.T) { "application/json", "https://my-awesome-nft-project.com/1.json", "nft1", + `[{"trait_type": "Foo", "value": "Bar"}]`, ), isc.NewIRC27NFTMetadata( "application/json", "https://my-awesome-nft-project.com/2.json", "nft2", + `[{"trait_type": "Bar", "value": "Baz"}]`, ), } nftNum := len(nftMetadatas) diff --git a/go.mod b/go.mod index a1ac7cd28f..131407b199 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/iotaledger/wasp go 1.21 replace ( - github.com/ethereum/go-ethereum => github.com/iotaledger/go-ethereum v1.13.12-wasp1 + github.com/ethereum/go-ethereum => github.com/iotaledger/go-ethereum v1.14.5-wasp1 go.dedis.ch/kyber/v3 => github.com/kape1395/kyber/v3 v3.0.14-0.20230124095845-ec682ff08c93 // branch: dkg-2suites ) @@ -69,31 +69,32 @@ require ( require ( filippo.io/edwards25519 v1.0.0 // indirect github.com/DataDog/zstd v1.5.5 // indirect - github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect github.com/benbjohnson/clock v1.3.5 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bits-and-blooms/bitset v1.10.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/cockroachdb/errors v1.11.0 // indirect + github.com/cockroachdb/errors v1.11.1 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 // indirect + github.com/cockroachdb/pebble v1.1.0 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/consensys/gnark-crypto v0.12.1 // indirect github.com/containerd/cgroups v1.1.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 // indirect - github.com/crate-crypto/go-kzg-4844 v0.7.0 // indirect + github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect + github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect - github.com/deckarep/golang-set/v2 v2.3.1 // indirect + github.com/deckarep/golang-set/v2 v2.6.0 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/eclipse/paho.mqtt.golang v1.4.3 // indirect github.com/elastic/gosigar v0.14.2 // indirect - github.com/ethereum/c-kzg-4844 v0.4.0 // indirect + github.com/ethereum/c-kzg-4844 v1.0.0 // indirect + github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 // indirect github.com/fatih/structs v1.1.0 // indirect github.com/felixge/fgprof v0.9.3 // indirect github.com/flynn/noise v1.0.0 // indirect @@ -101,7 +102,6 @@ require ( github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/gammazero/deque v0.2.1 // indirect github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 // indirect - github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 // indirect github.com/getsentry/sentry-go v0.23.0 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect @@ -111,7 +111,6 @@ require ( github.com/golang-jwt/jwt v3.2.2+incompatible // indirect github.com/golang/glog v1.2.0 // indirect github.com/golang/mock v1.6.0 // indirect - github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/go-github v17.0.0+incompatible // indirect github.com/google/go-querystring v1.1.0 // indirect diff --git a/go.sum b/go.sum index a5529e6793..54880d256f 100644 --- a/go.sum +++ b/go.sum @@ -13,8 +13,8 @@ github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOv github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= @@ -70,7 +70,6 @@ github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -83,12 +82,12 @@ github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGX github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= -github.com/cockroachdb/errors v1.11.0 h1:egs/a04mIiCuydSNS4SVe77uDTr0sLx1cq7hb8CxB7g= -github.com/cockroachdb/errors v1.11.0/go.mod h1:ycP9D0f30ZLfWZPQgaFXEYbUaa5NUIQxU/2kOxGh6KY= +github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= +github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 h1:aPEJyR4rPBvDmeyi+l/FS/VtA00IWvjeFvjen1m1l1A= -github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593/go.mod h1:6hk1eMY/u5t+Cf18q5lFMUA1Rc+Sm5I6Ra1QuPyxXCo= +github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= +github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= @@ -110,18 +109,18 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:ma github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ= -github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= -github.com/crate-crypto/go-kzg-4844 v0.7.0 h1:C0vgZRk4q4EZ/JgPfzuSoxdCq3C3mOZMBShovmncxvA= -github.com/crate-crypto/go-kzg-4844 v0.7.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= +github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= +github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c h1:pFUpOrbxDR6AkioZ1ySsx5yxlDQZ8stG2b88gTPxgJU= github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U= -github.com/deckarep/golang-set/v2 v2.3.1 h1:vjmkvJt/IV27WXPyYQpAh4bRyWJc5Y435D17XQ9QU5A= -github.com/deckarep/golang-set/v2 v2.3.1/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= +github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= +github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= @@ -151,8 +150,10 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= -github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= +github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 h1:KrE8I4reeVvf7C1tm8elRjj4BdscTYzz/WAbYyf/JI4= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0/go.mod h1:D9AJLVXSyZQXJQVk8oh1EwjISE+sJTn2duYIZC0dy3w= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= @@ -176,8 +177,6 @@ github.com/gammazero/deque v0.2.1 h1:qSdsbG6pgp6nL7A0+K/B7s12mcCY/5l5SIUpMOl+dC0 github.com/gammazero/deque v0.2.1/go.mod h1:LFroj8x4cMYCukHJDbxFCkT+r9AndaJnFMuZDV34tuU= github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 h1:f6D9Hr8xV8uYKlyuj8XIruxlh9WjVjdh1gIicAS7ays= github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= -github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 h1:BAIP2GihuqhwdILrV+7GJel5lyPV3u1+PgzrWLc0TkE= -github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46/go.mod h1:QNpY22eby74jVhqH4WhDLDwxc/vqsern6pW+u2kbkpc= github.com/getsentry/sentry-go v0.23.0 h1:dn+QRCeJv4pPt9OjVXiMcGIBIefaTJPw/h0bZWO05nE= github.com/getsentry/sentry-go v0.23.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -218,8 +217,7 @@ github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.1.1 h1:jxpi2eWoU84wbX9iIEyAeeoac3FLuifZpY9tcNUD9kw= -github.com/golang/glog v1.1.1/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= +github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= @@ -240,8 +238,6 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -278,8 +274,6 @@ github.com/google/pprof v0.0.0-20230821062121-407c9e7a662f h1:pDhu5sgp8yJlEF/g6o github.com/google/pprof v0.0.0-20230821062121-407c9e7a662f/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= -github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= @@ -338,8 +332,8 @@ github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKe github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hjson/hjson-go/v4 v4.0.0 h1:wlm6IYYqHjOdXH1gHev4VoXCaW20HdQAGCxdOEEg2cs= github.com/hjson/hjson-go/v4 v4.0.0/go.mod h1:KaYt3bTw3zhBjYqnXkYywcYctk0A2nxeEFTse3rH13E= -github.com/holiman/billy v0.0.0-20230718173358-1c7e68d277a7 h1:3JQNjnMRil1yD0IfZKHF9GxxWKDJGj8I0IqOUol//sw= -github.com/holiman/billy v0.0.0-20230718173358-1c7e68d277a7/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= +github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4= +github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= @@ -350,8 +344,6 @@ github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFck github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJn+Ichc= github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= -github.com/iotaledger/go-ethereum v1.13.12-wasp1 h1:yXTTA4+LQzNfQEMMz0mal/LcvadB6AJYNR/ee6OIcBs= -github.com/iotaledger/go-ethereum v1.13.12-wasp1/go.mod h1:hKL2Qcj1OvStXNSEDbucexqnEt1Wh4Cz329XsjAalZY= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= github.com/iotaledger/hive.go/app v0.0.0-20240319170702-c7591bb5f9f2 h1:7bTc69VqIHJ25dE7Xc/u4mY4GV+UP4PGO4/c5iElTaM= @@ -439,19 +431,11 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/labstack/echo v3.3.10+incompatible/go.mod h1:0INS7j/VjnFxD4E2wkz67b8cVwCLbBmJyDaka6Cmk1s= -github.com/labstack/echo-contrib v0.15.0 h1:9K+oRU265y4Mu9zpRDv3X+DGTqUALY6oRHCSZZKCRVU= -github.com/labstack/echo-contrib v0.15.0/go.mod h1:lei+qt5CLB4oa7VHTE0yEfQSEB9XTJI1LUqko9UWvo4= -github.com/labstack/echo-contrib v0.16.0 h1:vk5Kd+egpTOJxD3l+3IvZzQWPbrXiYxhkkgkJL99j/w= -github.com/labstack/echo-contrib v0.16.0/go.mod h1:mjX5VB3OqJcroIEycptBOY9Hr7rK+unq79W8QFKGNV0= -github.com/labstack/echo-contrib v0.17.0 h1:xam8wakZOsiQYM14Z0og1xF3w/heWNeDF5AtC5PlX8E= -github.com/labstack/echo-contrib v0.17.0/go.mod h1:mjX5VB3OqJcroIEycptBOY9Hr7rK+unq79W8QFKGNV0= github.com/labstack/echo-contrib v0.17.1 h1:7I/he7ylVKsDUieaGRZ9XxxTYOjfQwVzHzUYrNykfCU= github.com/labstack/echo-contrib v0.17.1/go.mod h1:SnsCZtwHBAZm5uBSAtQtXQHI3wqEA73hvTn0bYMKnZA= github.com/labstack/echo-jwt/v4 v4.2.0 h1:odSISV9JgcSCuhgQSV/6Io3i7nUmfM/QkBeR5GVJj5c= github.com/labstack/echo-jwt/v4 v4.2.0/go.mod h1:MA2RqdXdEn4/uEglx0HcUOgQSyBaTh5JcaHIan3biwU= github.com/labstack/echo/v4 v4.1.13/go.mod h1:3WZNypykZ3tnqpF2Qb4fPg27XDunFqgP3HGDmCMgv7U= -github.com/labstack/echo/v4 v4.11.4 h1:vDZmA+qNeh1pd/cCkEicDMrjtrnMGQ1QFI9gWN1zGq8= -github.com/labstack/echo/v4 v4.11.4/go.mod h1:noh7EvLwqDsmh/X/HWKPUl1AjzJrhyptRyEbQJfxen8= github.com/labstack/echo/v4 v4.12.0 h1:IKpw49IMryVB2p1a4dzwlhP1O2Tf2E0Ir/450lH+kI0= github.com/labstack/echo/v4 v4.12.0/go.mod h1:UP9Cr2DJXbOK3Kr9ONYzNowSh7HP0aG0ShAyycHSJvM= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= @@ -557,10 +541,6 @@ github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9 github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo= github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4= -github.com/multiformats/go-multiaddr v0.12.2 h1:9G9sTY/wCYajKa9lyfWPmpZAwe6oV+Wb1zcmMS1HG24= -github.com/multiformats/go-multiaddr v0.12.2/go.mod h1:GKyaTYjZRdcUhyOetrxTk9z0cW+jA/YrnqTOvKgi44M= -github.com/multiformats/go-multiaddr v0.12.3 h1:hVBXvPRcKG0w80VinQ23P5t7czWgg65BmIvQKjDydU8= -github.com/multiformats/go-multiaddr v0.12.3/go.mod h1:sBXrNzucqkFJhvKOiwwLyqamGa/P5EIXNPLovyhQCII= github.com/multiformats/go-multiaddr v0.12.4 h1:rrKqpY9h+n80EwhhC/kkcunCZZ7URIF8yN1WEUt2Hvc= github.com/multiformats/go-multiaddr v0.12.4/go.mod h1:sBXrNzucqkFJhvKOiwwLyqamGa/P5EIXNPLovyhQCII= github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2y0Mkk+QRVJbW3A= @@ -645,28 +625,18 @@ github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXP github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= -github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= -github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= -github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= -github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSzKKE= -github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= -github.com/prometheus/common v0.50.0 h1:YSZE6aa9+luNa2da6/Tik0q0A5AbR+U003TItK57CPQ= -github.com/prometheus/common v0.50.0/go.mod h1:wHFBCEVWVmHMUpg7pYcOm2QUR/ocQdYSJVQJKnHc3xQ= github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE= github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U= github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -674,8 +644,6 @@ github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/prometheus/procfs v0.13.0 h1:GqzLlQyfsPbaEHaQkO7tbDlriv/4o5Hudv6OXHGKX7o= github.com/prometheus/procfs v0.13.0/go.mod h1:cd4PFCR54QLnGKPaKGA6l+cfuNXtht43ZKY6tow0Y1g= github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= @@ -706,8 +674,6 @@ github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= -github.com/samber/lo v1.38.1 h1:j2XEAqXKb09Am4ebOg31SpvzUTTs6EN3VfgeLUhPdXM= -github.com/samber/lo v1.38.1/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA= github.com/samber/lo v1.39.0 h1:4gTz1wUhNYLhFSKl6O+8peW0v2F4BCY034GRpU9WnuA= github.com/samber/lo v1.39.0/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA= github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= @@ -859,25 +825,9 @@ golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200602180216-279210d13fed/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= -golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= -golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= -golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= -golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= -golang.org/x/exp v0.0.0-20240314144324-c7f7c6466f7f h1:3CW0unweImhOzd5FmYuRsD4Y4oQFKZIjAnKbjV4WIrw= -golang.org/x/exp v0.0.0-20240314144324-c7f7c6466f7f/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= -golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f h1:99ci1mjWVBWwJiEKYY6jWa4d2nTQVIEhZIptnrVb1XY= -golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= -golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM= -golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= -golang.org/x/exp v0.0.0-20240525044651-4c93da0ed11d h1:N0hmiNbwsSNwHBAvR3QB5w25pUwH4tK0Y/RltD1j1h4= -golang.org/x/exp v0.0.0-20240525044651-4c93da0ed11d/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 h1:LoYXNGAShUG3m/ehNk4iFctuhGX/+R1ZpfJ4/ia80JM= golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -891,10 +841,6 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= -golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -923,12 +869,6 @@ golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= -golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= -golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= -golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= -golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -946,8 +886,6 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180810173357-98c5dad5d1a0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1004,12 +942,6 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= -golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -1020,10 +952,6 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1049,14 +977,6 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= -golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= -golang.org/x/tools v0.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY= -golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= -golang.org/x/tools v0.21.0 h1:qc0xYgIbsSDt9EyWz05J5wfa7LOVW0YTLOXrqdLAWIw= -golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1081,10 +1001,6 @@ google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d h1:uvYuEyMHKNt+lT4K3bN6fGswmK8qSvcreM3BwjDh+y4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de h1:cZGRis4/ot9uVm639a+rHCUaG0JJHEsdyzSQTMX+suY= google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= @@ -1098,10 +1014,6 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.57.0 h1:kfzNeI/klCGD2YPMUlaGNT3pxvYfga7smW3Vth8Zsiw= -google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= -google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= -google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -1115,8 +1027,6 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= -google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= @@ -1131,8 +1041,8 @@ gopkg.in/h2non/gock.v1 v1.0.14/go.mod h1:sX4zAkdYX1TRGJ2JY156cFspQn4yRWn6p9EMdOD gopkg.in/h2non/gock.v1 v1.1.2 h1:jBbHXgGBK/AoPVfJh5x4r/WxIrElvbLel8TCZkkZJoY= gopkg.in/h2non/gock.v1 v1.1.2/go.mod h1:n7UGz/ckNChHiK05rDoiC4MYSunEC/lyaUm2WWaDva0= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= @@ -1156,8 +1066,6 @@ honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI= lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= -nhooyr.io/websocket v1.8.10 h1:mv4p+MnGrLDcPlBoWsvPP7XCzTYMXP9F9eIGoKbgx7Q= -nhooyr.io/websocket v1.8.10/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= nhooyr.io/websocket v1.8.11 h1:f/qXNc2/3DpoSZkHt1DQu6rj4zGC8JmkkLkWss0MgN0= nhooyr.io/websocket v1.8.11/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= pgregory.net/rapid v1.0.0 h1:iQaM2w5PZ6xvt6x7hbd7tiDS+nk7YPp5uCaEba+T/F4= diff --git a/packages/chainutil/evmtrace.go b/packages/chainutil/evmtrace.go index 4b80cb6e04..5b7463b602 100644 --- a/packages/chainutil/evmtrace.go +++ b/packages/chainutil/evmtrace.go @@ -15,7 +15,7 @@ func EVMTraceTransaction( blockTime time.Time, iscRequestsInBlock []isc.Request, txIndex uint64, - tracer tracers.Tracer, + tracer *tracers.Tracer, ) error { _, err := runISCTask( ch, diff --git a/packages/evm/evmlogger/evmlogger.go b/packages/evm/evmlogger/evmlogger.go index abee0ad0b6..8726bee379 100644 --- a/packages/evm/evmlogger/evmlogger.go +++ b/packages/evm/evmlogger/evmlogger.go @@ -2,9 +2,9 @@ package evmlogger import ( "context" + "log/slog" "github.com/ethereum/go-ethereum/log" - "golang.org/x/exp/slog" hiveLog "github.com/iotaledger/hive.go/logger" ) diff --git a/packages/evm/evmtest/ERC20Basic.bin b/packages/evm/evmtest/ERC20Basic.bin index e35be94dd7..33ab3ecf2e 100644 --- a/packages/evm/evmtest/ERC20Basic.bin +++ b/packages/evm/evmtest/ERC20Basic.bin @@ -1 +1 @@ -608060405234801562000010575f80fd5b506040516200148a3803806200148a8339818101604052810190620000369190620002ba565b815f908162000046919062000574565b50806001908162000058919062000574565b50601260ff16600a6200006c9190620007d5565b60646200007a919062000825565b60048190555060045460025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405162000125919062000880565b60405180910390a350506200089b565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b62000196826200014e565b810181811067ffffffffffffffff82111715620001b857620001b76200015e565b5b80604052505050565b5f620001cc62000135565b9050620001da82826200018b565b919050565b5f67ffffffffffffffff821115620001fc57620001fb6200015e565b5b62000207826200014e565b9050602081019050919050565b5f5b838110156200023357808201518184015260208101905062000216565b5f8484015250505050565b5f620002546200024e84620001df565b620001c1565b9050828152602081018484840111156200027357620002726200014a565b5b6200028084828562000214565b509392505050565b5f82601f8301126200029f576200029e62000146565b5b8151620002b18482602086016200023e565b91505092915050565b5f8060408385031215620002d357620002d26200013e565b5b5f83015167ffffffffffffffff811115620002f357620002f262000142565b5b620003018582860162000288565b925050602083015167ffffffffffffffff81111562000325576200032462000142565b5b620003338582860162000288565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200038c57607f821691505b602082108103620003a257620003a162000347565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620004067fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003c9565b620004128683620003c9565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200045c6200045662000450846200042a565b62000433565b6200042a565b9050919050565b5f819050919050565b62000477836200043c565b6200048f620004868262000463565b848454620003d5565b825550505050565b5f90565b620004a562000497565b620004b28184846200046c565b505050565b5b81811015620004d957620004cd5f826200049b565b600181019050620004b8565b5050565b601f8211156200052857620004f281620003a8565b620004fd84620003ba565b810160208510156200050d578190505b620005256200051c85620003ba565b830182620004b7565b50505b505050565b5f82821c905092915050565b5f6200054a5f19846008026200052d565b1980831691505092915050565b5f62000564838362000539565b9150826002028217905092915050565b6200057f826200033d565b67ffffffffffffffff8111156200059b576200059a6200015e565b5b620005a7825462000374565b620005b4828285620004dd565b5f60209050601f831160018114620005ea575f8415620005d5578287015190505b620005e1858262000557565b86555062000650565b601f198416620005fa86620003a8565b5f5b828110156200062357848901518255600182019150602085019450602081019050620005fc565b868310156200064357848901516200063f601f89168262000539565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620006e257808604811115620006ba57620006b962000658565b5b6001851615620006ca5780820291505b8081029050620006da8562000685565b94506200069a565b94509492505050565b5f82620006fc5760019050620007ce565b816200070b575f9050620007ce565b81600181146200072457600281146200072f5762000765565b6001915050620007ce565b60ff84111562000744576200074362000658565b5b8360020a9150848211156200075e576200075d62000658565b5b50620007ce565b5060208310610133831016604e8410600b84101617156200079f5782820a90508381111562000799576200079862000658565b5b620007ce565b620007ae848484600162000691565b92509050818404811115620007c857620007c762000658565b5b81810290505b9392505050565b5f620007e1826200042a565b9150620007ee836200042a565b92506200081d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006eb565b905092915050565b5f62000831826200042a565b91506200083e836200042a565b92508282026200084e816200042a565b9150828204841483151762000868576200086762000658565b5b5092915050565b6200087a816200042a565b82525050565b5f602082019050620008955f8301846200086f565b92915050565b610be180620008a95f395ff3fe608060405234801561000f575f80fd5b506004361061007b575f3560e01c8063313ce56711610059578063313ce567146100fd57806370a082311461011b578063a9059cbb1461014b578063dd62ed3e1461017b5761007b565b8063095ea7b31461007f57806318160ddd146100af57806323b872dd146100cd575b5f80fd5b61009960048036038101906100949190610965565b6101ab565b6040516100a691906109bd565b60405180910390f35b6100b7610298565b6040516100c491906109e5565b60405180910390f35b6100e760048036038101906100e291906109fe565b6102a1565b6040516100f491906109bd565b60405180910390f35b6101056105ed565b6040516101129190610a69565b60405180910390f35b61013560048036038101906101309190610a82565b6105f2565b60405161014291906109e5565b60405180910390f35b61016560048036038101906101609190610965565b610638565b60405161017291906109bd565b60405180910390f35b61019560048036038101906101909190610aad565b610801565b6040516101a291906109e5565b60405180910390f35b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161028691906109e5565b60405180910390a36001905092915050565b5f600454905090565b5f60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548211156102eb575f80fd5b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482111561036f575f80fd5b6103b660025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483610883565b60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061047960035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483610883565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061053c60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054836108a9565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105da91906109e5565b60405180910390a3600190509392505050565b601281565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054821115610682575f80fd5b6106c960025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483610883565b60025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061075160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054836108a9565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107ef91906109e5565b60405180910390a36001905092915050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8282111561089557610894610aeb565b5b81836108a19190610b45565b905092915050565b5f8082846108b79190610b78565b9050838110156108ca576108c9610aeb565b5b8091505092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610901826108d8565b9050919050565b610911816108f7565b811461091b575f80fd5b50565b5f8135905061092c81610908565b92915050565b5f819050919050565b61094481610932565b811461094e575f80fd5b50565b5f8135905061095f8161093b565b92915050565b5f806040838503121561097b5761097a6108d4565b5b5f6109888582860161091e565b925050602061099985828601610951565b9150509250929050565b5f8115159050919050565b6109b7816109a3565b82525050565b5f6020820190506109d05f8301846109ae565b92915050565b6109df81610932565b82525050565b5f6020820190506109f85f8301846109d6565b92915050565b5f805f60608486031215610a1557610a146108d4565b5b5f610a228682870161091e565b9350506020610a338682870161091e565b9250506040610a4486828701610951565b9150509250925092565b5f60ff82169050919050565b610a6381610a4e565b82525050565b5f602082019050610a7c5f830184610a5a565b92915050565b5f60208284031215610a9757610a966108d4565b5b5f610aa48482850161091e565b91505092915050565b5f8060408385031215610ac357610ac26108d4565b5b5f610ad08582860161091e565b9250506020610ae18582860161091e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610b4f82610932565b9150610b5a83610932565b9250828203905081811115610b7257610b71610b18565b5b92915050565b5f610b8282610932565b9150610b8d83610932565b9250828201905080821115610ba557610ba4610b18565b5b9291505056fea26469706673582212201aa0d1833dd1084269d64954d2b5fe5449d8a33624e7f29839517254a0f9423e64736f6c63430008180033 \ No newline at end of file +608060405234801561000f575f80fd5b506040516113c13803806113c183398181016040528101906100319190610272565b815f908161003f91906104f5565b50806001908161004f91906104f5565b50601260ff16600a6100619190610720565b606461006d919061076a565b60048190555060045460025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405161011691906107ba565b60405180910390a350506107d3565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6101848261013e565b810181811067ffffffffffffffff821117156101a3576101a261014e565b5b80604052505050565b5f6101b5610125565b90506101c1828261017b565b919050565b5f67ffffffffffffffff8211156101e0576101df61014e565b5b6101e98261013e565b9050602081019050919050565b8281835e5f83830152505050565b5f610216610211846101c6565b6101ac565b9050828152602081018484840111156102325761023161013a565b5b61023d8482856101f6565b509392505050565b5f82601f83011261025957610258610136565b5b8151610269848260208601610204565b91505092915050565b5f80604083850312156102885761028761012e565b5b5f83015167ffffffffffffffff8111156102a5576102a4610132565b5b6102b185828601610245565b925050602083015167ffffffffffffffff8111156102d2576102d1610132565b5b6102de85828601610245565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061033657607f821691505b602082108103610349576103486102f2565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103ab7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610370565b6103b58683610370565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6103f96103f46103ef846103cd565b6103d6565b6103cd565b9050919050565b5f819050919050565b610412836103df565b61042661041e82610400565b84845461037c565b825550505050565b5f90565b61043a61042e565b610445818484610409565b505050565b5b818110156104685761045d5f82610432565b60018101905061044b565b5050565b601f8211156104ad5761047e8161034f565b61048784610361565b81016020851015610496578190505b6104aa6104a285610361565b83018261044a565b50505b505050565b5f82821c905092915050565b5f6104cd5f19846008026104b2565b1980831691505092915050565b5f6104e583836104be565b9150826002028217905092915050565b6104fe826102e8565b67ffffffffffffffff8111156105175761051661014e565b5b610521825461031f565b61052c82828561046c565b5f60209050601f83116001811461055d575f841561054b578287015190505b61055585826104da565b8655506105bc565b601f19841661056b8661034f565b5f5b828110156105925784890151825560018201915060208501945060208101905061056d565b868310156105af57848901516105ab601f8916826104be565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561064657808604811115610622576106216105c4565b5b60018516156106315780820291505b808102905061063f856105f1565b9450610606565b94509492505050565b5f8261065e5760019050610719565b8161066b575f9050610719565b8160018114610681576002811461068b576106ba565b6001915050610719565b60ff84111561069d5761069c6105c4565b5b8360020a9150848211156106b4576106b36105c4565b5b50610719565b5060208310610133831016604e8410600b84101617156106ef5782820a9050838111156106ea576106e96105c4565b5b610719565b6106fc84848460016105fd565b92509050818404811115610713576107126105c4565b5b81810290505b9392505050565b5f61072a826103cd565b9150610735836103cd565b92506107627fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461064f565b905092915050565b5f610774826103cd565b915061077f836103cd565b925082820261078d816103cd565b915082820484148315176107a4576107a36105c4565b5b5092915050565b6107b4816103cd565b82525050565b5f6020820190506107cd5f8301846107ab565b92915050565b610be1806107e05f395ff3fe608060405234801561000f575f80fd5b506004361061007b575f3560e01c8063313ce56711610059578063313ce567146100fd57806370a082311461011b578063a9059cbb1461014b578063dd62ed3e1461017b5761007b565b8063095ea7b31461007f57806318160ddd146100af57806323b872dd146100cd575b5f80fd5b61009960048036038101906100949190610965565b6101ab565b6040516100a691906109bd565b60405180910390f35b6100b7610298565b6040516100c491906109e5565b60405180910390f35b6100e760048036038101906100e291906109fe565b6102a1565b6040516100f491906109bd565b60405180910390f35b6101056105ed565b6040516101129190610a69565b60405180910390f35b61013560048036038101906101309190610a82565b6105f2565b60405161014291906109e5565b60405180910390f35b61016560048036038101906101609190610965565b610638565b60405161017291906109bd565b60405180910390f35b61019560048036038101906101909190610aad565b610801565b6040516101a291906109e5565b60405180910390f35b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161028691906109e5565b60405180910390a36001905092915050565b5f600454905090565b5f60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548211156102eb575f80fd5b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482111561036f575f80fd5b6103b660025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483610883565b60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061047960035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483610883565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061053c60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054836108a9565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105da91906109e5565b60405180910390a3600190509392505050565b601281565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054821115610682575f80fd5b6106c960025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483610883565b60025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061075160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054836108a9565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107ef91906109e5565b60405180910390a36001905092915050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8282111561089557610894610aeb565b5b81836108a19190610b45565b905092915050565b5f8082846108b79190610b78565b9050838110156108ca576108c9610aeb565b5b8091505092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610901826108d8565b9050919050565b610911816108f7565b811461091b575f80fd5b50565b5f8135905061092c81610908565b92915050565b5f819050919050565b61094481610932565b811461094e575f80fd5b50565b5f8135905061095f8161093b565b92915050565b5f806040838503121561097b5761097a6108d4565b5b5f6109888582860161091e565b925050602061099985828601610951565b9150509250929050565b5f8115159050919050565b6109b7816109a3565b82525050565b5f6020820190506109d05f8301846109ae565b92915050565b6109df81610932565b82525050565b5f6020820190506109f85f8301846109d6565b92915050565b5f805f60608486031215610a1557610a146108d4565b5b5f610a228682870161091e565b9350506020610a338682870161091e565b9250506040610a4486828701610951565b9150509250925092565b5f60ff82169050919050565b610a6381610a4e565b82525050565b5f602082019050610a7c5f830184610a5a565b92915050565b5f60208284031215610a9757610a966108d4565b5b5f610aa48482850161091e565b91505092915050565b5f8060408385031215610ac357610ac26108d4565b5b5f610ad08582860161091e565b9250506020610ae18582860161091e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610b4f82610932565b9150610b5a83610932565b9250828203905081811115610b7257610b71610b18565b5b92915050565b5f610b8282610932565b9150610b8d83610932565b9250828201905080821115610ba557610ba4610b18565b5b9291505056fea26469706673582212209349ad16133ab562f8d734243250fdef093b7e710a7bf53e63348d1bc305cac164736f6c634300081a0033 \ No newline at end of file diff --git a/packages/evm/evmtest/ERC20Basic.bin-runtime b/packages/evm/evmtest/ERC20Basic.bin-runtime index b9b18a5b95..569dd879ab 100644 --- a/packages/evm/evmtest/ERC20Basic.bin-runtime +++ b/packages/evm/evmtest/ERC20Basic.bin-runtime @@ -1 +1 @@ -608060405234801561000f575f80fd5b506004361061007b575f3560e01c8063313ce56711610059578063313ce567146100fd57806370a082311461011b578063a9059cbb1461014b578063dd62ed3e1461017b5761007b565b8063095ea7b31461007f57806318160ddd146100af57806323b872dd146100cd575b5f80fd5b61009960048036038101906100949190610965565b6101ab565b6040516100a691906109bd565b60405180910390f35b6100b7610298565b6040516100c491906109e5565b60405180910390f35b6100e760048036038101906100e291906109fe565b6102a1565b6040516100f491906109bd565b60405180910390f35b6101056105ed565b6040516101129190610a69565b60405180910390f35b61013560048036038101906101309190610a82565b6105f2565b60405161014291906109e5565b60405180910390f35b61016560048036038101906101609190610965565b610638565b60405161017291906109bd565b60405180910390f35b61019560048036038101906101909190610aad565b610801565b6040516101a291906109e5565b60405180910390f35b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161028691906109e5565b60405180910390a36001905092915050565b5f600454905090565b5f60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548211156102eb575f80fd5b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482111561036f575f80fd5b6103b660025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483610883565b60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061047960035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483610883565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061053c60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054836108a9565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105da91906109e5565b60405180910390a3600190509392505050565b601281565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054821115610682575f80fd5b6106c960025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483610883565b60025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061075160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054836108a9565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107ef91906109e5565b60405180910390a36001905092915050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8282111561089557610894610aeb565b5b81836108a19190610b45565b905092915050565b5f8082846108b79190610b78565b9050838110156108ca576108c9610aeb565b5b8091505092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610901826108d8565b9050919050565b610911816108f7565b811461091b575f80fd5b50565b5f8135905061092c81610908565b92915050565b5f819050919050565b61094481610932565b811461094e575f80fd5b50565b5f8135905061095f8161093b565b92915050565b5f806040838503121561097b5761097a6108d4565b5b5f6109888582860161091e565b925050602061099985828601610951565b9150509250929050565b5f8115159050919050565b6109b7816109a3565b82525050565b5f6020820190506109d05f8301846109ae565b92915050565b6109df81610932565b82525050565b5f6020820190506109f85f8301846109d6565b92915050565b5f805f60608486031215610a1557610a146108d4565b5b5f610a228682870161091e565b9350506020610a338682870161091e565b9250506040610a4486828701610951565b9150509250925092565b5f60ff82169050919050565b610a6381610a4e565b82525050565b5f602082019050610a7c5f830184610a5a565b92915050565b5f60208284031215610a9757610a966108d4565b5b5f610aa48482850161091e565b91505092915050565b5f8060408385031215610ac357610ac26108d4565b5b5f610ad08582860161091e565b9250506020610ae18582860161091e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610b4f82610932565b9150610b5a83610932565b9250828203905081811115610b7257610b71610b18565b5b92915050565b5f610b8282610932565b9150610b8d83610932565b9250828201905080821115610ba557610ba4610b18565b5b9291505056fea26469706673582212201aa0d1833dd1084269d64954d2b5fe5449d8a33624e7f29839517254a0f9423e64736f6c63430008180033 \ No newline at end of file +608060405234801561000f575f80fd5b506004361061007b575f3560e01c8063313ce56711610059578063313ce567146100fd57806370a082311461011b578063a9059cbb1461014b578063dd62ed3e1461017b5761007b565b8063095ea7b31461007f57806318160ddd146100af57806323b872dd146100cd575b5f80fd5b61009960048036038101906100949190610965565b6101ab565b6040516100a691906109bd565b60405180910390f35b6100b7610298565b6040516100c491906109e5565b60405180910390f35b6100e760048036038101906100e291906109fe565b6102a1565b6040516100f491906109bd565b60405180910390f35b6101056105ed565b6040516101129190610a69565b60405180910390f35b61013560048036038101906101309190610a82565b6105f2565b60405161014291906109e5565b60405180910390f35b61016560048036038101906101609190610965565b610638565b60405161017291906109bd565b60405180910390f35b61019560048036038101906101909190610aad565b610801565b6040516101a291906109e5565b60405180910390f35b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161028691906109e5565b60405180910390a36001905092915050565b5f600454905090565b5f60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548211156102eb575f80fd5b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482111561036f575f80fd5b6103b660025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483610883565b60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061047960035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483610883565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061053c60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054836108a9565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516105da91906109e5565b60405180910390a3600190509392505050565b601281565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054821115610682575f80fd5b6106c960025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483610883565b60025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061075160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054836108a9565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107ef91906109e5565b60405180910390a36001905092915050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8282111561089557610894610aeb565b5b81836108a19190610b45565b905092915050565b5f8082846108b79190610b78565b9050838110156108ca576108c9610aeb565b5b8091505092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610901826108d8565b9050919050565b610911816108f7565b811461091b575f80fd5b50565b5f8135905061092c81610908565b92915050565b5f819050919050565b61094481610932565b811461094e575f80fd5b50565b5f8135905061095f8161093b565b92915050565b5f806040838503121561097b5761097a6108d4565b5b5f6109888582860161091e565b925050602061099985828601610951565b9150509250929050565b5f8115159050919050565b6109b7816109a3565b82525050565b5f6020820190506109d05f8301846109ae565b92915050565b6109df81610932565b82525050565b5f6020820190506109f85f8301846109d6565b92915050565b5f805f60608486031215610a1557610a146108d4565b5b5f610a228682870161091e565b9350506020610a338682870161091e565b9250506040610a4486828701610951565b9150509250925092565b5f60ff82169050919050565b610a6381610a4e565b82525050565b5f602082019050610a7c5f830184610a5a565b92915050565b5f60208284031215610a9757610a966108d4565b5b5f610aa48482850161091e565b91505092915050565b5f8060408385031215610ac357610ac26108d4565b5b5f610ad08582860161091e565b9250506020610ae18582860161091e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610b4f82610932565b9150610b5a83610932565b9250828203905081811115610b7257610b71610b18565b5b92915050565b5f610b8282610932565b9150610b8d83610932565b9250828201905080821115610ba557610ba4610b18565b5b9291505056fea26469706673582212209349ad16133ab562f8d734243250fdef093b7e710a7bf53e63348d1bc305cac164736f6c634300081a0033 \ No newline at end of file diff --git a/packages/evm/evmtest/ERC20Example.bin b/packages/evm/evmtest/ERC20Example.bin index bae9285fa8..4fe29b4fe8 100644 --- a/packages/evm/evmtest/ERC20Example.bin +++ b/packages/evm/evmtest/ERC20Example.bin @@ -1 +1 @@ -608060405234801561000f575f80fd5b50610cfb8061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061004a575f3560e01c80634deefc5a1461004e578063afc1cf661461006a578063b231b87d14610086578063c066591e146100a2575b5f80fd5b61006860048036038101906100639190610498565b6100be565b005b610084600480360381019061007f9190610648565b61018a565b005b6100a0600480360381019061009b9190610498565b610229565b005b6100bc60048036038101906100b791906106e4565b6102c2565b005b6100c66103cf565b8281604001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166367d52f6d8261010a85610397565b6040518363ffffffff1660e01b8152600401610127929190610aac565b6020604051808303815f875af1158015610143573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101679190610b13565b5f806101000a81548163ffffffff021916908363ffffffff160217905550505050565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f4f50c425f8054906101000a900463ffffffff168686866101d687610397565b6040518663ffffffff1660e01b81526004016101f6959493929190610bae565b5f604051808303815f87803b15801561020d575f80fd5b505af115801561021f573d5f803e3d5ffd5b5050505050505050565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638adfedc75f8054906101000a900463ffffffff168461027385610397565b6040518463ffffffff1660e01b815260040161029193929190610c23565b5f604051808303815f87803b1580156102a8575f80fd5b505af11580156102ba573d5f803e3d5ffd5b505050505050565b6102ca6103cf565b8281604001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634af8bc528787878561031188610397565b6040518663ffffffff1660e01b8152600401610331959493929190610c5f565b6020604051808303815f875af115801561034d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103719190610b13565b5f806101000a81548163ffffffff021916908363ffffffff160217905550505050505050565b61039f6103ed565b6103a76103ed565b82815f019067ffffffffffffffff16908167ffffffffffffffff168152505080915050919050565b60405180606001604052805f81526020015f81526020015f81525090565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b61043a81610428565b8114610444575f80fd5b50565b5f8135905061045581610431565b92915050565b5f67ffffffffffffffff82169050919050565b6104778161045b565b8114610481575f80fd5b50565b5f813590506104928161046e565b92915050565b5f80604083850312156104ae576104ad610420565b5b5f6104bb85828601610447565b92505060206104cc85828601610484565b9150509250929050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610524826104de565b810181811067ffffffffffffffff82111715610543576105426104ee565b5b80604052505050565b5f610555610417565b9050610561828261051b565b919050565b5f67ffffffffffffffff8211156105805761057f6104ee565b5b610589826104de565b9050602081019050919050565b828183375f83830152505050565b5f6105b66105b184610566565b61054c565b9050828152602081018484840111156105d2576105d16104da565b5b6105dd848285610596565b509392505050565b5f82601f8301126105f9576105f86104d6565b5b81356106098482602086016105a4565b91505092915050565b5f60ff82169050919050565b61062781610612565b8114610631575f80fd5b50565b5f813590506106428161061e565b92915050565b5f805f80608085870312156106605761065f610420565b5b5f85013567ffffffffffffffff81111561067d5761067c610424565b5b610689878288016105e5565b945050602085013567ffffffffffffffff8111156106aa576106a9610424565b5b6106b6878288016105e5565b93505060406106c787828801610634565b92505060606106d887828801610484565b91505092959194509250565b5f805f805f60a086880312156106fd576106fc610420565b5b5f86013567ffffffffffffffff81111561071a57610719610424565b5b610726888289016105e5565b955050602086013567ffffffffffffffff81111561074757610746610424565b5b610753888289016105e5565b945050604061076488828901610634565b935050606061077588828901610447565b925050608061078688828901610484565b9150509295509295909350565b61079c81610428565b82525050565b606082015f8201516107b65f850182610793565b5060208201516107c96020850182610793565b5060408201516107dc6040850182610793565b50505050565b6107eb8161045b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610851578082015181840152602081019050610836565b5f8484015250505050565b5f6108668261081a565b6108708185610824565b9350610880818560208601610834565b610889816104de565b840191505092915050565b5f602083015f8301518482035f8601526108ae828261085c565b9150508091505092915050565b5f604083015f8301518482035f8601526108d58282610894565b91505060208301516108ea6020860182610793565b508091505092915050565b5f61090083836108bb565b905092915050565b5f602082019050919050565b5f61091e826107f1565b61092881856107fb565b93508360208202850161093a8561080b565b805f5b85811015610975578484038952815161095685826108f5565b945061096183610908565b925060208a0199505060018101905061093d565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b5f6109c3826109b0565b9050919050565b6109d3816109b9565b82525050565b5f6109e483836109ca565b60208301905092915050565b5f602082019050919050565b5f610a0682610987565b610a108185610991565b9350610a1b836109a1565b805f5b83811015610a4b578151610a3288826109d9565b9750610a3d836109f0565b925050600181019050610a1e565b5085935050505092915050565b5f606083015f830151610a6d5f8601826107e2565b5060208301518482036020860152610a858282610914565b91505060408301518482036040860152610a9f82826109fc565b9150508091505092915050565b5f608082019050610abf5f8301856107a2565b8181036060830152610ad18184610a58565b90509392505050565b5f63ffffffff82169050919050565b610af281610ada565b8114610afc575f80fd5b50565b5f81519050610b0d81610ae9565b92915050565b5f60208284031215610b2857610b27610420565b5b5f610b3584828501610aff565b91505092915050565b610b4781610ada565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f610b7182610b4d565b610b7b8185610b57565b9350610b8b818560208601610834565b610b94816104de565b840191505092915050565b610ba881610612565b82525050565b5f60a082019050610bc15f830188610b3e565b8181036020830152610bd38187610b67565b90508181036040830152610be78186610b67565b9050610bf66060830185610b9f565b8181036080830152610c088184610a58565b90509695505050505050565b610c1d81610428565b82525050565b5f606082019050610c365f830186610b3e565b610c436020830185610c14565b8181036040830152610c558184610a58565b9050949350505050565b5f60e0820190508181035f830152610c778188610b67565b90508181036020830152610c8b8187610b67565b9050610c9a6040830186610b9f565b610ca760608301856107a2565b81810360c0830152610cb98184610a58565b9050969550505050505056fea2646970667358221220cd6488fe0fc4434843b4fb44c0a28dfd72a3122a83e2cc31e2983660d975319e64736f6c63430008180033 \ No newline at end of file +6080604052348015600e575f80fd5b50610ce18061001c5f395ff3fe608060405234801561000f575f80fd5b506004361061004a575f3560e01c80634deefc5a1461004e578063afc1cf661461006a578063b231b87d14610086578063c066591e146100a2575b5f80fd5b61006860048036038101906100639190610498565b6100be565b005b610084600480360381019061007f9190610648565b61018a565b005b6100a0600480360381019061009b9190610498565b610229565b005b6100bc60048036038101906100b791906106e4565b6102c2565b005b6100c66103cf565b8281604001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166367d52f6d8261010a85610397565b6040518363ffffffff1660e01b8152600401610127929190610a92565b6020604051808303815f875af1158015610143573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101679190610af9565b5f806101000a81548163ffffffff021916908363ffffffff160217905550505050565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f4f50c425f8054906101000a900463ffffffff168686866101d687610397565b6040518663ffffffff1660e01b81526004016101f6959493929190610b94565b5f604051808303815f87803b15801561020d575f80fd5b505af115801561021f573d5f803e3d5ffd5b5050505050505050565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638adfedc75f8054906101000a900463ffffffff168461027385610397565b6040518463ffffffff1660e01b815260040161029193929190610c09565b5f604051808303815f87803b1580156102a8575f80fd5b505af11580156102ba573d5f803e3d5ffd5b505050505050565b6102ca6103cf565b8281604001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634af8bc528787878561031188610397565b6040518663ffffffff1660e01b8152600401610331959493929190610c45565b6020604051808303815f875af115801561034d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103719190610af9565b5f806101000a81548163ffffffff021916908363ffffffff160217905550505050505050565b61039f6103ed565b6103a76103ed565b82815f019067ffffffffffffffff16908167ffffffffffffffff168152505080915050919050565b60405180606001604052805f81526020015f81526020015f81525090565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b61043a81610428565b8114610444575f80fd5b50565b5f8135905061045581610431565b92915050565b5f67ffffffffffffffff82169050919050565b6104778161045b565b8114610481575f80fd5b50565b5f813590506104928161046e565b92915050565b5f80604083850312156104ae576104ad610420565b5b5f6104bb85828601610447565b92505060206104cc85828601610484565b9150509250929050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610524826104de565b810181811067ffffffffffffffff82111715610543576105426104ee565b5b80604052505050565b5f610555610417565b9050610561828261051b565b919050565b5f67ffffffffffffffff8211156105805761057f6104ee565b5b610589826104de565b9050602081019050919050565b828183375f83830152505050565b5f6105b66105b184610566565b61054c565b9050828152602081018484840111156105d2576105d16104da565b5b6105dd848285610596565b509392505050565b5f82601f8301126105f9576105f86104d6565b5b81356106098482602086016105a4565b91505092915050565b5f60ff82169050919050565b61062781610612565b8114610631575f80fd5b50565b5f813590506106428161061e565b92915050565b5f805f80608085870312156106605761065f610420565b5b5f85013567ffffffffffffffff81111561067d5761067c610424565b5b610689878288016105e5565b945050602085013567ffffffffffffffff8111156106aa576106a9610424565b5b6106b6878288016105e5565b93505060406106c787828801610634565b92505060606106d887828801610484565b91505092959194509250565b5f805f805f60a086880312156106fd576106fc610420565b5b5f86013567ffffffffffffffff81111561071a57610719610424565b5b610726888289016105e5565b955050602086013567ffffffffffffffff81111561074757610746610424565b5b610753888289016105e5565b945050604061076488828901610634565b935050606061077588828901610447565b925050608061078688828901610484565b9150509295509295909350565b61079c81610428565b82525050565b606082015f8201516107b65f850182610793565b5060208201516107c96020850182610793565b5060408201516107dc6040850182610793565b50505050565b6107eb8161045b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f61084c8261081a565b6108568185610824565b9350610866818560208601610834565b61086f816104de565b840191505092915050565b5f602083015f8301518482035f8601526108948282610842565b9150508091505092915050565b5f604083015f8301518482035f8601526108bb828261087a565b91505060208301516108d06020860182610793565b508091505092915050565b5f6108e683836108a1565b905092915050565b5f602082019050919050565b5f610904826107f1565b61090e81856107fb565b9350836020820285016109208561080b565b805f5b8581101561095b578484038952815161093c85826108db565b9450610947836108ee565b925060208a01995050600181019050610923565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b5f6109a982610996565b9050919050565b6109b98161099f565b82525050565b5f6109ca83836109b0565b60208301905092915050565b5f602082019050919050565b5f6109ec8261096d565b6109f68185610977565b9350610a0183610987565b805f5b83811015610a31578151610a1888826109bf565b9750610a23836109d6565b925050600181019050610a04565b5085935050505092915050565b5f606083015f830151610a535f8601826107e2565b5060208301518482036020860152610a6b82826108fa565b91505060408301518482036040860152610a8582826109e2565b9150508091505092915050565b5f608082019050610aa55f8301856107a2565b8181036060830152610ab78184610a3e565b90509392505050565b5f63ffffffff82169050919050565b610ad881610ac0565b8114610ae2575f80fd5b50565b5f81519050610af381610acf565b92915050565b5f60208284031215610b0e57610b0d610420565b5b5f610b1b84828501610ae5565b91505092915050565b610b2d81610ac0565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f610b5782610b33565b610b618185610b3d565b9350610b71818560208601610834565b610b7a816104de565b840191505092915050565b610b8e81610612565b82525050565b5f60a082019050610ba75f830188610b24565b8181036020830152610bb98187610b4d565b90508181036040830152610bcd8186610b4d565b9050610bdc6060830185610b85565b8181036080830152610bee8184610a3e565b90509695505050505050565b610c0381610428565b82525050565b5f606082019050610c1c5f830186610b24565b610c296020830185610bfa565b8181036040830152610c3b8184610a3e565b9050949350505050565b5f60e0820190508181035f830152610c5d8188610b4d565b90508181036020830152610c718187610b4d565b9050610c806040830186610b85565b610c8d60608301856107a2565b81810360c0830152610c9f8184610a3e565b9050969550505050505056fea264697066735822122087d500930528b4ca930a01970783d2eabf464e34badd7380c2a92ffcb5da7de064736f6c634300081a0033 \ No newline at end of file diff --git a/packages/evm/evmtest/EndlessLoop.bin b/packages/evm/evmtest/EndlessLoop.bin index ca949fd6fd..dddeca1339 100644 --- a/packages/evm/evmtest/EndlessLoop.bin +++ b/packages/evm/evmtest/EndlessLoop.bin @@ -1 +1 @@ -6080604052348015600e575f80fd5b50607080601a5f395ff3fe6080604052348015600e575f80fd5b50600436106026575f3560e01c8063a92100cb14602a575b5f80fd5b60306032565b005b5b600160335756fea2646970667358221220e5be7966165740fe9fe5e036e7c6b86aaf5aeca1f4d951a1f351531d422b941564736f6c63430008180033 \ No newline at end of file +6080604052348015600e575f80fd5b50607080601a5f395ff3fe6080604052348015600e575f80fd5b50600436106026575f3560e01c8063a92100cb14602a575b5f80fd5b60306032565b005b5b600160335756fea26469706673582212205c8236a1cc784318af67a1ef8a54fa55f5d01bf759caffe2006e47a8ee6a96c664736f6c634300081a0033 \ No newline at end of file diff --git a/packages/evm/evmtest/Fibonacci.bin b/packages/evm/evmtest/Fibonacci.bin index 8a8817e64b..8d60ddbe7c 100644 --- a/packages/evm/evmtest/Fibonacci.bin +++ b/packages/evm/evmtest/Fibonacci.bin @@ -1 +1 @@ -608060405234801561000f575f80fd5b5061032e8061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063f9b7c7e51461002d575b5f80fd5b610047600480360381019061004291906101cb565b61005d565b6040516100549190610205565b60405180910390f35b5f60018263ffffffff161161007457819050610189565b3073ffffffffffffffffffffffffffffffffffffffff1663f9b7c7e560028461009d919061024b565b6040518263ffffffff1660e01b81526004016100b99190610205565b602060405180830381865afa1580156100d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100f89190610296565b3073ffffffffffffffffffffffffffffffffffffffff1663f9b7c7e5600185610121919061024b565b6040518263ffffffff1660e01b815260040161013d9190610205565b602060405180830381865afa158015610158573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017c9190610296565b61018691906102c1565b90505b919050565b5f80fd5b5f63ffffffff82169050919050565b6101aa81610192565b81146101b4575f80fd5b50565b5f813590506101c5816101a1565b92915050565b5f602082840312156101e0576101df61018e565b5b5f6101ed848285016101b7565b91505092915050565b6101ff81610192565b82525050565b5f6020820190506102185f8301846101f6565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61025582610192565b915061026083610192565b9250828203905063ffffffff81111561027c5761027b61021e565b5b92915050565b5f81519050610290816101a1565b92915050565b5f602082840312156102ab576102aa61018e565b5b5f6102b884828501610282565b91505092915050565b5f6102cb82610192565b91506102d683610192565b9250828201905063ffffffff8111156102f2576102f161021e565b5b9291505056fea264697066735822122076e95e99f7200ec5fa07eb6b56f5505c04b703e41c94da6aa49c819e0fdc127c64736f6c63430008180033 \ No newline at end of file +6080604052348015600e575f80fd5b5061032e8061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063f9b7c7e51461002d575b5f80fd5b610047600480360381019061004291906101cb565b61005d565b6040516100549190610205565b60405180910390f35b5f60018263ffffffff161161007457819050610189565b3073ffffffffffffffffffffffffffffffffffffffff1663f9b7c7e560028461009d919061024b565b6040518263ffffffff1660e01b81526004016100b99190610205565b602060405180830381865afa1580156100d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100f89190610296565b3073ffffffffffffffffffffffffffffffffffffffff1663f9b7c7e5600185610121919061024b565b6040518263ffffffff1660e01b815260040161013d9190610205565b602060405180830381865afa158015610158573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017c9190610296565b61018691906102c1565b90505b919050565b5f80fd5b5f63ffffffff82169050919050565b6101aa81610192565b81146101b4575f80fd5b50565b5f813590506101c5816101a1565b92915050565b5f602082840312156101e0576101df61018e565b5b5f6101ed848285016101b7565b91505092915050565b6101ff81610192565b82525050565b5f6020820190506102185f8301846101f6565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61025582610192565b915061026083610192565b9250828203905063ffffffff81111561027c5761027b61021e565b5b92915050565b5f81519050610290816101a1565b92915050565b5f602082840312156102ab576102aa61018e565b5b5f6102b884828501610282565b91505092915050565b5f6102cb82610192565b91506102d683610192565b9250828201905063ffffffff8111156102f2576102f161021e565b5b9291505056fea2646970667358221220f2f698d0019e48e50d2df4438a740608f75a0604f5cdaca59e8d910f5666134264736f6c634300081a0033 \ No newline at end of file diff --git a/packages/evm/evmtest/GasTestExecutionTime.bin b/packages/evm/evmtest/GasTestExecutionTime.bin index bd815563c1..78345d0ba2 100644 --- a/packages/evm/evmtest/GasTestExecutionTime.bin +++ b/packages/evm/evmtest/GasTestExecutionTime.bin @@ -1 +1 @@ -608060405234801561000f575f80fd5b506102898061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063af4e6e521461002d575b5f80fd5b61004760048036038101906100429190610103565b61005d565b604051610054919061013d565b60405180910390f35b5f805f90505f805b8463ffffffff168163ffffffff1610156100bb576001836100869190610183565b9250600a8361009591906101e7565b60036100a19190610217565b826100ac9190610183565b91508080600101915050610065565b508092505050919050565b5f80fd5b5f63ffffffff82169050919050565b6100e2816100ca565b81146100ec575f80fd5b50565b5f813590506100fd816100d9565b92915050565b5f60208284031215610118576101176100c6565b5b5f610125848285016100ef565b91505092915050565b610137816100ca565b82525050565b5f6020820190506101505f83018461012e565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61018d826100ca565b9150610198836100ca565b9250828201905063ffffffff8111156101b4576101b3610156565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6101f1826100ca565b91506101fc836100ca565b92508261020c5761020b6101ba565b5b828206905092915050565b5f610221826100ca565b915061022c836100ca565b925082820261023a816100ca565b915080821461024c5761024b610156565b5b509291505056fea26469706673582212207254d6cffb39cc8884821d62e832f4512c2dad3b7c481f49fa4da1e6f10a6fda64736f6c63430008180033 \ No newline at end of file +6080604052348015600e575f80fd5b506102898061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063af4e6e521461002d575b5f80fd5b61004760048036038101906100429190610103565b61005d565b604051610054919061013d565b60405180910390f35b5f805f90505f805b8463ffffffff168163ffffffff1610156100bb576001836100869190610183565b9250600a8361009591906101e7565b60036100a19190610217565b826100ac9190610183565b91508080600101915050610065565b508092505050919050565b5f80fd5b5f63ffffffff82169050919050565b6100e2816100ca565b81146100ec575f80fd5b50565b5f813590506100fd816100d9565b92915050565b5f60208284031215610118576101176100c6565b5b5f610125848285016100ef565b91505092915050565b610137816100ca565b82525050565b5f6020820190506101505f83018461012e565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61018d826100ca565b9150610198836100ca565b9250828201905063ffffffff8111156101b4576101b3610156565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6101f1826100ca565b91506101fc836100ca565b92508261020c5761020b6101ba565b5b828206905092915050565b5f610221826100ca565b915061022c836100ca565b925082820261023a816100ca565b915080821461024c5761024b610156565b5b509291505056fea2646970667358221220d6f86bfddaafd417e9f3afc06234d7b02305760ee584f78f13f8b1acd9880dcf64736f6c634300081a0033 \ No newline at end of file diff --git a/packages/evm/evmtest/GasTestMemory.bin b/packages/evm/evmtest/GasTestMemory.bin index ebcb7b51a8..36f6d8e470 100644 --- a/packages/evm/evmtest/GasTestMemory.bin +++ b/packages/evm/evmtest/GasTestMemory.bin @@ -1 +1 @@ -608060405234801561000f575f80fd5b506101ef8061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063af4e6e521461002d575b5f80fd5b61004760048036038101906100429190610134565b610049565b005b5f8163ffffffff1667ffffffffffffffff81111561006a5761006961015f565b5b6040519080825280602002602001820160405280156100985781602001602082028036833780820191505090505b5090505f5b8263ffffffff168163ffffffff1610156100f25780828263ffffffff16815181106100cb576100ca61018c565b5b602002602001019063ffffffff16908163ffffffff1681525050808060010191505061009d565b505050565b5f80fd5b5f63ffffffff82169050919050565b610113816100fb565b811461011d575f80fd5b50565b5f8135905061012e8161010a565b92915050565b5f60208284031215610149576101486100f7565b5b5f61015684828501610120565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220fdd9829c65caf5a5e71032fc3ca86e0e92c341d98f75d995b2b1221dc02e282464736f6c63430008180033 \ No newline at end of file +6080604052348015600e575f80fd5b506101ef8061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063af4e6e521461002d575b5f80fd5b61004760048036038101906100429190610134565b610049565b005b5f8163ffffffff1667ffffffffffffffff81111561006a5761006961015f565b5b6040519080825280602002602001820160405280156100985781602001602082028036833780820191505090505b5090505f5b8263ffffffff168163ffffffff1610156100f25780828263ffffffff16815181106100cb576100ca61018c565b5b602002602001019063ffffffff16908163ffffffff1681525050808060010191505061009d565b505050565b5f80fd5b5f63ffffffff82169050919050565b610113816100fb565b811461011d575f80fd5b50565b5f8135905061012e8161010a565b92915050565b5f60208284031215610149576101486100f7565b5b5f61015684828501610120565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220f8387820bb5d099e4e5017b5a00c539dd3392166dfef5628ffa84ed72f4a412164736f6c634300081a0033 \ No newline at end of file diff --git a/packages/evm/evmtest/GasTestStorage.bin b/packages/evm/evmtest/GasTestStorage.bin index ccf2904943..5421fc7374 100644 --- a/packages/evm/evmtest/GasTestStorage.bin +++ b/packages/evm/evmtest/GasTestStorage.bin @@ -1 +1 @@ -608060405234801561000f575f80fd5b506101598061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063af4e6e521461002d575b5f80fd5b610047600480360381019061004291906100f8565b610049565b005b5f5b8163ffffffff168163ffffffff1610156100b7575f81908060018154018082558091505060019003905f5260205f2090600891828204019190066004029091909190916101000a81548163ffffffff021916908363ffffffff160217905550808060010191505061004b565b5050565b5f80fd5b5f63ffffffff82169050919050565b6100d7816100bf565b81146100e1575f80fd5b50565b5f813590506100f2816100ce565b92915050565b5f6020828403121561010d5761010c6100bb565b5b5f61011a848285016100e4565b9150509291505056fea264697066735822122044ac2e5732a35da1b1108b00ecc0c7938bdda8317e424d68d5c5c73838d2d04c64736f6c63430008180033 \ No newline at end of file +6080604052348015600e575f80fd5b506101598061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063af4e6e521461002d575b5f80fd5b610047600480360381019061004291906100f8565b610049565b005b5f5b8163ffffffff168163ffffffff1610156100b7575f81908060018154018082558091505060019003905f5260205f2090600891828204019190066004029091909190916101000a81548163ffffffff021916908363ffffffff160217905550808060010191505061004b565b5050565b5f80fd5b5f63ffffffff82169050919050565b6100d7816100bf565b81146100e1575f80fd5b50565b5f813590506100f2816100ce565b92915050565b5f6020828403121561010d5761010c6100bb565b5b5f61011a848285016100e4565b9150509291505056fea2646970667358221220bae1a9d62b4a95646c14a4d8fb76668e0839f906497beb4199d5510911a326fd64736f6c634300081a0033 \ No newline at end of file diff --git a/packages/evm/evmtest/ISCTest.abi b/packages/evm/evmtest/ISCTest.abi index 1132b8d896..755f958791 100644 --- a/packages/evm/evmtest/ISCTest.abi +++ b/packages/evm/evmtest/ISCTest.abi @@ -1 +1 @@ -[{"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"name":"CustomError","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"s","type":"string"}],"name":"DummyEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"entropy","type":"bytes32"}],"name":"EntropyEvent","type":"event"},{"anonymous":false,"inputs":[],"name":"LoopEvent","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct ISCRequestID","name":"reqID","type":"tuple"}],"name":"RequestIDEvent","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct ISCAgentID","name":"sender","type":"tuple"}],"name":"SenderAccountEvent","type":"event"},{"anonymous":false,"inputs":[],"name":"SomeEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"id","type":"bytes"}],"name":"nftMint","type":"event"},{"inputs":[],"name":"TokensForGas","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"callInccounter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emitDummyEvent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emitEntropy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emitEventAndRevert","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emitRequestID","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emitSenderAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getChainID","outputs":[{"internalType":"ISCChainID","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"loopWithGasLeft","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"makeISCPanic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"foundrySN","type":"uint32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint64","name":"storageDeposit","type":"uint64"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintNFT","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISCAgentID","name":"targetAgentID","type":"tuple"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"allowance","type":"tuple"}],"name":"moveToAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertWithCustomError","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct L1Address","name":"receiver","type":"tuple"},{"internalType":"uint64","name":"baseTokens","type":"uint64"}],"name":"sendBaseTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct L1Address","name":"receiver","type":"tuple"},{"internalType":"NFTID","name":"id","type":"bytes32"},{"internalType":"uint64","name":"storageDeposit","type":"uint64"}],"name":"sendNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"testCallViewCaller","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"testRevertReason","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address payable","name":"beneficiary","type":"address"}],"name":"testSelfDestruct","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"testStackOverflow","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"testStaticCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"s","type":"string"}],"name":"triggerEvent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"s","type":"string"}],"name":"triggerEventFail","outputs":[],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file +[{"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"name":"CustomError","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"s","type":"string"}],"name":"DummyEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"entropy","type":"bytes32"}],"name":"EntropyEvent","type":"event"},{"anonymous":false,"inputs":[],"name":"LoopEvent","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct ISCRequestID","name":"reqID","type":"tuple"}],"name":"RequestIDEvent","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"indexed":false,"internalType":"struct ISCAgentID","name":"sender","type":"tuple"}],"name":"SenderAccountEvent","type":"event"},{"anonymous":false,"inputs":[],"name":"SomeEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"TestSelfDestruct6780ContractCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"id","type":"bytes"}],"name":"nftMint","type":"event"},{"inputs":[],"name":"TokensForGas","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"callInccounter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emitDummyEvent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emitEntropy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emitEventAndRevert","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emitRequestID","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emitSenderAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getChainID","outputs":[{"internalType":"ISCChainID","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"loopWithGasLeft","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"makeISCPanic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"foundrySN","type":"uint32"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint64","name":"storageDeposit","type":"uint64"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintNFT","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"l1addr","type":"bytes"}],"name":"mintNFTToL1","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISCAgentID","name":"targetAgentID","type":"tuple"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"allowance","type":"tuple"}],"name":"moveToAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revertWithCustomError","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct L1Address","name":"receiver","type":"tuple"},{"internalType":"uint64","name":"baseTokens","type":"uint64"}],"name":"sendBaseTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct L1Address","name":"receiver","type":"tuple"},{"internalType":"NFTID","name":"id","type":"bytes32"},{"internalType":"uint64","name":"storageDeposit","type":"uint64"}],"name":"sendNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"testCallViewCaller","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"testRevertReason","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address payable","name":"beneficiary","type":"address"}],"name":"testSelfDestruct","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"testSelfDestruct6780","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"testStackOverflow","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"testStaticCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"s","type":"string"}],"name":"triggerEvent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"s","type":"string"}],"name":"triggerEventFail","outputs":[],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/packages/evm/evmtest/ISCTest.bin b/packages/evm/evmtest/ISCTest.bin index 1bd7f5b58e..a407e11932 100644 --- a/packages/evm/evmtest/ISCTest.bin +++ b/packages/evm/evmtest/ISCTest.bin @@ -1 +1 @@ -608060405234801561000f575f80fd5b5061471c8061001d5f395ff3fe60806040526004361061014a575f3560e01c8063a038a3e6116100b5578063c36ba8561161006e578063c36ba8561461034a578063c5e6994514610360578063d411defb14610388578063dc91b3d01461039e578063e29a58a3146103c8578063e6c75c6b146103de5761014a565b8063a038a3e61461028e578063a4a05e21146102b6578063b3ee6942146102cc578063bb21d921146102e2578063bcaeb8a8146102f8578063bcfb1959146103225761014a565b806346fc4bb11161010757806346fc4bb1146101de5780634e522e4b146101f4578063564b81ef1461020a57806357c8750e146102345780636a68a7601461025c5780639e1a00aa146102725761014a565b806301fc25761461014e57806314f710fe1461016a57806336c34640146101745780633772d53f1461018a57806339bfb2fa146101a057806346d11676146101c8575b5f80fd5b6101686004803603810190610163919061257c565b610406565b005b610172610647565b005b34801561017f575f80fd5b50610188610a76565b005b348015610195575f80fd5b5061019e610b37565b005b3480156101ab575f80fd5b506101c660048036038101906101c19190612642565b610bf5565b005b3480156101d3575f80fd5b506101dc610ca0565b005b3480156101e9575f80fd5b506101f2610d61565b005b3480156101ff575f80fd5b50610208610d9f565b005b348015610215575f80fd5b5061021e610dd6565b60405161022b91906126bb565b60405180910390f35b34801561023f575f80fd5b5061025a60048036038101906102559190612a4c565b610e5d565b005b348015610267575f80fd5b506102706110df565b005b61028c60048036038101906102879190612b1c565b61111a565b005b348015610299575f80fd5b506102b460048036038101906102af9190612bf8565b611162565b005b3480156102c1575f80fd5b506102ca6111dc565b005b3480156102d7575f80fd5b506102e061149c565b005b3480156102ed575f80fd5b506102f661173d565b005b348015610303575f80fd5b5061030c61176d565b6040516103199190612cb9565b60405180910390f35b34801561032d575f80fd5b5061034860048036038101906103439190612cd9565b6119f2565b005b348015610355575f80fd5b5061035e611a0b565b005b34801561036b575f80fd5b5061038660048036038101906103819190612d04565b611bc8565b005b348015610393575f80fd5b5061039c611dfb565b005b3480156103a9575f80fd5b506103b26121d9565b6040516103bf9190612d7f565b60405180910390f35b3480156103d3575f80fd5b506103dc6121df565b005b3480156103e9575f80fd5b5061040460048036038101906103ff9190612bf8565b61221c565b005b61040e612299565b5f8267ffffffffffffffff16036104b55773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a714b58d336040518263ffffffff1660e01b815260040161046c9190612db8565b5f60405180830381865afa158015610486573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906104ae919061311a565b90506104d5565b81815f019067ffffffffffffffff16908167ffffffffffffffff16815250505b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663423fa15133836040518363ffffffff1660e01b81526004016105249291906133ee565b5f604051808303815f87803b15801561053b575f80fd5b505af115801561054d573d5f803e3d5ffd5b50505050610559612299565b6101f467ffffffffffffffff16825f015167ffffffffffffffff161161057d575f80fd5b6101f4825f015161058e9190613449565b815f019067ffffffffffffffff16908167ffffffffffffffff16815250506105b46122c3565b6105bc612311565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b7a53f538785600186866040518663ffffffff1660e01b81526004016106129594939291906137a5565b5f604051808303815f87803b158015610629575f80fd5b505af115801561063b573d5f803e3d5ffd5b50505050505050505050565b61064f612299565b620186a0815f019067ffffffffffffffff16908167ffffffffffffffff16815250505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f31317496040518163ffffffff1660e01b81526004015f60405180830381865afa1580156106ce573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906106f69190613867565b90505f6040518060200160405280600267ffffffffffffffff81111561071f5761071e6123ba565b5b60405190808252806020026020018201604052801561075857816020015b610745612333565b81526020019060019003908161073d5790505b50815250905060405180604001604052806040518060400160405280600181526020017f490000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280601081526020017f7b226e616d65223a202274657374227d00000000000000000000000000000000815250815250815f01515f815181106107f3576107f26138ae565b5b602002602001018190525060405180604001604052806040518060400160405280600181526020017f61000000000000000000000000000000000000000000000000000000000000008152508152602001835f0151815250815f0151600181518110610862576108616138ae565b5b60200260200101819052505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b81526004016108e990613935565b602060405180830381865afa158015610904573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610928919061397d565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401610973906139f2565b602060405180830381865afa15801561098e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b2919061397d565b85886040518563ffffffff1660e01b81526004016109d39493929190613a46565b5f604051808303815f875af11580156109ee573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610a169190613c4f565b90507fb6fd8ee14d0676f1114ba6d856787da2b580195d08b7f7ce88548823effe268d815f01515f81518110610a4f57610a4e6138ae565b5b602002602001015160200151604051610a689190612cb9565b60405180910390a150505050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca6528ce6040518163ffffffff1660e01b81526004015f60405180830381865afa158015610ad3573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610afb9190613ceb565b90507f41aec7e1afdd771a4a8d3d2f4195266991744d24445781617c2151aa73e3018681604051610b2c9190613d59565b60405180910390a150565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635404bbf76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb99190613da3565b90507f2778726dc1b9d6d2ee2628a18174907da485ba8765490e157ddf1202528ed5bc81604051610bea9190613ddd565b60405180910390a150565b610bfd612299565b81815f019067ffffffffffffffff16908167ffffffffffffffff168152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638adfedc78585846040518463ffffffff1660e01b8152600401610c6d93929190613e14565b5f604051808303815f87803b158015610c84575f80fd5b505af1158015610c96573d5f803e3d5ffd5b5050505050505050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f31317496040518163ffffffff1660e01b81526004015f60405180830381865afa158015610cfd573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610d259190613867565b90507faded0c26c8cc65771b245ec36a4a290a35b0cd003545068bcef2dcac18b8815c81604051610d569190613e77565b60405180910390a150565b602a6040517fa8b4db62000000000000000000000000000000000000000000000000000000008152600401610d969190613edc565b60405180910390fd5b7f5d1ca04f16bd7543edfc3334447b8976b0504f3a3e449dcd9992eb93781a80f3604051610dcc90613f3f565b60405180910390a1565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e589190613f87565b905090565b5f6040518060200160405280600267ffffffffffffffff811115610e8457610e836123ba565b5b604051908082528060200260200182016040528015610ebd57816020015b610eaa612333565b815260200190600190039081610ea25790505b50815250905060405180604001604052806040518060400160405280600181526020017f61000000000000000000000000000000000000000000000000000000000000008152508152602001845f0151815250815f01515f81518110610f2657610f256138ae565b5b602002602001018190525073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401610fac90613935565b602060405180830381865afa158015610fc7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610feb919061397d565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b815260040161103690613ffc565b602060405180830381865afa158015611051573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611075919061397d565b84866040518563ffffffff1660e01b81526004016110969493929190613a46565b5f604051808303815f875af11580156110b1573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906110d99190613c4f565b50505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111190613f3f565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561115d573d5f803e3d5ffd5b505050565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6c75c6b826040518263ffffffff1660e01b81526004016111af919061405c565b5f604051808303815f87803b1580156111c6575f80fd5b505af11580156111d8573d5f803e3d5ffd5b5f80fd5b5f6040518060200160405280600167ffffffffffffffff811115611203576112026123ba565b5b60405190808252806020026020018201604052801561123c57816020015b611229612333565b8152602001906001900390816112215790505b5081525090505f6040518060400160405280600881526020017f2a00000000000000000000000000000000000000000000000000000000000000815250905060405180604001604052806040518060400160405280600781526020017f636f756e74657200000000000000000000000000000000000000000000000000815250815260200182815250825f01515f815181106112db576112da6138ae565b5b60200260200101819052506112ee612299565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401611369906140c6565b602060405180830381865afa158015611384573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113a8919061397d565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b81526004016113f39061412e565b602060405180830381865afa15801561140e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611432919061397d565b86856040518563ffffffff1660e01b81526004016114539493929190613a46565b5f604051808303815f875af115801561146e573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906114969190613c4f565b50505050565b5f3060601b6040516020016114b191906141c6565b60405160208183030381529060405290505f6040518060200160405280600167ffffffffffffffff8111156114e9576114e86123ba565b5b60405190808252806020026020018201604052801561152257816020015b61150f612333565b8152602001906001900390816115075790505b50815250905060405180604001604052806040518060400160405280600181526020017f6300000000000000000000000000000000000000000000000000000000000000815250815260200183815250815f01515f81518110611588576115876138ae565b5b602002602001018190525073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630a26061773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b815260040161160e90614248565b602060405180830381865afa158015611629573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061164d919061397d565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401611698906142b0565b602060405180830381865afa1580156116b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116d7919061397d565b846040518463ffffffff1660e01b81526004016116f6939291906142ce565b5f60405180830381865afa158015611710573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906117389190613c4f565b505050565b7fb7575244c27f0af0a38da3d7e04920b4409766ef4699eea08f74dff24db98a1a60405160405180910390a15f80fd5b60605f60405180602001604052805f67ffffffffffffffff811115611795576117946123ba565b5b6040519080825280602002602001820160405280156117ce57816020015b6117bb612333565b8152602001906001900390816117b35790505b5081525090505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630a26061773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b815260040161185090613935565b602060405180830381865afa15801561186b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061188f919061397d565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b81526004016118da90614354565b602060405180830381865afa1580156118f5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611919919061397d565b856040518463ffffffff1660e01b8152600401611938939291906142ce565b5f60405180830381865afa158015611952573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061197a9190613c4f565b90505f5b815f0151518110156119eb575f825f015182815181106119a1576119a06138ae565b5b60200260200101515f015151036119de57815f015181815181106119c8576119c76138ae565b5b60200260200101516020015193505050506119ef565b808060010191505061197e565b5f80fd5b90565b8073ffffffffffffffffffffffffffffffffffffffff16ff5b611a1361234d565b611a1b612299565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401611a96906143bc565b602060405180830381865afa158015611ab1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ad5919061397d565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401611b2090614424565b602060405180830381865afa158015611b3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b5f919061397d565b85856040518563ffffffff1660e01b8152600401611b809493929190613a46565b5f604051808303815f875af1158015611b9b573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611bc39190613c4f565b505050565b611bd0612299565b81815f019067ffffffffffffffff16908167ffffffffffffffff1681525050600167ffffffffffffffff811115611c0a57611c096123ba565b5b604051908082528060200260200182016040528015611c385781602001602082028036833780820191505090505b5081604001819052508281604001515f81518110611c5957611c586138ae565b5b60200260200101818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663423fa15133836040518363ffffffff1660e01b8152600401611cb49291906133ee565b5f604051808303815f87803b158015611ccb575f80fd5b505af1158015611cdd573d5f803e3d5ffd5b50505050611ce9612299565b600167ffffffffffffffff811115611d0457611d036123ba565b5b604051908082528060200260200182016040528015611d325781602001602082028036833780820191505090505b5081604001819052508381604001515f81518110611d5357611d526138ae565b5b602002602001018181525050611d676122c3565b611d6f612311565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b7a53f538885600186866040518663ffffffff1660e01b8152600401611dc59594939291906137a5565b5f604051808303815f87803b158015611ddc575f80fd5b505af1158015611dee573d5f803e3d5ffd5b5050505050505050505050565b5f606073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16604051602401611e389061448c565b6040516020818303038152906040527fe6c75c6b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611ec291906144e4565b5f604051808303815f865af19150503d805f8114611efb576040519150601f19603f3d011682016040523d82523d5f602084013e611f00565b606091505b50809250819350505081611f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4090614544565b60405180910390fd5b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f564b81ef000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161200491906144e4565b5f60405180830381855afa9150503d805f811461203c576040519150601f19603f3d011682016040523d82523d5f602084013e612041565b606091505b5080925081935050508161208a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612081906145d2565b60405180910390fd5b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166040516024016120c49061463a565b6040516020818303038152906040527fe6c75c6b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161214e91906144e4565b5f60405180830381855afa9150503d805f8114612186576040519150601f19603f3d011682016040523d82523d5f602084013e61218b565b606091505b50809250819350505081156121d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cc906146c8565b60405180910390fd5b5050565b6101f481565b5b6127105a1061221a577ff9c7a13c2c2ddb716633ae77fd03fb7d2e3bf5ab3a45ba50ec2d3decc9ee650c60405160405180910390a16121e0565b565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6c75c6b826040518263ffffffff1660e01b8152600401612269919061405c565b5f604051808303815f87803b158015612280575f80fd5b505af1158015612292573d5f803e3d5ffd5b5050505050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060a001604052805f63ffffffff1681526020015f63ffffffff1681526020016122ee61234d565b81526020016122fb612299565b81526020015f67ffffffffffffffff1681525090565b60405180604001604052805f60070b815260200161232d612360565b81525090565b604051806040016040528060608152602001606081525090565b6040518060200160405280606081525090565b60405180604001604052805f60070b815260200161237c612382565b81525090565b6040518060200160405280606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6123f0826123aa565b810181811067ffffffffffffffff8211171561240f5761240e6123ba565b5b80604052505050565b5f612421612395565b905061242d82826123e7565b919050565b5f80fd5b5f80fd5b5f80fd5b5f67ffffffffffffffff821115612458576124576123ba565b5b612461826123aa565b9050602081019050919050565b828183375f83830152505050565b5f61248e6124898461243e565b612418565b9050828152602081018484840111156124aa576124a961243a565b5b6124b584828561246e565b509392505050565b5f82601f8301126124d1576124d0612436565b5b81356124e184826020860161247c565b91505092915050565b5f602082840312156124ff576124fe6123a6565b5b6125096020612418565b90505f82013567ffffffffffffffff81111561252857612527612432565b5b612534848285016124bd565b5f8301525092915050565b5f67ffffffffffffffff82169050919050565b61255b8161253f565b8114612565575f80fd5b50565b5f8135905061257681612552565b92915050565b5f80604083850312156125925761259161239e565b5b5f83013567ffffffffffffffff8111156125af576125ae6123a2565b5b6125bb858286016124ea565b92505060206125cc85828601612568565b9150509250929050565b5f63ffffffff82169050919050565b6125ee816125d6565b81146125f8575f80fd5b50565b5f81359050612609816125e5565b92915050565b5f819050919050565b6126218161260f565b811461262b575f80fd5b50565b5f8135905061263c81612618565b92915050565b5f805f606084860312156126595761265861239e565b5b5f612666868287016125fb565b93505060206126778682870161262e565b925050604061268886828701612568565b9150509250925092565b5f819050919050565b5f6126a582612692565b9050919050565b6126b58161269b565b82525050565b5f6020820190506126ce5f8301846126ac565b92915050565b5f602082840312156126e9576126e86123a6565b5b6126f36020612418565b90505f82013567ffffffffffffffff81111561271257612711612432565b5b61271e848285016124bd565b5f8301525092915050565b5f67ffffffffffffffff821115612743576127426123ba565b5b602082029050602081019050919050565b5f80fd5b5f6020828403121561276d5761276c6123a6565b5b6127776020612418565b90505f82013567ffffffffffffffff81111561279657612795612432565b5b6127a2848285016124bd565b5f8301525092915050565b5f604082840312156127c2576127c16123a6565b5b6127cc6040612418565b90505f82013567ffffffffffffffff8111156127eb576127ea612432565b5b6127f784828501612758565b5f83015250602061280a8482850161262e565b60208301525092915050565b5f61282861282384612729565b612418565b9050808382526020820190506020840283018581111561284b5761284a612754565b5b835b8181101561289257803567ffffffffffffffff8111156128705761286f612436565b5b80860161287d89826127ad565b8552602085019450505060208101905061284d565b5050509392505050565b5f82601f8301126128b0576128af612436565b5b81356128c0848260208601612816565b91505092915050565b5f67ffffffffffffffff8211156128e3576128e26123ba565b5b602082029050602081019050919050565b6128fd81612692565b8114612907575f80fd5b50565b5f81359050612918816128f4565b92915050565b5f61293061292b846128c9565b612418565b9050808382526020820190506020840283018581111561295357612952612754565b5b835b8181101561297c5780612968888261290a565b845260208401935050602081019050612955565b5050509392505050565b5f82601f83011261299a57612999612436565b5b81356129aa84826020860161291e565b91505092915050565b5f606082840312156129c8576129c76123a6565b5b6129d26060612418565b90505f6129e184828501612568565b5f83015250602082013567ffffffffffffffff811115612a0457612a03612432565b5b612a108482850161289c565b602083015250604082013567ffffffffffffffff811115612a3457612a33612432565b5b612a4084828501612986565b60408301525092915050565b5f8060408385031215612a6257612a6161239e565b5b5f83013567ffffffffffffffff811115612a7f57612a7e6123a2565b5b612a8b858286016126d4565b925050602083013567ffffffffffffffff811115612aac57612aab6123a2565b5b612ab8858286016129b3565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612aeb82612ac2565b9050919050565b612afb81612ae1565b8114612b05575f80fd5b50565b5f81359050612b1681612af2565b92915050565b5f8060408385031215612b3257612b3161239e565b5b5f612b3f85828601612b08565b9250506020612b508582860161262e565b9150509250929050565b5f67ffffffffffffffff821115612b7457612b736123ba565b5b612b7d826123aa565b9050602081019050919050565b5f612b9c612b9784612b5a565b612418565b905082815260208101848484011115612bb857612bb761243a565b5b612bc384828561246e565b509392505050565b5f82601f830112612bdf57612bde612436565b5b8135612bef848260208601612b8a565b91505092915050565b5f60208284031215612c0d57612c0c61239e565b5b5f82013567ffffffffffffffff811115612c2a57612c296123a2565b5b612c3684828501612bcb565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612c76578082015181840152602081019050612c5b565b5f8484015250505050565b5f612c8b82612c3f565b612c958185612c49565b9350612ca5818560208601612c59565b612cae816123aa565b840191505092915050565b5f6020820190508181035f830152612cd18184612c81565b905092915050565b5f60208284031215612cee57612ced61239e565b5b5f612cfb84828501612b08565b91505092915050565b5f805f60608486031215612d1b57612d1a61239e565b5b5f84013567ffffffffffffffff811115612d3857612d376123a2565b5b612d44868287016124ea565b9350506020612d558682870161290a565b9250506040612d6686828701612568565b9150509250925092565b612d798161253f565b82525050565b5f602082019050612d925f830184612d70565b92915050565b5f612da282612ac2565b9050919050565b612db281612d98565b82525050565b5f602082019050612dcb5f830184612da9565b92915050565b5f81519050612ddf81612552565b92915050565b5f612df7612df28461243e565b612418565b905082815260208101848484011115612e1357612e1261243a565b5b612e1e848285612c59565b509392505050565b5f82601f830112612e3a57612e39612436565b5b8151612e4a848260208601612de5565b91505092915050565b5f60208284031215612e6857612e676123a6565b5b612e726020612418565b90505f82015167ffffffffffffffff811115612e9157612e90612432565b5b612e9d84828501612e26565b5f8301525092915050565b5f81519050612eb681612618565b92915050565b5f60408284031215612ed157612ed06123a6565b5b612edb6040612418565b90505f82015167ffffffffffffffff811115612efa57612ef9612432565b5b612f0684828501612e53565b5f830152506020612f1984828501612ea8565b60208301525092915050565b5f612f37612f3284612729565b612418565b90508083825260208201905060208402830185811115612f5a57612f59612754565b5b835b81811015612fa157805167ffffffffffffffff811115612f7f57612f7e612436565b5b808601612f8c8982612ebc565b85526020850194505050602081019050612f5c565b5050509392505050565b5f82601f830112612fbf57612fbe612436565b5b8151612fcf848260208601612f25565b91505092915050565b5f81519050612fe6816128f4565b92915050565b5f612ffe612ff9846128c9565b612418565b9050808382526020820190506020840283018581111561302157613020612754565b5b835b8181101561304a57806130368882612fd8565b845260208401935050602081019050613023565b5050509392505050565b5f82601f83011261306857613067612436565b5b8151613078848260208601612fec565b91505092915050565b5f60608284031215613096576130956123a6565b5b6130a06060612418565b90505f6130af84828501612dd1565b5f83015250602082015167ffffffffffffffff8111156130d2576130d1612432565b5b6130de84828501612fab565b602083015250604082015167ffffffffffffffff81111561310257613101612432565b5b61310e84828501613054565b60408301525092915050565b5f6020828403121561312f5761312e61239e565b5b5f82015167ffffffffffffffff81111561314c5761314b6123a2565b5b61315884828501613081565b91505092915050565b61316a8161253f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f6131b382612c3f565b6131bd8185613199565b93506131cd818560208601612c59565b6131d6816123aa565b840191505092915050565b5f602083015f8301518482035f8601526131fb82826131a9565b9150508091505092915050565b6132118161260f565b82525050565b5f604083015f8301518482035f86015261323182826131e1565b91505060208301516132466020860182613208565b508091505092915050565b5f61325c8383613217565b905092915050565b5f602082019050919050565b5f61327a82613170565b613284818561317a565b9350836020820285016132968561318a565b805f5b858110156132d157848403895281516132b28582613251565b94506132bd83613264565b925060208a01995050600181019050613299565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6133158161269b565b82525050565b5f613326838361330c565b60208301905092915050565b5f602082019050919050565b5f613348826132e3565b61335281856132ed565b935061335d836132fd565b805f5b8381101561338d578151613374888261331b565b975061337f83613332565b925050600181019050613360565b5085935050505092915050565b5f606083015f8301516133af5f860182613161565b50602083015184820360208601526133c78282613270565b915050604083015184820360408601526133e1828261333e565b9150508091505092915050565b5f6040820190506134015f830185612da9565b8181036020830152613413818461339a565b90509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6134538261253f565b915061345e8361253f565b9250828203905067ffffffffffffffff81111561347e5761347d61341c565b5b92915050565b5f602083015f8301518482035f86015261349e82826131a9565b9150508091505092915050565b5f8115159050919050565b6134bf816134ab565b82525050565b5f819050919050565b5f6134e86134e36134de846125d6565b6134c5565b6125d6565b9050919050565b6134f8816134ce565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f604083015f8301518482035f86015261354182826131a9565b9150506020830151848203602086015261355b82826131a9565b9150508091505092915050565b5f6135738383613527565b905092915050565b5f602082019050919050565b5f613591826134fe565b61359b8185613508565b9350836020820285016135ad85613518565b805f5b858110156135e857848403895281516135c98582613568565b94506135d48361357b565b925060208a019950506001810190506135b0565b50829750879550505050505092915050565b5f602083015f8301518482035f8601526136148282613587565b9150508091505092915050565b5f606083015f8301516136365f860182613161565b506020830151848203602086015261364e8282613270565b91505060408301518482036040860152613668828261333e565b9150508091505092915050565b5f60a083015f83015161368a5f8601826134ef565b50602083015161369d60208601826134ef565b50604083015184820360408601526136b582826135fa565b915050606083015184820360608601526136cf8282613621565b91505060808301516136e46080860182613161565b508091505092915050565b5f8160070b9050919050565b613704816136ef565b82525050565b5f602083015f8301518482035f86015261372482826131a9565b9150508091505092915050565b5f604083015f8301516137465f8601826136fb565b506020830151848203602086015261375e828261370a565b9150508091505092915050565b5f604083015f8301516137805f8601826136fb565b50602083015184820360208601526137988282613731565b9150508091505092915050565b5f60a0820190508181035f8301526137bd8188613484565b905081810360208301526137d1818761339a565b90506137e060408301866134b6565b81810360608301526137f28185613675565b90508181036080830152613806818461376b565b90509695505050505050565b5f60208284031215613827576138266123a6565b5b6138316020612418565b90505f82015167ffffffffffffffff8111156138505761384f612432565b5b61385c84828501612e26565b5f8301525092915050565b5f6020828403121561387c5761387b61239e565b5b5f82015167ffffffffffffffff811115613899576138986123a2565b5b6138a584828501613812565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82825260208201905092915050565b7f6163636f756e74730000000000000000000000000000000000000000000000005f82015250565b5f61391f6008836138db565b915061392a826138eb565b602082019050919050565b5f6020820190508181035f83015261394c81613913565b9050919050565b61395c816125d6565b8114613966575f80fd5b50565b5f8151905061397781613953565b92915050565b5f602082840312156139925761399161239e565b5b5f61399f84828501613969565b91505092915050565b7f6d696e744e4654000000000000000000000000000000000000000000000000005f82015250565b5f6139dc6007836138db565b91506139e7826139a8565b602082019050919050565b5f6020820190508181035f830152613a09816139d0565b9050919050565b613a19816134ce565b82525050565b5f602083015f8301518482035f860152613a398282613587565b9150508091505092915050565b5f608082019050613a595f830187613a10565b613a666020830186613a10565b8181036040830152613a788185613a1f565b90508181036060830152613a8c818461339a565b905095945050505050565b5f67ffffffffffffffff821115613ab157613ab06123ba565b5b602082029050602081019050919050565b5f60408284031215613ad757613ad66123a6565b5b613ae16040612418565b90505f82015167ffffffffffffffff811115613b0057613aff612432565b5b613b0c84828501612e26565b5f83015250602082015167ffffffffffffffff811115613b2f57613b2e612432565b5b613b3b84828501612e26565b60208301525092915050565b5f613b59613b5484613a97565b612418565b90508083825260208201905060208402830185811115613b7c57613b7b612754565b5b835b81811015613bc357805167ffffffffffffffff811115613ba157613ba0612436565b5b808601613bae8982613ac2565b85526020850194505050602081019050613b7e565b5050509392505050565b5f82601f830112613be157613be0612436565b5b8151613bf1848260208601613b47565b91505092915050565b5f60208284031215613c0f57613c0e6123a6565b5b613c196020612418565b90505f82015167ffffffffffffffff811115613c3857613c37612432565b5b613c4484828501613bcd565b5f8301525092915050565b5f60208284031215613c6457613c6361239e565b5b5f82015167ffffffffffffffff811115613c8157613c806123a2565b5b613c8d84828501613bfa565b91505092915050565b5f60208284031215613cab57613caa6123a6565b5b613cb56020612418565b90505f82015167ffffffffffffffff811115613cd457613cd3612432565b5b613ce084828501612e26565b5f8301525092915050565b5f60208284031215613d0057613cff61239e565b5b5f82015167ffffffffffffffff811115613d1d57613d1c6123a2565b5b613d2984828501613c96565b91505092915050565b5f602083015f8301518482035f860152613d4c82826131a9565b9150508091505092915050565b5f6020820190508181035f830152613d718184613d32565b905092915050565b613d8281612692565b8114613d8c575f80fd5b50565b5f81519050613d9d81613d79565b92915050565b5f60208284031215613db857613db761239e565b5b5f613dc584828501613d8f565b91505092915050565b613dd781612692565b82525050565b5f602082019050613df05f830184613dce565b92915050565b613dff816125d6565b82525050565b613e0e8161260f565b82525050565b5f606082019050613e275f830186613df6565b613e346020830185613e05565b8181036040830152613e46818461339a565b9050949350505050565b5f602083015f8301518482035f860152613e6a82826131a9565b9150508091505092915050565b5f6020820190508181035f830152613e8f8184613e50565b905092915050565b5f819050919050565b5f60ff82169050919050565b5f613ec6613ec1613ebc84613e97565b6134c5565b613ea0565b9050919050565b613ed681613eac565b82525050565b5f602082019050613eef5f830184613ecd565b92915050565b7f666f6f62617200000000000000000000000000000000000000000000000000005f82015250565b5f613f296006836138db565b9150613f3482613ef5565b602082019050919050565b5f6020820190508181035f830152613f5681613f1d565b9050919050565b613f6681612692565b8114613f70575f80fd5b50565b5f81519050613f8181613f5d565b92915050565b5f60208284031215613f9c57613f9b61239e565b5b5f613fa984828501613f73565b91505092915050565b7f7472616e73666572416c6c6f77616e6365546f000000000000000000000000005f82015250565b5f613fe66013836138db565b9150613ff182613fb2565b602082019050919050565b5f6020820190508181035f83015261401381613fda565b9050919050565b5f81519050919050565b5f61402e8261401a565b61403881856138db565b9350614048818560208601612c59565b614051816123aa565b840191505092915050565b5f6020820190508181035f8301526140748184614024565b905092915050565b7f696e63636f756e746572000000000000000000000000000000000000000000005f82015250565b5f6140b0600a836138db565b91506140bb8261407c565b602082019050919050565b5f6020820190508181035f8301526140dd816140a4565b9050919050565b7f696e63436f756e746572000000000000000000000000000000000000000000005f82015250565b5f614118600a836138db565b9150614123826140e4565b602082019050919050565b5f6020820190508181035f8301526141458161410c565b9050919050565b6b010000000000000000000000815250565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b5f819050919050565b6141a361419e8261415e565b614189565b82525050565b7604000000b3ee6942000000000000000000000000000000815250565b5f6141d08261414c565b6015820191506141e08284614192565b6014820191506141ef826141a9565b60118201915081905092915050565b7f65766d00000000000000000000000000000000000000000000000000000000005f82015250565b5f6142326003836138db565b915061423d826141fe565b602082019050919050565b5f6020820190508181035f83015261425f81614226565b9050919050565b7f63616c6c436f6e747261637400000000000000000000000000000000000000005f82015250565b5f61429a600c836138db565b91506142a582614266565b602082019050919050565b5f6020820190508181035f8301526142c78161428e565b9050919050565b5f6060820190506142e15f830186613a10565b6142ee6020830185613a10565b81810360408301526143008184613a1f565b9050949350505050565b7f62616c616e6365000000000000000000000000000000000000000000000000005f82015250565b5f61433e6007836138db565b91506143498261430a565b602082019050919050565b5f6020820190508181035f83015261436b81614332565b9050919050565b7f676f7665726e616e6365000000000000000000000000000000000000000000005f82015250565b5f6143a6600a836138db565b91506143b182614372565b602082019050919050565b5f6020820190508181035f8301526143d38161439a565b9050919050565b7f636c61696d436861696e4f776e657273686970000000000000000000000000005f82015250565b5f61440e6013836138db565b9150614419826143da565b602082019050919050565b5f6020820190508181035f83015261443b81614402565b9050919050565b7f6e6f6e2d737461746963000000000000000000000000000000000000000000005f82015250565b5f614476600a836138db565b915061448182614442565b602082019050919050565b5f6020820190508181035f8301526144a38161446a565b9050919050565b5f81905092915050565b5f6144be82612c3f565b6144c881856144aa565b93506144d8818560208601612c59565b80840191505092915050565b5f6144ef82846144b4565b915081905092915050565b7f63616c6c2073686f756c642073756363656564000000000000000000000000005f82015250565b5f61452e6013836138db565b9150614539826144fa565b602082019050919050565b5f6020820190508181035f83015261455b81614522565b9050919050565b7f73746174696363616c6c20746f20766965772073686f756c64207375636365655f8201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b5f6145bc6021836138db565b91506145c782614562565b604082019050919050565b5f6020820190508181035f8301526145e9816145b0565b9050919050565b7f73746174696300000000000000000000000000000000000000000000000000005f82015250565b5f6146246006836138db565b915061462f826145f0565b602082019050919050565b5f6020820190508181035f83015261465181614618565b9050919050565b7f73746174696363616c6c20746f206e6f6e2d766965772073686f756c642066615f8201527f696c000000000000000000000000000000000000000000000000000000000000602082015250565b5f6146b26022836138db565b91506146bd82614658565b604082019050919050565b5f6020820190508181035f8301526146df816146a6565b905091905056fea26469706673582212204a9ddc39c77e6f3bc43ce32aad9b00c3468e8c43ddb5bc85842250a4ebdc85ca64736f6c63430008180033 \ No newline at end of file +6080604052348015600e575f80fd5b5061510a8061001c5f395ff3fe60806040526004361061017f575f3560e01c80639e1a00aa116100d0578063bcfb195911610089578063d411defb11610063578063d411defb146103ef578063dc91b3d014610405578063e29a58a31461042f578063e6c75c6b146104455761017f565b8063bcfb195914610389578063c36ba856146103b1578063c5e69945146103c75761017f565b80639e1a00aa146102d9578063a038a3e6146102f5578063a4a05e211461031d578063b3ee694214610333578063bb21d92114610349578063bcaeb8a81461035f5761017f565b806346d116761161013d578063564b81ef11610117578063564b81ef1461025b57806357c8750e146102855780636a68a760146102ad578063904b8870146102c35761017f565b806346d116761461021957806346fc4bb11461022f5780634e522e4b146102455761017f565b8062b79f021461018357806301fc25761461019f57806314f710fe146101bb57806336c34640146101c55780633772d53f146101db57806339bfb2fa146101f1575b5f80fd5b61019d60048036038101906101989190612cb6565b61046d565b005b6101b960048036038101906101b49190612d97565b610926565b005b6101c3610b67565b005b3480156101d0575f80fd5b506101d9610f96565b005b3480156101e6575f80fd5b506101ef611057565b005b3480156101fc575f80fd5b5061021760048036038101906102129190612e5d565b611115565b005b348015610224575f80fd5b5061022d6111c0565b005b34801561023a575f80fd5b50610243611281565b005b348015610250575f80fd5b506102596112bf565b005b348015610266575f80fd5b5061026f6112f6565b60405161027c9190612ed6565b60405180910390f35b348015610290575f80fd5b506102ab60048036038101906102a69190613267565b61137d565b005b3480156102b8575f80fd5b506102c16115ff565b005b3480156102ce575f80fd5b506102d761163a565b005b6102f360048036038101906102ee9190613337565b611703565b005b348015610300575f80fd5b5061031b60048036038101906103169190613413565b61174b565b005b348015610328575f80fd5b506103316117c5565b005b34801561033e575f80fd5b50610347611a85565b005b348015610354575f80fd5b5061035d611d26565b005b34801561036a575f80fd5b50610373611d56565b60405161038091906134ba565b60405180910390f35b348015610394575f80fd5b506103af60048036038101906103aa91906134da565b611fdb565b005b3480156103bc575f80fd5b506103c5611ff4565b005b3480156103d2575f80fd5b506103ed60048036038101906103e89190613505565b6121b1565b005b3480156103fa575f80fd5b506104036123e4565b005b348015610410575f80fd5b506104196127c2565b6040516104269190613580565b60405180910390f35b34801561043a575f80fd5b506104436127c8565b005b348015610450575f80fd5b5061046b60048036038101906104669190613413565b612805565b005b610475612a4d565b620186a0815f019067ffffffffffffffff16908167ffffffffffffffff16815250505f6104a183612882565b90505f6040518060200160405280600367ffffffffffffffff8111156104ca576104c9612b92565b5b60405190808252806020026020018201604052801561050357816020015b6104f0612a77565b8152602001906001900390816104e85790505b50815250905060405180604001604052806040518060400160405280600181526020017f490000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280601081526020017f7b226e616d65223a202274657374227d00000000000000000000000000000000815250815250815f01515f8151811061059e5761059d613599565b5b602002602001018190525060405180604001604052806040518060400160405280600181526020017f61000000000000000000000000000000000000000000000000000000000000008152508152602001835f0151815250815f015160018151811061060d5761060c613599565b5b60200260200101819052505f600167ffffffffffffffff81111561063457610633612b92565b5b6040519080825280601f01601f1916602001820160405280156106665781602001600182028036833780820191505090505b509050600160f81b815f8151811061068157610680613599565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535060405180604001604052806040518060400160405280600181526020017f7700000000000000000000000000000000000000000000000000000000000000815250815260200182815250825f01516002815181106107105761070f613599565b5b60200260200101819052505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b815260040161079790613620565b602060405180830381865afa1580156107b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d69190613668565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401610821906136dd565b602060405180830381865afa15801561083c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108609190613668565b86896040518563ffffffff1660e01b81526004016108819493929190613ae4565b5f604051808303815f875af115801561089c573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906108c49190613d5b565b90507fb6fd8ee14d0676f1114ba6d856787da2b580195d08b7f7ce88548823effe268d815f01515f815181106108fd576108fc613599565b5b60200260200101516020015160405161091691906134ba565b60405180910390a1505050505050565b61092e612a4d565b5f8267ffffffffffffffff16036109d55773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a714b58d336040518263ffffffff1660e01b815260040161098c9190613dc2565b5f60405180830381865afa1580156109a6573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906109ce91906140b6565b90506109f5565b81815f019067ffffffffffffffff16908167ffffffffffffffff16815250505b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663423fa15133836040518363ffffffff1660e01b8152600401610a449291906140fd565b5f604051808303815f87803b158015610a5b575f80fd5b505af1158015610a6d573d5f803e3d5ffd5b50505050610a79612a4d565b6101f467ffffffffffffffff16825f015167ffffffffffffffff1611610a9d575f80fd5b6101f4825f0151610aae9190614158565b815f019067ffffffffffffffff16908167ffffffffffffffff1681525050610ad4612a91565b610adc612adf565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b7a53f538785600186866040518663ffffffff1660e01b8152600401610b3295949392919061438e565b5f604051808303815f87803b158015610b49575f80fd5b505af1158015610b5b573d5f803e3d5ffd5b50505050505050505050565b610b6f612a4d565b620186a0815f019067ffffffffffffffff16908167ffffffffffffffff16815250505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f31317496040518163ffffffff1660e01b81526004015f60405180830381865afa158015610bee573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610c169190614450565b90505f6040518060200160405280600267ffffffffffffffff811115610c3f57610c3e612b92565b5b604051908082528060200260200182016040528015610c7857816020015b610c65612a77565b815260200190600190039081610c5d5790505b50815250905060405180604001604052806040518060400160405280600181526020017f490000000000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280601081526020017f7b226e616d65223a202274657374227d00000000000000000000000000000000815250815250815f01515f81518110610d1357610d12613599565b5b602002602001018190525060405180604001604052806040518060400160405280600181526020017f61000000000000000000000000000000000000000000000000000000000000008152508152602001835f0151815250815f0151600181518110610d8257610d81613599565b5b60200260200101819052505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401610e0990613620565b602060405180830381865afa158015610e24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e489190613668565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401610e93906136dd565b602060405180830381865afa158015610eae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed29190613668565b85886040518563ffffffff1660e01b8152600401610ef39493929190613ae4565b5f604051808303815f875af1158015610f0e573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610f369190613d5b565b90507fb6fd8ee14d0676f1114ba6d856787da2b580195d08b7f7ce88548823effe268d815f01515f81518110610f6f57610f6e613599565b5b602002602001015160200151604051610f8891906134ba565b60405180910390a150505050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ca6528ce6040518163ffffffff1660e01b81526004015f60405180830381865afa158015610ff3573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061101b91906144ec565b90507f41aec7e1afdd771a4a8d3d2f4195266991744d24445781617c2151aa73e301868160405161104c919061455a565b60405180910390a150565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635404bbf76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d991906145a4565b90507f2778726dc1b9d6d2ee2628a18174907da485ba8765490e157ddf1202528ed5bc8160405161110a91906145de565b60405180910390a150565b61111d612a4d565b81815f019067ffffffffffffffff16908167ffffffffffffffff168152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638adfedc78585846040518463ffffffff1660e01b815260040161118d93929190614615565b5f604051808303815f87803b1580156111a4575f80fd5b505af11580156111b6573d5f803e3d5ffd5b5050505050505050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f31317496040518163ffffffff1660e01b81526004015f60405180830381865afa15801561121d573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906112459190614450565b90507faded0c26c8cc65771b245ec36a4a290a35b0cd003545068bcef2dcac18b8815c816040516112769190614678565b60405180910390a150565b602a6040517fa8b4db620000000000000000000000000000000000000000000000000000000081526004016112b691906146dd565b60405180910390fd5b7f5d1ca04f16bd7543edfc3334447b8976b0504f3a3e449dcd9992eb93781a80f36040516112ec90614740565b60405180910390a1565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611354573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113789190614788565b905090565b5f6040518060200160405280600267ffffffffffffffff8111156113a4576113a3612b92565b5b6040519080825280602002602001820160405280156113dd57816020015b6113ca612a77565b8152602001906001900390816113c25790505b50815250905060405180604001604052806040518060400160405280600181526020017f61000000000000000000000000000000000000000000000000000000000000008152508152602001845f0151815250815f01515f8151811061144657611445613599565b5b602002602001018190525073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b81526004016114cc90613620565b602060405180830381865afa1580156114e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061150b9190613668565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401611556906147fd565b602060405180830381865afa158015611571573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115959190613668565b84866040518563ffffffff1660e01b81526004016115b69493929190613ae4565b5f604051808303815f875af11580156115d1573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906115f99190613d5b565b50505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163190614740565b60405180910390fd5b5f60405161164790612b01565b604051809103905ff080158015611660573d5f803e3d5ffd5b5090507f619e004505ac1d1c1c901fa7ad8f849ad75977fe395f6df05966aac8702a22a2816040516116929190613dc2565b60405180910390a18073ffffffffffffffffffffffffffffffffffffffff1663bcfb1959336040518263ffffffff1660e01b81526004016116d3919061482a565b5f604051808303815f87803b1580156116ea575f80fd5b505af11580156116fc573d5f803e3d5ffd5b5050505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611746573d5f803e3d5ffd5b505050565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6c75c6b826040518263ffffffff1660e01b81526004016117989190614885565b5f604051808303815f87803b1580156117af575f80fd5b505af11580156117c1573d5f803e3d5ffd5b5f80fd5b5f6040518060200160405280600167ffffffffffffffff8111156117ec576117eb612b92565b5b60405190808252806020026020018201604052801561182557816020015b611812612a77565b81526020019060019003908161180a5790505b5081525090505f6040518060400160405280600881526020017f2a00000000000000000000000000000000000000000000000000000000000000815250905060405180604001604052806040518060400160405280600781526020017f636f756e74657200000000000000000000000000000000000000000000000000815250815260200182815250825f01515f815181106118c4576118c3613599565b5b60200260200101819052506118d7612a4d565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401611952906148ef565b602060405180830381865afa15801561196d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119919190613668565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b81526004016119dc90614957565b602060405180830381865afa1580156119f7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a1b9190613668565b86856040518563ffffffff1660e01b8152600401611a3c9493929190613ae4565b5f604051808303815f875af1158015611a57573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611a7f9190613d5b565b50505050565b5f3060601b604051602001611a9a91906149ef565b60405160208183030381529060405290505f6040518060200160405280600167ffffffffffffffff811115611ad257611ad1612b92565b5b604051908082528060200260200182016040528015611b0b57816020015b611af8612a77565b815260200190600190039081611af05790505b50815250905060405180604001604052806040518060400160405280600181526020017f6300000000000000000000000000000000000000000000000000000000000000815250815260200183815250815f01515f81518110611b7157611b70613599565b5b602002602001018190525073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630a26061773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401611bf790614a71565b602060405180830381865afa158015611c12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c369190613668565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401611c8190614ad9565b602060405180830381865afa158015611c9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cc09190613668565b846040518463ffffffff1660e01b8152600401611cdf93929190614af7565b5f60405180830381865afa158015611cf9573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611d219190613d5b565b505050565b7fb7575244c27f0af0a38da3d7e04920b4409766ef4699eea08f74dff24db98a1a60405160405180910390a15f80fd5b60605f60405180602001604052805f67ffffffffffffffff811115611d7e57611d7d612b92565b5b604051908082528060200260200182016040528015611db757816020015b611da4612a77565b815260200190600190039081611d9c5790505b5081525090505f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630a26061773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401611e3990613620565b602060405180830381865afa158015611e54573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e789190613668565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b8152600401611ec390614b7d565b602060405180830381865afa158015611ede573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f029190613668565b856040518463ffffffff1660e01b8152600401611f2193929190614af7565b5f60405180830381865afa158015611f3b573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611f639190613d5b565b90505f5b815f015151811015611fd4575f825f01518281518110611f8a57611f89613599565b5b60200260200101515f01515103611fc757815f01518181518110611fb157611fb0613599565b5b6020026020010151602001519350505050611fd8565b8080600101915050611f67565b5f80fd5b90565b8073ffffffffffffffffffffffffffffffffffffffff16ff5b611ffc612b0e565b612004612a4d565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663907327e973107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b815260040161207f90614be5565b602060405180830381865afa15801561209a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120be9190613668565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dbfb12ef6040518163ffffffff1660e01b815260040161210990614c4d565b602060405180830381865afa158015612124573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121489190613668565b85856040518563ffffffff1660e01b81526004016121699493929190613ae4565b5f604051808303815f875af1158015612184573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906121ac9190613d5b565b505050565b6121b9612a4d565b81815f019067ffffffffffffffff16908167ffffffffffffffff1681525050600167ffffffffffffffff8111156121f3576121f2612b92565b5b6040519080825280602002602001820160405280156122215781602001602082028036833780820191505090505b5081604001819052508281604001515f8151811061224257612241613599565b5b60200260200101818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663423fa15133836040518363ffffffff1660e01b815260040161229d9291906140fd565b5f604051808303815f87803b1580156122b4575f80fd5b505af11580156122c6573d5f803e3d5ffd5b505050506122d2612a4d565b600167ffffffffffffffff8111156122ed576122ec612b92565b5b60405190808252806020026020018201604052801561231b5781602001602082028036833780820191505090505b5081604001819052508381604001515f8151811061233c5761233b613599565b5b602002602001018181525050612350612a91565b612358612adf565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b7a53f538885600186866040518663ffffffff1660e01b81526004016123ae95949392919061438e565b5f604051808303815f87803b1580156123c5575f80fd5b505af11580156123d7573d5f803e3d5ffd5b5050505050505050505050565b5f606073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1660405160240161242190614cb5565b6040516020818303038152906040527fe6c75c6b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516124ab9190614d0d565b5f604051808303815f865af19150503d805f81146124e4576040519150601f19603f3d011682016040523d82523d5f602084013e6124e9565b606091505b50809250819350505081612532576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252990614d6d565b60405180910390fd5b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f564b81ef000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516125ed9190614d0d565b5f60405180830381855afa9150503d805f8114612625576040519150601f19603f3d011682016040523d82523d5f602084013e61262a565b606091505b50809250819350505081612673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266a90614dfb565b60405180910390fd5b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166040516024016126ad90614e63565b6040516020818303038152906040527fe6c75c6b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516127379190614d0d565b5f60405180830381855afa9150503d805f811461276f576040519150601f19603f3d011682016040523d82523d5f602084013e612774565b606091505b50809250819350505081156127be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b590614ef1565b60405180910390fd5b5050565b6101f481565b5b6127105a10612803577ff9c7a13c2c2ddb716633ae77fd03fb7d2e3bf5ab3a45ba50ec2d3decc9ee650c60405160405180910390a16127c9565b565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6c75c6b826040518263ffffffff1660e01b81526004016128529190614885565b5f604051808303815f87803b158015612869575f80fd5b505af115801561287b573d5f803e3d5ffd5b5050505050565b61288a612b21565b60208251146128ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c590614f59565b60405180910390fd5b6128d6612b21565b602267ffffffffffffffff8111156128f1576128f0612b92565b5b6040519080825280601f01601f1916602001820160405280156129235781602001600182028036833780820191505090505b50815f0181905250600160f81b815f01515f8151811061294657612945613599565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f60f81b815f015160018151811061298f5761298e613599565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8351811015612a43578381815181106129db576129da613599565b5b602001015160f81c60f81b825f01516002836129f79190614f77565b81518110612a0857612a07613599565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535080806001019150506129bf565b5080915050919050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b604051806040016040528060608152602001606081525090565b6040518060a001604052805f63ffffffff1681526020015f63ffffffff168152602001612abc612b0e565b8152602001612ac9612a4d565b81526020015f67ffffffffffffffff1681525090565b60405180604001604052805f60070b8152602001612afb612b34565b81525090565b61012a80614fab83390190565b6040518060200160405280606081525090565b6040518060200160405280606081525090565b60405180604001604052805f60070b8152602001612b50612b56565b81525090565b6040518060200160405280606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612bc882612b82565b810181811067ffffffffffffffff82111715612be757612be6612b92565b5b80604052505050565b5f612bf9612b69565b9050612c058282612bbf565b919050565b5f67ffffffffffffffff821115612c2457612c23612b92565b5b612c2d82612b82565b9050602081019050919050565b828183375f83830152505050565b5f612c5a612c5584612c0a565b612bf0565b905082815260208101848484011115612c7657612c75612b7e565b5b612c81848285612c3a565b509392505050565b5f82601f830112612c9d57612c9c612b7a565b5b8135612cad848260208601612c48565b91505092915050565b5f60208284031215612ccb57612cca612b72565b5b5f82013567ffffffffffffffff811115612ce857612ce7612b76565b5b612cf484828501612c89565b91505092915050565b5f80fd5b5f80fd5b5f60208284031215612d1a57612d19612cfd565b5b612d246020612bf0565b90505f82013567ffffffffffffffff811115612d4357612d42612d01565b5b612d4f84828501612c89565b5f8301525092915050565b5f67ffffffffffffffff82169050919050565b612d7681612d5a565b8114612d80575f80fd5b50565b5f81359050612d9181612d6d565b92915050565b5f8060408385031215612dad57612dac612b72565b5b5f83013567ffffffffffffffff811115612dca57612dc9612b76565b5b612dd685828601612d05565b9250506020612de785828601612d83565b9150509250929050565b5f63ffffffff82169050919050565b612e0981612df1565b8114612e13575f80fd5b50565b5f81359050612e2481612e00565b92915050565b5f819050919050565b612e3c81612e2a565b8114612e46575f80fd5b50565b5f81359050612e5781612e33565b92915050565b5f805f60608486031215612e7457612e73612b72565b5b5f612e8186828701612e16565b9350506020612e9286828701612e49565b9250506040612ea386828701612d83565b9150509250925092565b5f819050919050565b5f612ec082612ead565b9050919050565b612ed081612eb6565b82525050565b5f602082019050612ee95f830184612ec7565b92915050565b5f60208284031215612f0457612f03612cfd565b5b612f0e6020612bf0565b90505f82013567ffffffffffffffff811115612f2d57612f2c612d01565b5b612f3984828501612c89565b5f8301525092915050565b5f67ffffffffffffffff821115612f5e57612f5d612b92565b5b602082029050602081019050919050565b5f80fd5b5f60208284031215612f8857612f87612cfd565b5b612f926020612bf0565b90505f82013567ffffffffffffffff811115612fb157612fb0612d01565b5b612fbd84828501612c89565b5f8301525092915050565b5f60408284031215612fdd57612fdc612cfd565b5b612fe76040612bf0565b90505f82013567ffffffffffffffff81111561300657613005612d01565b5b61301284828501612f73565b5f83015250602061302584828501612e49565b60208301525092915050565b5f61304361303e84612f44565b612bf0565b9050808382526020820190506020840283018581111561306657613065612f6f565b5b835b818110156130ad57803567ffffffffffffffff81111561308b5761308a612b7a565b5b8086016130988982612fc8565b85526020850194505050602081019050613068565b5050509392505050565b5f82601f8301126130cb576130ca612b7a565b5b81356130db848260208601613031565b91505092915050565b5f67ffffffffffffffff8211156130fe576130fd612b92565b5b602082029050602081019050919050565b61311881612ead565b8114613122575f80fd5b50565b5f813590506131338161310f565b92915050565b5f61314b613146846130e4565b612bf0565b9050808382526020820190506020840283018581111561316e5761316d612f6f565b5b835b8181101561319757806131838882613125565b845260208401935050602081019050613170565b5050509392505050565b5f82601f8301126131b5576131b4612b7a565b5b81356131c5848260208601613139565b91505092915050565b5f606082840312156131e3576131e2612cfd565b5b6131ed6060612bf0565b90505f6131fc84828501612d83565b5f83015250602082013567ffffffffffffffff81111561321f5761321e612d01565b5b61322b848285016130b7565b602083015250604082013567ffffffffffffffff81111561324f5761324e612d01565b5b61325b848285016131a1565b60408301525092915050565b5f806040838503121561327d5761327c612b72565b5b5f83013567ffffffffffffffff81111561329a57613299612b76565b5b6132a685828601612eef565b925050602083013567ffffffffffffffff8111156132c7576132c6612b76565b5b6132d3858286016131ce565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613306826132dd565b9050919050565b613316816132fc565b8114613320575f80fd5b50565b5f813590506133318161330d565b92915050565b5f806040838503121561334d5761334c612b72565b5b5f61335a85828601613323565b925050602061336b85828601612e49565b9150509250929050565b5f67ffffffffffffffff82111561338f5761338e612b92565b5b61339882612b82565b9050602081019050919050565b5f6133b76133b284613375565b612bf0565b9050828152602081018484840111156133d3576133d2612b7e565b5b6133de848285612c3a565b509392505050565b5f82601f8301126133fa576133f9612b7a565b5b813561340a8482602086016133a5565b91505092915050565b5f6020828403121561342857613427612b72565b5b5f82013567ffffffffffffffff81111561344557613444612b76565b5b613451848285016133e6565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f61348c8261345a565b6134968185613464565b93506134a6818560208601613474565b6134af81612b82565b840191505092915050565b5f6020820190508181035f8301526134d28184613482565b905092915050565b5f602082840312156134ef576134ee612b72565b5b5f6134fc84828501613323565b91505092915050565b5f805f6060848603121561351c5761351b612b72565b5b5f84013567ffffffffffffffff81111561353957613538612b76565b5b61354586828701612d05565b935050602061355686828701613125565b925050604061356786828701612d83565b9150509250925092565b61357a81612d5a565b82525050565b5f6020820190506135935f830184613571565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82825260208201905092915050565b7f6163636f756e74730000000000000000000000000000000000000000000000005f82015250565b5f61360a6008836135c6565b9150613615826135d6565b602082019050919050565b5f6020820190508181035f830152613637816135fe565b9050919050565b61364781612df1565b8114613651575f80fd5b50565b5f815190506136628161363e565b92915050565b5f6020828403121561367d5761367c612b72565b5b5f61368a84828501613654565b91505092915050565b7f6d696e744e4654000000000000000000000000000000000000000000000000005f82015250565b5f6136c76007836135c6565b91506136d282613693565b602082019050919050565b5f6020820190508181035f8301526136f4816136bb565b9050919050565b5f819050919050565b5f61371e61371961371484612df1565b6136fb565b612df1565b9050919050565b61372e81613704565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f6137778261345a565b613781818561375d565b9350613791818560208601613474565b61379a81612b82565b840191505092915050565b5f604083015f8301518482035f8601526137bf828261376d565b915050602083015184820360208601526137d9828261376d565b9150508091505092915050565b5f6137f183836137a5565b905092915050565b5f602082019050919050565b5f61380f82613734565b613819818561373e565b93508360208202850161382b8561374e565b805f5b85811015613866578484038952815161384785826137e6565b9450613852836137f9565b925060208a0199505060018101905061382e565b50829750879550505050505092915050565b5f602083015f8301518482035f8601526138928282613805565b9150508091505092915050565b6138a881612d5a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f602083015f8301518482035f8601526138f1828261376d565b9150508091505092915050565b61390781612e2a565b82525050565b5f604083015f8301518482035f86015261392782826138d7565b915050602083015161393c60208601826138fe565b508091505092915050565b5f613952838361390d565b905092915050565b5f602082019050919050565b5f613970826138ae565b61397a81856138b8565b93508360208202850161398c856138c8565b805f5b858110156139c757848403895281516139a88582613947565b94506139b38361395a565b925060208a0199505060018101905061398f565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613a0b81612eb6565b82525050565b5f613a1c8383613a02565b60208301905092915050565b5f602082019050919050565b5f613a3e826139d9565b613a4881856139e3565b9350613a53836139f3565b805f5b83811015613a83578151613a6a8882613a11565b9750613a7583613a28565b925050600181019050613a56565b5085935050505092915050565b5f606083015f830151613aa55f86018261389f565b5060208301518482036020860152613abd8282613966565b91505060408301518482036040860152613ad78282613a34565b9150508091505092915050565b5f608082019050613af75f830187613725565b613b046020830186613725565b8181036040830152613b168185613878565b90508181036060830152613b2a8184613a90565b905095945050505050565b5f67ffffffffffffffff821115613b4f57613b4e612b92565b5b602082029050602081019050919050565b5f613b72613b6d84612c0a565b612bf0565b905082815260208101848484011115613b8e57613b8d612b7e565b5b613b99848285613474565b509392505050565b5f82601f830112613bb557613bb4612b7a565b5b8151613bc5848260208601613b60565b91505092915050565b5f60408284031215613be357613be2612cfd565b5b613bed6040612bf0565b90505f82015167ffffffffffffffff811115613c0c57613c0b612d01565b5b613c1884828501613ba1565b5f83015250602082015167ffffffffffffffff811115613c3b57613c3a612d01565b5b613c4784828501613ba1565b60208301525092915050565b5f613c65613c6084613b35565b612bf0565b90508083825260208201905060208402830185811115613c8857613c87612f6f565b5b835b81811015613ccf57805167ffffffffffffffff811115613cad57613cac612b7a565b5b808601613cba8982613bce565b85526020850194505050602081019050613c8a565b5050509392505050565b5f82601f830112613ced57613cec612b7a565b5b8151613cfd848260208601613c53565b91505092915050565b5f60208284031215613d1b57613d1a612cfd565b5b613d256020612bf0565b90505f82015167ffffffffffffffff811115613d4457613d43612d01565b5b613d5084828501613cd9565b5f8301525092915050565b5f60208284031215613d7057613d6f612b72565b5b5f82015167ffffffffffffffff811115613d8d57613d8c612b76565b5b613d9984828501613d06565b91505092915050565b5f613dac826132dd565b9050919050565b613dbc81613da2565b82525050565b5f602082019050613dd55f830184613db3565b92915050565b5f81519050613de981612d6d565b92915050565b5f60208284031215613e0457613e03612cfd565b5b613e0e6020612bf0565b90505f82015167ffffffffffffffff811115613e2d57613e2c612d01565b5b613e3984828501613ba1565b5f8301525092915050565b5f81519050613e5281612e33565b92915050565b5f60408284031215613e6d57613e6c612cfd565b5b613e776040612bf0565b90505f82015167ffffffffffffffff811115613e9657613e95612d01565b5b613ea284828501613def565b5f830152506020613eb584828501613e44565b60208301525092915050565b5f613ed3613ece84612f44565b612bf0565b90508083825260208201905060208402830185811115613ef657613ef5612f6f565b5b835b81811015613f3d57805167ffffffffffffffff811115613f1b57613f1a612b7a565b5b808601613f288982613e58565b85526020850194505050602081019050613ef8565b5050509392505050565b5f82601f830112613f5b57613f5a612b7a565b5b8151613f6b848260208601613ec1565b91505092915050565b5f81519050613f828161310f565b92915050565b5f613f9a613f95846130e4565b612bf0565b90508083825260208201905060208402830185811115613fbd57613fbc612f6f565b5b835b81811015613fe65780613fd28882613f74565b845260208401935050602081019050613fbf565b5050509392505050565b5f82601f83011261400457614003612b7a565b5b8151614014848260208601613f88565b91505092915050565b5f6060828403121561403257614031612cfd565b5b61403c6060612bf0565b90505f61404b84828501613ddb565b5f83015250602082015167ffffffffffffffff81111561406e5761406d612d01565b5b61407a84828501613f47565b602083015250604082015167ffffffffffffffff81111561409e5761409d612d01565b5b6140aa84828501613ff0565b60408301525092915050565b5f602082840312156140cb576140ca612b72565b5b5f82015167ffffffffffffffff8111156140e8576140e7612b76565b5b6140f48482850161401d565b91505092915050565b5f6040820190506141105f830185613db3565b81810360208301526141228184613a90565b90509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61416282612d5a565b915061416d83612d5a565b9250828203905067ffffffffffffffff81111561418d5761418c61412b565b5b92915050565b5f602083015f8301518482035f8601526141ad828261376d565b9150508091505092915050565b5f8115159050919050565b6141ce816141ba565b82525050565b6141dd81613704565b82525050565b5f602083015f8301518482035f8601526141fd8282613805565b9150508091505092915050565b5f606083015f83015161421f5f86018261389f565b50602083015184820360208601526142378282613966565b915050604083015184820360408601526142518282613a34565b9150508091505092915050565b5f60a083015f8301516142735f8601826141d4565b50602083015161428660208601826141d4565b506040830151848203604086015261429e82826141e3565b915050606083015184820360608601526142b8828261420a565b91505060808301516142cd608086018261389f565b508091505092915050565b5f8160070b9050919050565b6142ed816142d8565b82525050565b5f602083015f8301518482035f86015261430d828261376d565b9150508091505092915050565b5f604083015f83015161432f5f8601826142e4565b506020830151848203602086015261434782826142f3565b9150508091505092915050565b5f604083015f8301516143695f8601826142e4565b5060208301518482036020860152614381828261431a565b9150508091505092915050565b5f60a0820190508181035f8301526143a68188614193565b905081810360208301526143ba8187613a90565b90506143c960408301866141c5565b81810360608301526143db818561425e565b905081810360808301526143ef8184614354565b90509695505050505050565b5f602082840312156144105761440f612cfd565b5b61441a6020612bf0565b90505f82015167ffffffffffffffff81111561443957614438612d01565b5b61444584828501613ba1565b5f8301525092915050565b5f6020828403121561446557614464612b72565b5b5f82015167ffffffffffffffff81111561448257614481612b76565b5b61448e848285016143fb565b91505092915050565b5f602082840312156144ac576144ab612cfd565b5b6144b66020612bf0565b90505f82015167ffffffffffffffff8111156144d5576144d4612d01565b5b6144e184828501613ba1565b5f8301525092915050565b5f6020828403121561450157614500612b72565b5b5f82015167ffffffffffffffff81111561451e5761451d612b76565b5b61452a84828501614497565b91505092915050565b5f602083015f8301518482035f86015261454d828261376d565b9150508091505092915050565b5f6020820190508181035f8301526145728184614533565b905092915050565b61458381612ead565b811461458d575f80fd5b50565b5f8151905061459e8161457a565b92915050565b5f602082840312156145b9576145b8612b72565b5b5f6145c684828501614590565b91505092915050565b6145d881612ead565b82525050565b5f6020820190506145f15f8301846145cf565b92915050565b61460081612df1565b82525050565b61460f81612e2a565b82525050565b5f6060820190506146285f8301866145f7565b6146356020830185614606565b81810360408301526146478184613a90565b9050949350505050565b5f602083015f8301518482035f86015261466b828261376d565b9150508091505092915050565b5f6020820190508181035f8301526146908184614651565b905092915050565b5f819050919050565b5f60ff82169050919050565b5f6146c76146c26146bd84614698565b6136fb565b6146a1565b9050919050565b6146d7816146ad565b82525050565b5f6020820190506146f05f8301846146ce565b92915050565b7f666f6f62617200000000000000000000000000000000000000000000000000005f82015250565b5f61472a6006836135c6565b9150614735826146f6565b602082019050919050565b5f6020820190508181035f8301526147578161471e565b9050919050565b61476781612ead565b8114614771575f80fd5b50565b5f815190506147828161475e565b92915050565b5f6020828403121561479d5761479c612b72565b5b5f6147aa84828501614774565b91505092915050565b7f7472616e73666572416c6c6f77616e6365546f000000000000000000000000005f82015250565b5f6147e76013836135c6565b91506147f2826147b3565b602082019050919050565b5f6020820190508181035f830152614814816147db565b9050919050565b614824816132fc565b82525050565b5f60208201905061483d5f83018461481b565b92915050565b5f81519050919050565b5f61485782614843565b61486181856135c6565b9350614871818560208601613474565b61487a81612b82565b840191505092915050565b5f6020820190508181035f83015261489d818461484d565b905092915050565b7f696e63636f756e746572000000000000000000000000000000000000000000005f82015250565b5f6148d9600a836135c6565b91506148e4826148a5565b602082019050919050565b5f6020820190508181035f830152614906816148cd565b9050919050565b7f696e63436f756e746572000000000000000000000000000000000000000000005f82015250565b5f614941600a836135c6565b915061494c8261490d565b602082019050919050565b5f6020820190508181035f83015261496e81614935565b9050919050565b6b010000000000000000000000815250565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b5f819050919050565b6149cc6149c782614987565b6149b2565b82525050565b7604000000b3ee6942000000000000000000000000000000815250565b5f6149f982614975565b601582019150614a0982846149bb565b601482019150614a18826149d2565b60118201915081905092915050565b7f65766d00000000000000000000000000000000000000000000000000000000005f82015250565b5f614a5b6003836135c6565b9150614a6682614a27565b602082019050919050565b5f6020820190508181035f830152614a8881614a4f565b9050919050565b7f63616c6c436f6e747261637400000000000000000000000000000000000000005f82015250565b5f614ac3600c836135c6565b9150614ace82614a8f565b602082019050919050565b5f6020820190508181035f830152614af081614ab7565b9050919050565b5f606082019050614b0a5f830186613725565b614b176020830185613725565b8181036040830152614b298184613878565b9050949350505050565b7f62616c616e6365000000000000000000000000000000000000000000000000005f82015250565b5f614b676007836135c6565b9150614b7282614b33565b602082019050919050565b5f6020820190508181035f830152614b9481614b5b565b9050919050565b7f676f7665726e616e6365000000000000000000000000000000000000000000005f82015250565b5f614bcf600a836135c6565b9150614bda82614b9b565b602082019050919050565b5f6020820190508181035f830152614bfc81614bc3565b9050919050565b7f636c61696d436861696e4f776e657273686970000000000000000000000000005f82015250565b5f614c376013836135c6565b9150614c4282614c03565b602082019050919050565b5f6020820190508181035f830152614c6481614c2b565b9050919050565b7f6e6f6e2d737461746963000000000000000000000000000000000000000000005f82015250565b5f614c9f600a836135c6565b9150614caa82614c6b565b602082019050919050565b5f6020820190508181035f830152614ccc81614c93565b9050919050565b5f81905092915050565b5f614ce78261345a565b614cf18185614cd3565b9350614d01818560208601613474565b80840191505092915050565b5f614d188284614cdd565b915081905092915050565b7f63616c6c2073686f756c642073756363656564000000000000000000000000005f82015250565b5f614d576013836135c6565b9150614d6282614d23565b602082019050919050565b5f6020820190508181035f830152614d8481614d4b565b9050919050565b7f73746174696363616c6c20746f20766965772073686f756c64207375636365655f8201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b5f614de56021836135c6565b9150614df082614d8b565b604082019050919050565b5f6020820190508181035f830152614e1281614dd9565b9050919050565b7f73746174696300000000000000000000000000000000000000000000000000005f82015250565b5f614e4d6006836135c6565b9150614e5882614e19565b602082019050919050565b5f6020820190508181035f830152614e7a81614e41565b9050919050565b7f73746174696363616c6c20746f206e6f6e2d766965772073686f756c642066615f8201527f696c000000000000000000000000000000000000000000000000000000000000602082015250565b5f614edb6022836135c6565b9150614ee682614e81565b604082019050919050565b5f6020820190508181035f830152614f0881614ecf565b9050919050565b7f6261642061646472657373206c656e67746800000000000000000000000000005f82015250565b5f614f436012836135c6565b9150614f4e82614f0f565b602082019050919050565b5f6020820190508181035f830152614f7081614f37565b9050919050565b5f614f8182612e2a565b9150614f8c83612e2a565b9250828201905080821115614fa457614fa361412b565b5b9291505056fe6080604052348015600e575f80fd5b5061010e8061001c5f395ff3fe6080604052348015600e575f80fd5b50600436106026575f3560e01c8063bcfb195914602a575b5f80fd5b60406004803603810190603c919060b2565b6042565b005b8073ffffffffffffffffffffffffffffffffffffffff16ff5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f608682605f565b9050919050565b609481607e565b8114609d575f80fd5b50565b5f8135905060ac81608d565b92915050565b5f6020828403121560c45760c3605b565b5b5f60cf8482850160a0565b9150509291505056fea2646970667358221220a41c7a6e911baa9745960580bdd0fdc6823695ec3789fe87a5f8726a09b5b30a64736f6c634300081a0033a26469706673582212201072a3a0ad505213edb5a2c43bcef84f1c74cf99b15908ed2941082c729ecb8e64736f6c634300081a0033 \ No newline at end of file diff --git a/packages/evm/evmtest/ISCTest.sol b/packages/evm/evmtest/ISCTest.sol index f37ae2cc0f..c49416514d 100644 --- a/packages/evm/evmtest/ISCTest.sol +++ b/packages/evm/evmtest/ISCTest.sol @@ -167,6 +167,16 @@ contract ISCTest { selfdestruct(beneficiary); } + event TestSelfDestruct6780ContractCreated(address); + + function testSelfDestruct6780() public{ + // deploy a new contract instance + SelfDestruct6780 c = new SelfDestruct6780(); + emit TestSelfDestruct6780ContractCreated(address(c)); + // call selfdestruct in the same tx + c.testSelfDestruct(payable(msg.sender)); + } + event LoopEvent(); function loopWithGasLeft() public { @@ -257,3 +267,9 @@ contract ISCTest { } } + +contract SelfDestruct6780{ + function testSelfDestruct(address payable beneficiary) public { + selfdestruct(beneficiary); + } +} \ No newline at end of file diff --git a/packages/evm/evmtest/RevertTest.bin b/packages/evm/evmtest/RevertTest.bin index d8eb5514fd..512e18dba1 100644 --- a/packages/evm/evmtest/RevertTest.bin +++ b/packages/evm/evmtest/RevertTest.bin @@ -1 +1 @@ -60806040525f805f6101000a81548163ffffffff021916908363ffffffff16021790555034801561002e575f80fd5b5061022c8061003c5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c806306661abd146100435780630f1146e914610061578063e3b2f8311461006b575b5f80fd5b61004b610075565b6040516100589190610179565b60405180910390f35b610069610088565b005b6100736100c5565b005b5f8054906101000a900463ffffffff1681565b60015f8054906101000a900463ffffffff166100a491906101bf565b5f806101000a81548163ffffffff021916908363ffffffff16021790555f80fd5b5f3073ffffffffffffffffffffffffffffffffffffffff16630f1146e96040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561010b575f80fd5b505af192505050801561011c575060015b610128575f905061012d565b600190505b8015610137575f80fd5b5f805f9054906101000a900463ffffffff1663ffffffff1614610158575f80fd5b50565b5f63ffffffff82169050919050565b6101738161015b565b82525050565b5f60208201905061018c5f83018461016a565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6101c98261015b565b91506101d48361015b565b9250828201905063ffffffff8111156101f0576101ef610192565b5b9291505056fea26469706673582212207baa8be33aa69f61004c8453f0ab3c68f36e3c8ee560d8157a4707b88861103164736f6c63430008180033 \ No newline at end of file +60806040525f805f6101000a81548163ffffffff021916908363ffffffff160217905550348015602d575f80fd5b5061022c8061003b5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c806306661abd146100435780630f1146e914610061578063e3b2f8311461006b575b5f80fd5b61004b610075565b6040516100589190610179565b60405180910390f35b610069610088565b005b6100736100c5565b005b5f8054906101000a900463ffffffff1681565b60015f8054906101000a900463ffffffff166100a491906101bf565b5f806101000a81548163ffffffff021916908363ffffffff16021790555f80fd5b5f3073ffffffffffffffffffffffffffffffffffffffff16630f1146e96040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561010b575f80fd5b505af192505050801561011c575060015b610128575f905061012d565b600190505b8015610137575f80fd5b5f805f9054906101000a900463ffffffff1663ffffffff1614610158575f80fd5b50565b5f63ffffffff82169050919050565b6101738161015b565b82525050565b5f60208201905061018c5f83018461016a565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6101c98261015b565b91506101d48361015b565b9250828201905063ffffffff8111156101f0576101ef610192565b5b9291505056fea26469706673582212204f9e0ea25ab2b961c890db9a7ab853e3a92eca4f4edd8c055fb11b39fe16704064736f6c634300081a0033 \ No newline at end of file diff --git a/packages/evm/evmtest/SelfDestruct6780.abi b/packages/evm/evmtest/SelfDestruct6780.abi new file mode 100644 index 0000000000..a8dee6c46a --- /dev/null +++ b/packages/evm/evmtest/SelfDestruct6780.abi @@ -0,0 +1 @@ +[{"inputs":[{"internalType":"address payable","name":"beneficiary","type":"address"}],"name":"testSelfDestruct","outputs":[],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/packages/evm/evmtest/SelfDestruct6780.bin b/packages/evm/evmtest/SelfDestruct6780.bin new file mode 100644 index 0000000000..951e39679b --- /dev/null +++ b/packages/evm/evmtest/SelfDestruct6780.bin @@ -0,0 +1 @@ +6080604052348015600e575f80fd5b5061010e8061001c5f395ff3fe6080604052348015600e575f80fd5b50600436106026575f3560e01c8063bcfb195914602a575b5f80fd5b60406004803603810190603c919060b2565b6042565b005b8073ffffffffffffffffffffffffffffffffffffffff16ff5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f608682605f565b9050919050565b609481607e565b8114609d575f80fd5b50565b5f8135905060ac81608d565b92915050565b5f6020828403121560c45760c3605b565b5b5f60cf8482850160a0565b9150509291505056fea2646970667358221220a41c7a6e911baa9745960580bdd0fdc6823695ec3789fe87a5f8726a09b5b30a64736f6c634300081a0033 \ No newline at end of file diff --git a/packages/evm/evmtest/Storage.bin b/packages/evm/evmtest/Storage.bin index 6341c2bf8a..6ca88fa398 100644 --- a/packages/evm/evmtest/Storage.bin +++ b/packages/evm/evmtest/Storage.bin @@ -1 +1 @@ -608060405234801561000f575f80fd5b5060405161027338038061027383398181016040528101906100319190610093565b805f806101000a81548163ffffffff021916908363ffffffff160217905550506100be565b5f80fd5b5f63ffffffff82169050919050565b6100728161005a565b811461007c575f80fd5b50565b5f8151905061008d81610069565b92915050565b5f602082840312156100a8576100a7610056565b5b5f6100b58482850161007f565b91505092915050565b6101a8806100cb5f395ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c80632e64cec114610038578063b9e9538214610056575b5f80fd5b610040610072565b60405161004d9190610100565b60405180910390f35b610070600480360381019061006b9190610147565b610089565b005b5f805f9054906101000a900463ffffffff16905090565b805f806101000a81548163ffffffff021916908363ffffffff1602179055507f1216415e6088a976b049b2d1fc9e52c96a2199b400aa37dc4aa9585710d03b87816040516100d79190610100565b60405180910390a150565b5f63ffffffff82169050919050565b6100fa816100e2565b82525050565b5f6020820190506101135f8301846100f1565b92915050565b5f80fd5b610126816100e2565b8114610130575f80fd5b50565b5f813590506101418161011d565b92915050565b5f6020828403121561015c5761015b610119565b5b5f61016984828501610133565b9150509291505056fea264697066735822122024da90d1fa604bc0ab6912e24a5986ee5ea7a00287582ec8824d9b172a14e8dd64736f6c63430008180033 \ No newline at end of file +6080604052348015600e575f80fd5b506040516102653803806102658339818101604052810190602e9190608a565b805f806101000a81548163ffffffff021916908363ffffffff1602179055505060b0565b5f80fd5b5f63ffffffff82169050919050565b606c816056565b81146075575f80fd5b50565b5f815190506084816065565b92915050565b5f60208284031215609c57609b6052565b5b5f60a7848285016078565b91505092915050565b6101a8806100bd5f395ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c80632e64cec114610038578063b9e9538214610056575b5f80fd5b610040610072565b60405161004d9190610100565b60405180910390f35b610070600480360381019061006b9190610147565b610089565b005b5f805f9054906101000a900463ffffffff16905090565b805f806101000a81548163ffffffff021916908363ffffffff1602179055507f1216415e6088a976b049b2d1fc9e52c96a2199b400aa37dc4aa9585710d03b87816040516100d79190610100565b60405180910390a150565b5f63ffffffff82169050919050565b6100fa816100e2565b82525050565b5f6020820190506101135f8301846100f1565b92915050565b5f80fd5b610126816100e2565b8114610130575f80fd5b50565b5f813590506101418161011d565b92915050565b5f6020828403121561015c5761015b610119565b5b5f61016984828501610133565b9150509291505056fea2646970667358221220b6a2eaaa26e183d45172682decbc0b1b42dacee37a47886c5d3f7235d250e9d664736f6c634300081a0033 \ No newline at end of file diff --git a/packages/evm/jsonrpc/chainbackend.go b/packages/evm/jsonrpc/chainbackend.go index 302e44b199..a3dd0dbe4f 100644 --- a/packages/evm/jsonrpc/chainbackend.go +++ b/packages/evm/jsonrpc/chainbackend.go @@ -23,7 +23,7 @@ type ChainBackend interface { EVMSendTransaction(tx *types.Transaction) error EVMCall(aliasOutput *isc.AliasOutputWithID, callMsg ethereum.CallMsg) ([]byte, error) EVMEstimateGas(aliasOutput *isc.AliasOutputWithID, callMsg ethereum.CallMsg) (uint64, error) - EVMTraceTransaction(aliasOutput *isc.AliasOutputWithID, blockTime time.Time, iscRequestsInBlock []isc.Request, txIndex uint64, tracer tracers.Tracer) error + EVMTraceTransaction(aliasOutput *isc.AliasOutputWithID, blockTime time.Time, iscRequestsInBlock []isc.Request, txIndex uint64, tracer *tracers.Tracer) error FeePolicy(blockIndex uint32) (*gas.FeePolicy, error) ISCChainID() *isc.ChainID ISCCallView(chainState state.State, scName string, funName string, args dict.Dict) (dict.Dict, error) diff --git a/packages/evm/jsonrpc/evmchain.go b/packages/evm/jsonrpc/evmchain.go index 28b1bb4c5a..ae2f0bd50e 100644 --- a/packages/evm/jsonrpc/evmchain.go +++ b/packages/evm/jsonrpc/evmchain.go @@ -648,12 +648,8 @@ func (e *EVMChain) TraceTransaction(txHash common.Hash, config *tracers.TraceCon if config.Tracer != nil { tracerType = *config.Tracer } - tracer, err := newTracer(tracerType, config.TracerConfig) - if err != nil { - return nil, err - } - _, _, blockNumber, txIndex, err := e.TransactionByHash(txHash) + _, blockHash, blockNumber, txIndex, err := e.TransactionByHash(txHash) if err != nil { return nil, err } @@ -666,6 +662,16 @@ func (e *EVMChain) TraceTransaction(txHash common.Hash, config *tracers.TraceCon return nil, err } + tracer, err := newTracer(tracerType, &tracers.Context{ + BlockHash: blockHash, + BlockNumber: new(big.Int).SetUint64(blockNumber), + TxIndex: int(txIndex), + TxHash: txHash, + }, config.TracerConfig) + if err != nil { + return nil, err + } + err = e.backend.EVMTraceTransaction( iscBlock.PreviousAliasOutput, iscBlock.Timestamp, diff --git a/packages/evm/jsonrpc/jsonrpctest/jsonrpc_test.go b/packages/evm/jsonrpc/jsonrpctest/jsonrpc_test.go index b17aff25a8..007e84cce4 100644 --- a/packages/evm/jsonrpc/jsonrpctest/jsonrpc_test.go +++ b/packages/evm/jsonrpc/jsonrpctest/jsonrpc_test.go @@ -579,7 +579,7 @@ func TestRPCTraceTx(t *testing.T) { tracers.TraceConfig{TracerConfig: []byte(`{"tracer": "callTracer"}`)}, ) require.NoError(t, err) - lastCallRegExp := regexp.MustCompile(`.*{"type":"CALL",.+"to":"0x([a-zA-Z0-9_.-]+)".*}`) + lastCallRegExp := regexp.MustCompile(`{.+"to":"0x([a-zA-Z0-9_.-]+)".*}`) match1 := lastCallRegExp.Find(res1) match2 := lastCallRegExp.Find(res2) require.NotEqual(t, match1, match2) diff --git a/packages/evm/jsonrpc/service.go b/packages/evm/jsonrpc/service.go index 535fd7ac91..81c5c2f808 100644 --- a/packages/evm/jsonrpc/service.go +++ b/packages/evm/jsonrpc/service.go @@ -416,8 +416,6 @@ func (e *EthService) NewHeads(ctx context.Context) (*rpc.Subscription, error) { _ = notifier.Notify(rpcSub.ID, h) case <-rpcSub.Err(): return - case <-notifier.Closed(): - return } } }() @@ -446,8 +444,6 @@ func (e *EthService) Logs(ctx context.Context, q *RPCFilterQuery) (*rpc.Subscrip } case <-rpcSub.Err(): return - case <-notifier.Closed(): - return } } }() diff --git a/packages/evm/jsonrpc/tracer.go b/packages/evm/jsonrpc/tracer.go index 38a34f8578..8f0a419c15 100644 --- a/packages/evm/jsonrpc/tracer.go +++ b/packages/evm/jsonrpc/tracer.go @@ -7,7 +7,7 @@ import ( "github.com/ethereum/go-ethereum/eth/tracers" ) -type tracerFactory func(cfg json.RawMessage) (tracers.Tracer, error) +type tracerFactory func(*tracers.Context, json.RawMessage) (*tracers.Tracer, error) var allTracers = map[string]tracerFactory{} @@ -15,10 +15,10 @@ func registerTracer(tracerType string, fn tracerFactory) { allTracers[tracerType] = fn } -func newTracer(tracerType string, cfg json.RawMessage) (tracers.Tracer, error) { +func newTracer(tracerType string, ctx *tracers.Context, cfg json.RawMessage) (*tracers.Tracer, error) { fn := allTracers[tracerType] if fn == nil { return nil, fmt.Errorf("unsupported tracer type: %s", tracerType) } - return fn(cfg) + return fn(ctx, cfg) } diff --git a/packages/evm/jsonrpc/tracer_call.go b/packages/evm/jsonrpc/tracer_call.go index 53bc195751..bd5e910939 100644 --- a/packages/evm/jsonrpc/tracer_call.go +++ b/packages/evm/jsonrpc/tracer_call.go @@ -4,11 +4,13 @@ import ( "encoding/json" "errors" "math/big" - "strconv" - "strings" "sync/atomic" + "github.com/ethereum/go-ethereum/accounts/abi" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/core/tracing" + "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/eth/tracers" ) @@ -19,36 +21,114 @@ func init() { // CallFrame contains the result of a trace with "callTracer". // Code is 100% copied from go-ethereum (since the type is unexported there) + +type callLog struct { + Address common.Address `json:"address"` + Topics []common.Hash `json:"topics"` + Data hexutil.Bytes `json:"data"` + // Position of the log relative to subcalls within the same trace + // See https://github.com/ethereum/go-ethereum/pull/28389 for details + Position hexutil.Uint `json:"position"` +} + type CallFrame struct { - Type string `json:"type"` - From string `json:"from"` - To string `json:"to,omitempty"` - Value string `json:"value,omitempty"` - Gas string `json:"gas"` - GasUsed string `json:"gasUsed"` - Input string `json:"input"` - Output string `json:"output,omitempty"` - Error string `json:"error,omitempty"` - Calls []CallFrame `json:"calls,omitempty"` + Type vm.OpCode `json:"-"` + From common.Address `json:"from"` + Gas uint64 `json:"gas"` + GasUsed uint64 `json:"gasUsed"` + To *common.Address `json:"to,omitempty" rlp:"optional"` + Input []byte `json:"input" rlp:"optional"` + Output []byte `json:"output,omitempty" rlp:"optional"` + Error string `json:"error,omitempty" rlp:"optional"` + RevertReason string `json:"revertReason,omitempty"` + Calls []CallFrame `json:"calls,omitempty" rlp:"optional"` + Logs []callLog `json:"logs,omitempty" rlp:"optional"` + // Placed at end on purpose. The RLP will be decoded to 0 instead of + // nil if there are non-empty elements after in the struct. + Value *big.Int `json:"value,omitempty" rlp:"optional"` + revertedSnapshot bool +} + +func (f CallFrame) TypeString() string { + return f.Type.String() +} + +func (f CallFrame) failed() bool { + return len(f.Error) > 0 && f.revertedSnapshot +} + +func (f *CallFrame) processOutput(output []byte, err error, reverted bool) { + output = common.CopyBytes(output) + // Clear error if tx wasn't reverted. This happened + // for pre-homestead contract storage OOG. + if err != nil && !reverted { + err = nil + } + if err == nil { + f.Output = output + return + } + f.Error = err.Error() + f.revertedSnapshot = reverted + if f.Type == vm.CREATE || f.Type == vm.CREATE2 { + f.To = nil + } + if !errors.Is(err, vm.ErrExecutionReverted) || len(output) == 0 { + return + } + f.Output = output + if len(output) < 4 { + return + } + if unpacked, err := abi.UnpackRevert(output); err == nil { + f.RevertReason = unpacked + } +} + +type callFrameMarshaling struct { + TypeString string `json:"type"` + Gas hexutil.Uint64 + GasUsed hexutil.Uint64 + Value *hexutil.Big + Input hexutil.Bytes + Output hexutil.Bytes } type callTracer struct { - env *vm.EVM callstack []CallFrame config callTracerConfig - interrupt uint32 // Atomic flag to signal execution interruption - reason error // Textual reason for the interruption + gasLimit uint64 + depth int + interrupt atomic.Bool // Atomic flag to signal execution interruption + reason error // Textual reason for the interruption } -var _ tracers.Tracer = &callTracer{} - type callTracerConfig struct { OnlyTopCall bool `json:"onlyTopCall"` // If true, call tracer won't collect any subcalls + WithLog bool `json:"withLog"` // If true, call tracer will collect event logs } // newCallTracer returns a native go tracer which tracks // call frames of a tx, and implements vm.EVMLogger. -func newCallTracer(cfg json.RawMessage) (tracers.Tracer, error) { +func newCallTracer(ctx *tracers.Context, cfg json.RawMessage) (*tracers.Tracer, error) { + t, err := newCallTracerObject(ctx, cfg) + if err != nil { + return nil, err + } + return &tracers.Tracer{ + Hooks: &tracing.Hooks{ + OnTxStart: t.OnTxStart, + OnTxEnd: t.OnTxEnd, + OnEnter: t.OnEnter, + OnExit: t.OnExit, + OnLog: t.OnLog, + }, + GetResult: t.GetResult, + Stop: t.Stop, + }, nil +} + +func newCallTracerObject(ctx *tracers.Context, cfg json.RawMessage) (*callTracer, error) { var config callTracerConfig if cfg != nil { if err := json.Unmarshal(cfg, &config); err != nil { @@ -57,98 +137,107 @@ func newCallTracer(cfg json.RawMessage) (tracers.Tracer, error) { } // First callframe contains tx context info // and is populated on start and end. - return &callTracer{callstack: make([]CallFrame, 1), config: config}, nil -} - -// CaptureStart implements the EVMLogger interface to initialize the tracing operation. -func (t *callTracer) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { - t.env = env - t.callstack[0] = CallFrame{ - Type: "CALL", - From: addrToHex(from), - To: addrToHex(to), - Input: bytesToHex(input), - Gas: uintToHex(gas), - Value: bigToHex(value), - } - if create { - t.callstack[0].Type = "CREATE" - } -} - -// CaptureEnd is called after the call finishes to finalize the tracing. -func (t *callTracer) CaptureEnd(output []byte, gasUsed uint64, err error) { - t.callstack[0].GasUsed = uintToHex(gasUsed) - if err != nil { - t.callstack[0].Error = err.Error() - if err.Error() == "execution reverted" && len(output) > 0 { - t.callstack[0].Output = bytesToHex(output) - } - } else { - t.callstack[0].Output = bytesToHex(output) - } -} - -// CaptureState implements the EVMLogger interface to trace a single step of VM execution. -func (t *callTracer) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, rData []byte, depth int, err error) { -} - -// CaptureFault implements the EVMLogger interface to trace an execution fault. -func (t *callTracer) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, _ *vm.ScopeContext, depth int, err error) { + return &callTracer{callstack: make([]CallFrame, 0, 1), config: config}, nil } -// CaptureEnter is called when EVM enters a new scope (via call, create or selfdestruct). -func (t *callTracer) CaptureEnter(typ vm.OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) { - if t.config.OnlyTopCall { +// OnEnter is called when EVM enters a new scope (via call, create or selfdestruct). +func (t *callTracer) OnEnter(depth int, typ byte, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) { + t.depth = depth + if t.config.OnlyTopCall && depth > 0 { return } // Skip if tracing was interrupted - if atomic.LoadUint32(&t.interrupt) > 0 { - t.env.Cancel() + if t.interrupt.Load() { return } + toCopy := to call := CallFrame{ - Type: typ.String(), - From: addrToHex(from), - To: addrToHex(to), - Input: bytesToHex(input), - Gas: uintToHex(gas), - Value: bigToHex(value), + Type: vm.OpCode(typ), + From: from, + To: &toCopy, + Input: common.CopyBytes(input), + Gas: gas, + Value: value, + } + if depth == 0 { + call.Gas = t.gasLimit } t.callstack = append(t.callstack, call) } -// CaptureExit is called when EVM exits a scope, even if the scope didn't +// OnExit is called when EVM exits a scope, even if the scope didn't // execute any code. -func (t *callTracer) CaptureExit(output []byte, gasUsed uint64, err error) { +func (t *callTracer) OnExit(depth int, output []byte, gasUsed uint64, err error, reverted bool) { + if depth == 0 { + t.captureEnd(output, gasUsed, err, reverted) + return + } + + t.depth = depth - 1 if t.config.OnlyTopCall { return } + size := len(t.callstack) if size <= 1 { return } - // pop call + // Pop call. call := t.callstack[size-1] t.callstack = t.callstack[:size-1] - size-- + size -= 1 - call.GasUsed = uintToHex(gasUsed) - if err == nil { - call.Output = bytesToHex(output) - } else { - call.Error = err.Error() - if call.Type == "CREATE" || call.Type == "CREATE2" { - call.To = "" - } - } + call.GasUsed = gasUsed + call.processOutput(output, err, reverted) + // Nest call into parent. t.callstack[size-1].Calls = append(t.callstack[size-1].Calls, call) } -func (*callTracer) CaptureTxStart(gasLimit uint64) {} +func (t *callTracer) captureEnd(output []byte, gasUsed uint64, err error, reverted bool) { + if len(t.callstack) != 1 { + return + } + t.callstack[0].processOutput(output, err, reverted) +} -func (*callTracer) CaptureTxEnd(restGas uint64) {} +func (t *callTracer) OnTxStart(env *tracing.VMContext, tx *types.Transaction, from common.Address) { + t.gasLimit = tx.Gas() +} + +func (t *callTracer) OnTxEnd(receipt *types.Receipt, err error) { + // Error happened during tx validation. + if err != nil { + return + } + t.callstack[0].GasUsed = receipt.GasUsed + if t.config.WithLog { + // Logs are not emitted when the call fails + clearFailedLogs(&t.callstack[0], false) + } +} + +func (t *callTracer) OnLog(log *types.Log) { + // Only logs need to be captured via opcode processing + if !t.config.WithLog { + return + } + // Avoid processing nested calls when only caring about top call + if t.config.OnlyTopCall && t.depth > 0 { + return + } + // Skip if tracing was interrupted + if t.interrupt.Load() { + return + } + l := callLog{ + Address: log.Address, + Topics: log.Topics, + Data: log.Data, + Position: hexutil.Uint(len(t.callstack[len(t.callstack)-1].Calls)), + } + t.callstack[len(t.callstack)-1].Logs = append(t.callstack[len(t.callstack)-1].Logs, l) +} // GetResult returns the json-encoded nested list of call traces, and any // error arising from the encoding or forceful termination (via `Stop`). @@ -156,6 +245,7 @@ func (t *callTracer) GetResult() (json.RawMessage, error) { if len(t.callstack) != 1 { return nil, errors.New("incorrect number of top-level calls") } + res, err := json.Marshal(t.callstack[0]) if err != nil { return nil, err @@ -166,24 +256,18 @@ func (t *callTracer) GetResult() (json.RawMessage, error) { // Stop terminates execution of the tracer at the first opportune moment. func (t *callTracer) Stop(err error) { t.reason = err - atomic.StoreUint32(&t.interrupt, 1) + t.interrupt.Store(true) } -func bytesToHex(s []byte) string { - return "0x" + common.Bytes2Hex(s) -} - -func bigToHex(n *big.Int) string { - if n == nil { - return "" +// clearFailedLogs clears the logs of a callframe and all its children +// in case of execution failure. +func clearFailedLogs(cf *CallFrame, parentFailed bool) { + failed := cf.failed() || parentFailed + // Clear own logs + if failed { + cf.Logs = nil + } + for i := range cf.Calls { + clearFailedLogs(&cf.Calls[i], failed) } - return "0x" + n.Text(16) -} - -func uintToHex(n uint64) string { - return "0x" + strconv.FormatUint(n, 16) -} - -func addrToHex(a common.Address) string { - return strings.ToLower(a.Hex()) } diff --git a/packages/evm/jsonrpc/waspevmbackend.go b/packages/evm/jsonrpc/waspevmbackend.go index 39fece43aa..502faccd3b 100644 --- a/packages/evm/jsonrpc/waspevmbackend.go +++ b/packages/evm/jsonrpc/waspevmbackend.go @@ -89,7 +89,7 @@ func (b *WaspEVMBackend) EVMTraceTransaction( blockTime time.Time, iscRequestsInBlock []isc.Request, txIndex uint64, - tracer tracers.Tracer, + tracer *tracers.Tracer, ) error { return chainutil.EVMTraceTransaction( b.chain, diff --git a/packages/isc/irc27nft.go b/packages/isc/irc27nft.go index 8ae806f05c..38b1400800 100644 --- a/packages/isc/irc27nft.go +++ b/packages/isc/irc27nft.go @@ -14,16 +14,17 @@ type IRC27NFTMetadata struct { Royalties map[string]float32 `json:"royalties,omitempty"` IssuerName string `json:"issuerName,omitempty"` Description string `json:"description,omitempty"` - Attributes *json.RawMessage `json:"attributes,omitempty"` + Attributes string `json:"attributes,omitempty"` } -func NewIRC27NFTMetadata(mimeType, uri, name string) *IRC27NFTMetadata { +func NewIRC27NFTMetadata(mimeType, uri, name, attributes string) *IRC27NFTMetadata { return &IRC27NFTMetadata{ - Standard: "IRC27", - Version: "v1.0", - MIMEType: mimeType, - URI: uri, - Name: name, + Standard: "IRC27", + Version: "v1.0", + MIMEType: mimeType, + URI: uri, + Name: name, + Attributes: attributes, // TODO validate that attributes are a valid JSON? } } diff --git a/packages/isc/irc27nft_test.go b/packages/isc/irc27nft_test.go index 48c06ebeba..14633ad68a 100644 --- a/packages/isc/irc27nft_test.go +++ b/packages/isc/irc27nft_test.go @@ -11,6 +11,6 @@ func TestIRC27NFTSerialization(t *testing.T) { testMIME := "fakeMIME" testURL := "http://no.org" testName := "hi-name" - metadata := isc.NewIRC27NFTMetadata(testMIME, testURL, testName) + metadata := isc.NewIRC27NFTMetadata(testMIME, testURL, testName, `[{"trait_type": "Foo", "value": "Bar"}]`) rwutil.BytesTest(t, metadata, isc.IRC27NFTMetadataFromBytes) } diff --git a/packages/isc/sandbox_interface.go b/packages/isc/sandbox_interface.go index 62ba7a3676..082c1129e2 100644 --- a/packages/isc/sandbox_interface.go +++ b/packages/isc/sandbox_interface.go @@ -241,6 +241,6 @@ type BLS interface { } type EVMTracer struct { - Tracer tracers.Tracer + Tracer *tracers.Tracer TxIndex uint64 } diff --git a/packages/solo/evm.go b/packages/solo/evm.go index 695448088e..e3e17fdf55 100644 --- a/packages/solo/evm.go +++ b/packages/solo/evm.go @@ -67,7 +67,7 @@ func (b *jsonRPCSoloBackend) EVMTraceTransaction( blockTime time.Time, iscRequestsInBlock []isc.Request, txIndex uint64, - tracer tracers.Tracer, + tracer *tracers.Tracer, ) error { return chainutil.EVMTraceTransaction( b.Chain, diff --git a/packages/testutil/testdbhash/TestDepositNFTWithMinStorageDeposit-accounts.hex b/packages/testutil/testdbhash/TestDepositNFTWithMinStorageDeposit-accounts.hex index 26533346ba..b7002150f9 100644 --- a/packages/testutil/testdbhash/TestDepositNFTWithMinStorageDeposit-accounts.hex +++ b/packages/testutil/testdbhash/TestDepositNFTWithMinStorageDeposit-accounts.hex @@ -1 +1 @@ -0x174c69f18d7860bd81e4ff0d4a14bfe949ba7d5ab3a7d8e819422b8cb918c56d +0xcb3b09f08db03598d5785be41bf1e8ff69c26e902137a8c1f63fd670e2d533a5 diff --git a/packages/testutil/testdbhash/TestERC20NativeTokensWithExternalFoundry-evm.hex b/packages/testutil/testdbhash/TestERC20NativeTokensWithExternalFoundry-evm.hex index c20fd867df..b3ef3d6cd6 100644 --- a/packages/testutil/testdbhash/TestERC20NativeTokensWithExternalFoundry-evm.hex +++ b/packages/testutil/testdbhash/TestERC20NativeTokensWithExternalFoundry-evm.hex @@ -1 +1 @@ -0x264752e8933d87d8b8c83106a35cd4b278a33084b5a7f5cdcd23ba0baba623b2 +0x1fb3b3efc21aa61f615b90b738730b7c5078202cc8f28d4c862baa4b6f58a256 diff --git a/packages/testutil/testdbhash/TestFoundries-max_supply_10,_mintTokens_5-accounts.hex b/packages/testutil/testdbhash/TestFoundries-max_supply_10,_mintTokens_5-accounts.hex index 6e0e360b3a..f370b36134 100644 --- a/packages/testutil/testdbhash/TestFoundries-max_supply_10,_mintTokens_5-accounts.hex +++ b/packages/testutil/testdbhash/TestFoundries-max_supply_10,_mintTokens_5-accounts.hex @@ -1 +1 @@ -0x328c177afe76ceaed8cd274b98e3419a52f4bbde04a543f15eb8629a57d7e7d0 +0x537c3ee06462d9086d3602f27a46c36940ce8aeef0e98571d37ed17578a90b3e diff --git a/packages/testutil/testdbhash/TestGetEvents-blocklog.hex b/packages/testutil/testdbhash/TestGetEvents-blocklog.hex index c2ab8ed859..84d80aa60c 100644 --- a/packages/testutil/testdbhash/TestGetEvents-blocklog.hex +++ b/packages/testutil/testdbhash/TestGetEvents-blocklog.hex @@ -1 +1 @@ -0x92188c7395b73e46deae031e379747724757b87ade77b5da9380c20b9108161f +0xf44bb465759a04e6942e716bfcd8652f6afb2c1dbcb1fdf6bf77d9129f07f0f8 diff --git a/packages/testutil/testdbhash/TestInitLoad.hex b/packages/testutil/testdbhash/TestInitLoad.hex index 10fc12c15a..a0b2be6e9e 100644 --- a/packages/testutil/testdbhash/TestInitLoad.hex +++ b/packages/testutil/testdbhash/TestInitLoad.hex @@ -1 +1 @@ -0xe24863b4b791d585a909c65baba5eaac06a82c50842fc44a6b42cdad03bf39be +0xe37489cacd8c066a00f3cf0aca0015b2f8fc1c4ea2417a18ab1c3dca7e6b0559 diff --git a/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection1-accounts.hex b/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection1-accounts.hex index 91b94676b8..6ffedbda60 100644 --- a/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection1-accounts.hex +++ b/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection1-accounts.hex @@ -1 +1 @@ -0xcc7cff1b599bc317a59912cd5712b05e6a7711447c69ef9eedc0f8dccf6f3395 +0xdbcc902a05b06563da0b687d9d73689b63e83fee57309ecb37fc151b9121aa1e diff --git a/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection2-accounts.hex b/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection2-accounts.hex index 8ffb66e88a..9917ce94fd 100644 --- a/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection2-accounts.hex +++ b/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection2-accounts.hex @@ -1 +1 @@ -0x4af8bc45d3df6fa5b2c6b7c3e68f95fd3298b412eae87aa44949ac8914c58e8f +0x33699eeaa2c59b8cc13b997c79697f991515b78baeafabc51c318666a160ab4b diff --git a/packages/testutil/testdbhash/TestSelfDestruct-evm.hex b/packages/testutil/testdbhash/TestSelfDestruct-evm.hex index dc12ad0f81..9f9fbbdbbe 100644 --- a/packages/testutil/testdbhash/TestSelfDestruct-evm.hex +++ b/packages/testutil/testdbhash/TestSelfDestruct-evm.hex @@ -1 +1 @@ -0xa85e7cdb6572f42f302f476377928e07feeba303eee343de0cf47c87e73b3fe3 +0x11cacd5ff64036c943c1882fb7186f141232237c145313f9befcddbac77b7ca2 diff --git a/packages/testutil/testdbhash/TestSendBaseTokens-evm.hex b/packages/testutil/testdbhash/TestSendBaseTokens-evm.hex index 83b781a6dc..57dd649a06 100644 --- a/packages/testutil/testdbhash/TestSendBaseTokens-evm.hex +++ b/packages/testutil/testdbhash/TestSendBaseTokens-evm.hex @@ -1 +1 @@ -0x09001ac31c3713880da891b8e041bcfb9b7721535613fc2e77953898e5d66cc8 +0x5835faf7e10d35e126af3b13d000fa5d5b100a5ae329a1d50b9ab47b937787ce diff --git a/packages/testutil/testdbhash/TestStorageContract-evm.hex b/packages/testutil/testdbhash/TestStorageContract-evm.hex index 6b73b8536e..07216fe0bc 100644 --- a/packages/testutil/testdbhash/TestStorageContract-evm.hex +++ b/packages/testutil/testdbhash/TestStorageContract-evm.hex @@ -1 +1 @@ -0xaf8db82936b1ca52165fe6f65a26e5be612faae7a8e94b8d7f613dc17e0d6eb5 +0xf947695a32a4a3bd1a33c878a39f37f3db4e8cffb98b60d9c10ac38af1703cf5 diff --git a/packages/testutil/testdbhash/TestUnprocessableWithPruning-blocklog.hex b/packages/testutil/testdbhash/TestUnprocessableWithPruning-blocklog.hex index dc1d30ec25..28d3128661 100644 --- a/packages/testutil/testdbhash/TestUnprocessableWithPruning-blocklog.hex +++ b/packages/testutil/testdbhash/TestUnprocessableWithPruning-blocklog.hex @@ -1 +1 @@ -0x7f212ce05264aeb5b2fb3b6951568225a90c240db0b3238bed3281c261388c58 +0x316e88b911b69e241d916ab7f98f0ec1301c22eec5a1ba559c720742a6d8587b diff --git a/packages/vm/core/evm/emulator/blockchaindb.go b/packages/vm/core/evm/emulator/blockchaindb.go index 78a6a8ed6f..274b3fcad4 100644 --- a/packages/vm/core/evm/emulator/blockchaindb.go +++ b/packages/vm/core/evm/emulator/blockchaindb.go @@ -518,8 +518,9 @@ func (bc *BlockchainDB) makeBlock(header *types.Header) *types.Block { blockNumber := header.Number.Uint64() return types.NewBlock( header, - bc.GetTransactionsByBlockNumber(blockNumber), - []*types.Header{}, + &types.Body{ + Transactions: bc.GetTransactionsByBlockNumber(blockNumber), + }, bc.GetReceiptsByBlockNumber(blockNumber), &fakeHasher{}, ) diff --git a/packages/vm/core/evm/emulator/emulator.go b/packages/vm/core/evm/emulator/emulator.go index a02cc5de52..4b42226d50 100644 --- a/packages/vm/core/evm/emulator/emulator.go +++ b/packages/vm/core/evm/emulator/emulator.go @@ -14,10 +14,10 @@ import ( "github.com/ethereum/go-ethereum/consensus" "github.com/ethereum/go-ethereum/consensus/ethash" "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/core/tracing" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/eth/tracers" "github.com/ethereum/go-ethereum/params" lru "github.com/hashicorp/golang-lru/v2" @@ -86,6 +86,7 @@ func getConfig(chainID int) *params.ChainConfig { LondonBlock: big.NewInt(0), Ethash: ¶ms.EthashConfig{}, ShanghaiTime: new(uint64), + CancunTime: new(uint64), } if !c.IsShanghai(common.Big0, 0) { panic("ChainConfig should report EVM version as Shanghai") @@ -229,7 +230,7 @@ func (e *EVMEmulator) applyMessage( msg *core.Message, statedb vm.StateDB, header *types.Header, - tracer tracers.Tracer, + tracer *tracing.Hooks, ) (res *core.ExecutionResult, err error) { // Set msg gas price to 0 msg.GasPrice = big.NewInt(0) @@ -285,7 +286,7 @@ func abiEncodeError(err error) []byte { func (e *EVMEmulator) SendTransaction( tx *types.Transaction, - tracer tracers.Tracer, + tracer *tracing.Hooks, addToBlockchain ...bool, ) (receipt *types.Receipt, result *core.ExecutionResult, err error) { statedb := e.StateDB() diff --git a/packages/vm/core/evm/emulator/statedb.go b/packages/vm/core/evm/emulator/statedb.go index 373a7b1785..c26c5d2ab5 100644 --- a/packages/vm/core/evm/emulator/statedb.go +++ b/packages/vm/core/evm/emulator/statedb.go @@ -8,10 +8,12 @@ import ( "slices" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/tracing" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/trie/utils" "github.com/holiman/uint256" "github.com/iotaledger/wasp/packages/kv" @@ -48,20 +50,24 @@ func accountSelfDestructedKey(addr common.Address) kv.Key { // StateDB implements vm.StateDB with a kv.KVStore as backend. // The Ethereum account balance is tied to the L1 balance. type StateDB struct { - ctx Context - kv kv.KVStore // subrealm of ctx.State() - logs []*types.Log - snapshots map[int][]*types.Log - refund uint64 + ctx Context + kv kv.KVStore // subrealm of ctx.State() + logs []*types.Log + snapshots map[int][]*types.Log + refund uint64 + transientStorage transientStorage // EIP-1153 + newContracts map[common.Address]bool // EIP-6780 } var _ vm.StateDB = &StateDB{} func NewStateDB(ctx Context) *StateDB { return &StateDB{ - ctx: ctx, - kv: StateDBSubrealm(ctx.State()), - snapshots: make(map[int][]*types.Log), + ctx: ctx, + kv: StateDBSubrealm(ctx.State()), + snapshots: make(map[int][]*types.Log), + transientStorage: newTransientStorage(), + newContracts: make(map[common.Address]bool), } } @@ -69,9 +75,11 @@ func NewStateDB(ctx Context) *StateDB { // It is currently only used for the ERC721 registration using a KVStore which doesn't justify a new class. func NewStateDBFromKVStore(emulatorState kv.KVStore) *StateDB { return &StateDB{ - ctx: nil, - kv: StateDBSubrealm(emulatorState), - snapshots: make(map[int][]*types.Log), + ctx: nil, + kv: StateDBSubrealm(emulatorState), + snapshots: make(map[int][]*types.Log), + transientStorage: newTransientStorage(), + newContracts: make(map[common.Address]bool), } } @@ -83,7 +91,27 @@ func (s *StateDB) CreateAccount(addr common.Address) { CreateAccount(s.kv, addr) } -func (s *StateDB) SubBalance(addr common.Address, amount *uint256.Int) { +// CreateContract is used whenever a contract is created. This may be preceded +// by CreateAccount, but that is not required if it already existed in the +// state due to funds sent beforehand. +// This operation sets the 'newContract'-flag, which is required in order to +// correctly handle EIP-6780 'delete-in-same-transaction' logic. +func (s *StateDB) CreateContract(addr common.Address) { + s.CreateAccount(addr) + s.newContracts[addr] = true +} + +// GetStorageRoot implements vm.StateDB. +func (s *StateDB) GetStorageRoot(addr common.Address) common.Hash { + return common.BytesToHash([]byte(accountStateKey(addr, common.Hash{}))) +} + +// PointCache implements vm.StateDB. +func (s *StateDB) PointCache() *utils.PointCache { + panic("unimplemented") +} + +func (s *StateDB) SubBalance(addr common.Address, amount *uint256.Int, _ tracing.BalanceChangeReason) { if amount.Sign() == 0 { return } @@ -93,7 +121,7 @@ func (s *StateDB) SubBalance(addr common.Address, amount *uint256.Int) { s.ctx.SubBaseTokensBalance(addr, amount.ToBig()) } -func (s *StateDB) AddBalance(addr common.Address, amount *uint256.Int) { +func (s *StateDB) AddBalance(addr common.Address, amount *uint256.Int, _ tracing.BalanceChangeReason) { if amount.Sign() == 0 { return } @@ -225,12 +253,15 @@ func (s *StateDB) SelfDestruct(addr common.Address) { s.kv.Set(accountSelfDestructedKey(addr), []byte{1}) } -func (s *StateDB) HasSelfDestructed(addr common.Address) bool { - return s.kv.Has(accountSelfDestructedKey(addr)) +func (s *StateDB) Selfdestruct6780(addr common.Address) { + // only allow selfdestruct if within the creation tx (as per EIP-6780) + if s.newContracts[addr] { + s.SelfDestruct(addr) + } } -func (s *StateDB) Selfdestruct6780(addr common.Address) { - panic("unimplemented") +func (s *StateDB) HasSelfDestructed(addr common.Address) bool { + return s.kv.Has(accountSelfDestructedKey(addr)) } // Exist reports whether the given account exists in state. @@ -297,21 +328,23 @@ func (s *StateDB) GetLogs() []*types.Log { func (s *StateDB) AddPreimage(common.Hash, []byte) { panic("not implemented") } -func (s *StateDB) ForEachStorage(common.Address, func(common.Hash, common.Hash) bool) error { - panic("not implemented") +// GetTransientState implements vm.StateDB +func (s *StateDB) GetTransientState(addr common.Address, key common.Hash) common.Hash { + return s.transientStorage.Get(addr, key) } -// GetTransientState implements vm.StateDB -func (*StateDB) GetTransientState(addr common.Address, key common.Hash) common.Hash { - panic("unimplemented") +// SetTransientState implements vm.StateDB +func (s *StateDB) SetTransientState(addr common.Address, key common.Hash, value common.Hash) { + s.transientStorage.Set(addr, key, value) } // Prepare implements vm.StateDB +// cleans up refunds, transient storage and "newContract" flags func (s *StateDB) Prepare(rules params.Rules, sender common.Address, coinbase common.Address, dest *common.Address, precompiles []common.Address, txAccesses types.AccessList) { - // do nothing -} - -// SetTransientState implements vm.StateDB -func (*StateDB) SetTransientState(addr common.Address, key common.Hash, value common.Hash) { - panic("unimplemented") + // reset refund + s.refund = 0 + // reset transient storage + s.transientStorage = newTransientStorage() + // reset "newContract" flags + s.newContracts = make(map[common.Address]bool) } diff --git a/packages/vm/core/evm/emulator/transient_storage.go b/packages/vm/core/evm/emulator/transient_storage.go new file mode 100644 index 0000000000..710553a80d --- /dev/null +++ b/packages/vm/core/evm/emulator/transient_storage.go @@ -0,0 +1,79 @@ +package emulator + +import ( + "fmt" + "slices" + "strings" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/state" +) + +// fully copied from go-ethereum /core/state/transient_storage.go + +// transientStorage is a representation of EIP-1153 "Transient Storage". +type transientStorage map[common.Address]state.Storage + +// newTransientStorage creates a new instance of a transientStorage. +func newTransientStorage() transientStorage { + return make(transientStorage) +} + +// Set sets the transient-storage `value` for `key` at the given `addr`. +func (t transientStorage) Set(addr common.Address, key, value common.Hash) { + if value == (common.Hash{}) { // this is a 'delete' + if _, ok := t[addr]; ok { + delete(t[addr], key) + if len(t[addr]) == 0 { + delete(t, addr) + } + } + } else { + if _, ok := t[addr]; !ok { + t[addr] = make(state.Storage) + } + t[addr][key] = value + } +} + +// Get gets the transient storage for `key` at the given `addr`. +func (t transientStorage) Get(addr common.Address, key common.Hash) common.Hash { + val, ok := t[addr] + if !ok { + return common.Hash{} + } + return val[key] +} + +// Copy does a deep copy of the transientStorage +func (t transientStorage) Copy() transientStorage { + storage := make(transientStorage) + for key, value := range t { + storage[key] = value.Copy() + } + return storage +} + +// PrettyPrint prints the contents of the access list in a human-readable form +func (t transientStorage) PrettyPrint() string { + out := new(strings.Builder) + var sortedAddrs []common.Address + for addr := range t { + sortedAddrs = append(sortedAddrs, addr) + slices.SortFunc(sortedAddrs, common.Address.Cmp) + } + + for _, addr := range sortedAddrs { + fmt.Fprintf(out, "%#x:", addr) + var sortedKeys []common.Hash + storage := t[addr] + for key := range storage { + sortedKeys = append(sortedKeys, key) + } + slices.SortFunc(sortedKeys, common.Hash.Cmp) + for _, key := range sortedKeys { + fmt.Fprintf(out, " %X : %X\n", key, storage[key]) + } + } + return out.String() +} diff --git a/packages/vm/core/evm/evmimpl/internal.go b/packages/vm/core/evm/evmimpl/internal.go index 6c22f3d84a..2f02b9c877 100644 --- a/packages/vm/core/evm/evmimpl/internal.go +++ b/packages/vm/core/evm/evmimpl/internal.go @@ -8,9 +8,9 @@ import ( "time" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/tracing" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" - "github.com/ethereum/go-ethereum/eth/tracers" "github.com/iotaledger/wasp/packages/evm/evmutil" "github.com/iotaledger/wasp/packages/isc" @@ -31,7 +31,7 @@ func MintBlock(evmPartition kv.KVStore, chainInfo *isc.ChainInfo, blockTimestamp createBlockchainDB(evmPartition, chainInfo).MintBlock(timestamp(blockTimestamp)) } -func getTracer(ctx isc.Sandbox) tracers.Tracer { +func getTracer(ctx isc.Sandbox) *tracing.Hooks { tracer := ctx.EVMTracer() if tracer == nil { return nil @@ -39,7 +39,7 @@ func getTracer(ctx isc.Sandbox) tracers.Tracer { if tracer.TxIndex != uint64(ctx.RequestIndex()) { return nil // trace only the transaction we're interested in } - return tracer.Tracer + return tracer.Tracer.Hooks } func createEmulator(ctx isc.Sandbox) *emulator.EVMEmulator { diff --git a/packages/vm/core/evm/evmimpl/iscmagic_sandbox_view.go b/packages/vm/core/evm/evmimpl/iscmagic_sandbox_view.go index 1fe3bb7338..3b87b68232 100644 --- a/packages/vm/core/evm/evmimpl/iscmagic_sandbox_view.go +++ b/packages/vm/core/evm/evmimpl/iscmagic_sandbox_view.go @@ -40,9 +40,6 @@ func (h *magicContractHandler) GetNFTData(nftID iscmagic.NFTID) iscmagic.ISCNFT func (h *magicContractHandler) GetIRC27NFTData(nftID iscmagic.NFTID) iscmagic.IRC27NFT { nft := h.ctx.GetNFTData(nftID.Unwrap()) metadata, err := isc.IRC27NFTMetadataFromBytes(nft.Metadata) - // This hack is so that the ERC721 tokenURI view function returns the NFT name and description - // for explorers - metadata.URI = evm.EncodePackedNFTURI(metadata) h.ctx.RequireNoError(err) return iscmagic.IRC27NFT{ Nft: iscmagic.WrapISCNFT(nft), @@ -50,6 +47,14 @@ func (h *magicContractHandler) GetIRC27NFTData(nftID iscmagic.NFTID) iscmagic.IR } } +// handler for ISCSandbox::getIRC27TokenURI +func (h *magicContractHandler) GetIRC27TokenURI(nftID iscmagic.NFTID) string { + nft := h.ctx.GetNFTData(nftID.Unwrap()) + metadata, err := isc.IRC27NFTMetadataFromBytes(nft.Metadata) + h.ctx.RequireNoError(err) + return evm.EncodePackedNFTURI(metadata) +} + // handler for ISCSandbox::getTimestampUnixSeconds func (h *magicContractHandler) GetTimestampUnixSeconds() int64 { return h.ctx.Timestamp().Unix() diff --git a/packages/vm/core/evm/evmtest/evm_test.go b/packages/vm/core/evm/evmtest/evm_test.go index 1cc9f826c6..4c2730375a 100644 --- a/packages/vm/core/evm/evmtest/evm_test.go +++ b/packages/vm/core/evm/evmtest/evm_test.go @@ -534,10 +534,11 @@ func TestISCNFTMint(t *testing.T) { retIRC27 := new(iscmagic.IRC27NFT) - env.ISCMagicSandbox(ethKey).callView( + err = env.ISCMagicSandbox(ethKey).callView( "getIRC27NFTData", []interface{}{iscmagic.WrapNFTID(nftID)}, &retIRC27) + require.NoError(t, err) irc27MetaData, err := isc.IRC27NFTMetadataFromBytes(ret.Metadata) require.NoError(t, err) @@ -1951,8 +1952,8 @@ func TestEVMGasPriceMismatch(t *testing.T) { evmGasRatio: util.Ratio32{A: 1, B: 1}, // default txGasPrice: nil, expectedError: "insufficient gas price: got 0, minimum is 10000000000", - gasBurned: 168154, - feeCharged: 1682, + gasBurned: 168098, + feeCharged: 1681, }, { name: "default policy, gas price too low", @@ -1960,8 +1961,8 @@ func TestEVMGasPriceMismatch(t *testing.T) { evmGasRatio: util.Ratio32{A: 1, B: 1}, // default txGasPrice: big.NewInt(9999999999), expectedError: "insufficient gas price: got 9999999999, minimum is 10000000000", - gasBurned: 168154, - feeCharged: 1682, + gasBurned: 168098, + feeCharged: 1681, }, { name: "default policy, gas price just enough", @@ -1993,8 +1994,8 @@ func TestEVMGasPriceMismatch(t *testing.T) { evmGasRatio: util.Ratio32{A: 1, B: 1}, // default txGasPrice: big.NewInt(19999999999), expectedError: "insufficient gas price: got 19999999999, minimum is 20000000000", - gasBurned: 168154, - feeCharged: 2 * 1682, + gasBurned: 168098, + feeCharged: 2 * 1681, }, { name: "gas more expensive, gas price just enough", @@ -2287,6 +2288,7 @@ func TestStaticCall(t *testing.T) { } func TestSelfDestruct(t *testing.T) { + // NOTE: since EIP-6780 self-destruct was deprecated env := InitEVM(t, false) ethKey, _ := env.Chain.EthereumAccountByIndexWithL2Funds(0) @@ -2309,13 +2311,25 @@ func TestSelfDestruct(t *testing.T) { _, err := iscTest.CallFn([]ethCallOptions{{sender: ethKey}}, "testSelfDestruct", beneficiary) require.NoError(t, err) - require.Empty(t, env.getCode(iscTest.address)) + // (EIP-6780) SELFDESTRUCT will recover all funds to the target but not delete the account, + // except when called in the same transaction as creation + require.NotEmpty(t, env.getCode(iscTest.address)) require.Zero(t, env.Chain.L2BaseTokens(iscTestAgentID)) require.EqualValues(t, 1*isc.Million, env.Chain.L2BaseTokens(isc.NewEthereumAddressAgentID(env.Chain.ChainID, beneficiary))) testdbhash.VerifyContractStateHash(env.solo, evm.Contract, "", t.Name()) } +func TestSelfDestruct6780(t *testing.T) { + env := InitEVM(t, false) + ethKey, _ := env.Chain.EthereumAccountByIndexWithL2Funds(0) + iscTest := env.deployISCTestContract(ethKey) + + var createContractAddr common.Address + iscTest.CallFnExpectEvent(nil, "TestSelfDestruct6780ContractCreated", &createContractAddr, "testSelfDestruct6780") + require.Empty(t, env.getCode(createContractAddr)) +} + func TestChangeGasLimit(t *testing.T) { env := InitEVM(t, false) ethKey, _ := env.Chain.NewEthereumAccountWithL2Funds() @@ -2475,7 +2489,7 @@ func TestTraceTransaction(t *testing.T) { require.NoError(t, err) trace := traceLatestTx() require.EqualValues(t, ethAddr, trace.From) - require.EqualValues(t, storage.address, trace.To) + require.EqualValues(t, storage.address, *trace.To) require.Empty(t, trace.Calls) } { @@ -2484,7 +2498,7 @@ func TestTraceTransaction(t *testing.T) { require.NoError(t, err) trace := traceLatestTx() require.EqualValues(t, ethAddr, trace.From) - require.EqualValues(t, iscTest.address, trace.To) + require.EqualValues(t, iscTest.address, *trace.To) require.NotEmpty(t, trace.Calls) } } diff --git a/packages/vm/core/evm/iscmagic/ERC20BaseTokens.bin-runtime b/packages/vm/core/evm/iscmagic/ERC20BaseTokens.bin-runtime index 8302d1ccfb..3acad97975 100644 --- a/packages/vm/core/evm/iscmagic/ERC20BaseTokens.bin-runtime +++ b/packages/vm/core/evm/iscmagic/ERC20BaseTokens.bin-runtime @@ -1 +1 @@ -608060405234801561000f575f80fd5b5060043610610091575f3560e01c8063313ce56711610064578063313ce5671461013157806370a082311461014f57806395d89b411461017f578063a9059cbb1461019d578063dd62ed3e146101cd57610091565b806306fdde0314610095578063095ea7b3146100b357806318160ddd146100e357806323b872dd14610101575b5f80fd5b61009d6101fd565b6040516100aa9190610d73565b60405180910390f35b6100cd60048036038101906100c89190610e31565b61028b565b6040516100da9190610e89565b60405180910390f35b6100eb610379565b6040516100f89190610eb1565b60405180910390f35b61011b60048036038101906101169190610eca565b610407565b6040516101289190610e89565b60405180910390f35b61013961061d565b6040516101469190610f35565b60405180910390f35b61016960048036038101906101649190610f4e565b6106ab565b6040516101769190610eb1565b60405180910390f35b6101876107dc565b6040516101949190610d73565b60405180910390f35b6101b760048036038101906101b29190610e31565b61086b565b6040516101c49190610e89565b60405180910390f35b6101e760048036038101906101e29190610f79565b6109ce565b6040516101f49190610eb1565b60405180910390f35b606073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaa89f256040518163ffffffff1660e01b81526004015f60405180830381865afa15801561025b573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061028391906111c8565b5f0151905090565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663173263c63385856040518463ffffffff1660e01b81526004016102dd9392919061121e565b5f604051808303815f87803b1580156102f4575f80fd5b505af1158015610306573d5f803e3d5ffd5b505050508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103679190610eb1565b60405180910390a36001905092915050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaa89f256040518163ffffffff1660e01b81526004015f60405180830381865afa1580156103d6573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906103fe91906111c8565b60600151905090565b5f67ffffffffffffffff8016821115610455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044c9061129d565b60405180910390fd5b61045d610cac565b82815f019067ffffffffffffffff16908167ffffffffffffffff168152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e2d3c4e8633846040518463ffffffff1660e01b81526004016104cd9392919061157f565b5f604051808303815f87803b1580156104e4575f80fd5b505af11580156104f6573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146105ac5773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b815260040161057e9392919061157f565b5f604051808303815f87803b158015610595575f80fd5b505af11580156105a7573d5f803e3d5ffd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516106099190610eb1565b60405180910390a360019150509392505050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaa89f256040518163ffffffff1660e01b81526004015f60405180830381865afa15801561067a573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906106a291906111c8565b60400151905090565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561070a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072e91906115e5565b90505f61073b8483610a7a565b905073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b019204f826040518263ffffffff1660e01b815260040161078a9190611637565b602060405180830381865afa1580156107a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107c99190611681565b67ffffffffffffffff1692505050919050565b606073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaa89f256040518163ffffffff1660e01b81526004015f60405180830381865afa15801561083a573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061086291906111c8565b60200151905090565b5f67ffffffffffffffff80168211156108b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b09061129d565b60405180910390fd5b6108c1610cac565b82815f019067ffffffffffffffff16908167ffffffffffffffff168152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b81526004016109319392919061157f565b5f604051808303815f87803b158015610948575f80fd5b505af115801561095a573d5f803e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516109bb9190610eb1565b60405180910390a3600191505092915050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630af4187d85856040518363ffffffff1660e01b8152600401610a1f9291906116ac565b5f60405180830381865afa158015610a39573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610a619190611a94565b9050805f015167ffffffffffffffff1691505092915050565b610a82610cd6565b5f82604051602001610a949190611afb565b60405160208183030381529060405290505f84604051602001610ab79190611b5a565b6040516020818303038152906040529050610ad0610cd6565b825182516001610ae09190611ba1565b610aea9190611ba1565b67ffffffffffffffff811115610b0357610b02610fbb565b5b6040519080825280601f01601f191660200182016040528015610b355781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610b5857610b57611bd4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8351811015610c0c57838181518110610ba457610ba3611bd4565b5b602001015160f81c60f81b825f0151600183610bc09190611ba1565b81518110610bd157610bd0611bd4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610b88565b505f5b8251811015610c9f57828181518110610c2b57610c2a611bd4565b5b602001015160f81c60f81b825f01518551600184610c499190611ba1565b610c539190611ba1565b81518110610c6457610c63611bd4565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610c0f565b5080935050505092915050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060200160405280606081525090565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610d20578082015181840152602081019050610d05565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610d4582610ce9565b610d4f8185610cf3565b9350610d5f818560208601610d03565b610d6881610d2b565b840191505092915050565b5f6020820190508181035f830152610d8b8184610d3b565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610dcd82610da4565b9050919050565b610ddd81610dc3565b8114610de7575f80fd5b50565b5f81359050610df881610dd4565b92915050565b5f819050919050565b610e1081610dfe565b8114610e1a575f80fd5b50565b5f81359050610e2b81610e07565b92915050565b5f8060408385031215610e4757610e46610d9c565b5b5f610e5485828601610dea565b9250506020610e6585828601610e1d565b9150509250929050565b5f8115159050919050565b610e8381610e6f565b82525050565b5f602082019050610e9c5f830184610e7a565b92915050565b610eab81610dfe565b82525050565b5f602082019050610ec45f830184610ea2565b92915050565b5f805f60608486031215610ee157610ee0610d9c565b5b5f610eee86828701610dea565b9350506020610eff86828701610dea565b9250506040610f1086828701610e1d565b9150509250925092565b5f60ff82169050919050565b610f2f81610f1a565b82525050565b5f602082019050610f485f830184610f26565b92915050565b5f60208284031215610f6357610f62610d9c565b5b5f610f7084828501610dea565b91505092915050565b5f8060408385031215610f8f57610f8e610d9c565b5b5f610f9c85828601610dea565b9250506020610fad85828601610dea565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610ff182610d2b565b810181811067ffffffffffffffff821117156110105761100f610fbb565b5b80604052505050565b5f611022610d93565b905061102e8282610fe8565b919050565b5f80fd5b5f80fd5b5f80fd5b5f67ffffffffffffffff82111561105957611058610fbb565b5b61106282610d2b565b9050602081019050919050565b5f61108161107c8461103f565b611019565b90508281526020810184848401111561109d5761109c61103b565b5b6110a8848285610d03565b509392505050565b5f82601f8301126110c4576110c3611037565b5b81516110d484826020860161106f565b91505092915050565b6110e681610f1a565b81146110f0575f80fd5b50565b5f81519050611101816110dd565b92915050565b5f8151905061111581610e07565b92915050565b5f608082840312156111305761112f610fb7565b5b61113a6080611019565b90505f82015167ffffffffffffffff81111561115957611158611033565b5b611165848285016110b0565b5f83015250602082015167ffffffffffffffff81111561118857611187611033565b5b611194848285016110b0565b60208301525060406111a8848285016110f3565b60408301525060606111bc84828501611107565b60608301525092915050565b5f602082840312156111dd576111dc610d9c565b5b5f82015167ffffffffffffffff8111156111fa576111f9610da0565b5b6112068482850161111b565b91505092915050565b61121881610dc3565b82525050565b5f6060820190506112315f83018661120f565b61123e602083018561120f565b61124b6040830184610ea2565b949350505050565b7f616d6f756e7420697320746f6f206c61726765000000000000000000000000005f82015250565b5f611287601383610cf3565b915061129282611253565b602082019050919050565b5f6020820190508181035f8301526112b48161127b565b9050919050565b5f67ffffffffffffffff82169050919050565b6112d7816112bb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f61132a82611306565b6113348185611310565b9350611344818560208601610d03565b61134d81610d2b565b840191505092915050565b5f602083015f8301518482035f8601526113728282611320565b9150508091505092915050565b61138881610dfe565b82525050565b5f604083015f8301518482035f8601526113a88282611358565b91505060208301516113bd602086018261137f565b508091505092915050565b5f6113d3838361138e565b905092915050565b5f602082019050919050565b5f6113f1826112dd565b6113fb81856112e7565b93508360208202850161140d856112f7565b805f5b85811015611448578484038952815161142985826113c8565b9450611434836113db565b925060208a01995050600181019050611410565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b5f61149682611483565b9050919050565b6114a68161148c565b82525050565b5f6114b7838361149d565b60208301905092915050565b5f602082019050919050565b5f6114d98261145a565b6114e38185611464565b93506114ee83611474565b805f5b8381101561151e57815161150588826114ac565b9750611510836114c3565b9250506001810190506114f1565b5085935050505092915050565b5f606083015f8301516115405f8601826112ce565b506020830151848203602086015261155882826113e7565b9150506040830151848203604086015261157282826114cf565b9150508091505092915050565b5f6060820190506115925f83018661120f565b61159f602083018561120f565b81810360408301526115b1818461152b565b9050949350505050565b6115c481611483565b81146115ce575f80fd5b50565b5f815190506115df816115bb565b92915050565b5f602082840312156115fa576115f9610d9c565b5b5f611607848285016115d1565b91505092915050565b5f602083015f8301518482035f86015261162a8282611320565b9150508091505092915050565b5f6020820190508181035f83015261164f8184611610565b905092915050565b611660816112bb565b811461166a575f80fd5b50565b5f8151905061167b81611657565b92915050565b5f6020828403121561169657611695610d9c565b5b5f6116a38482850161166d565b91505092915050565b5f6040820190506116bf5f83018561120f565b6116cc602083018461120f565b9392505050565b5f67ffffffffffffffff8211156116ed576116ec610fbb565b5b602082029050602081019050919050565b5f80fd5b5f67ffffffffffffffff82111561171c5761171b610fbb565b5b61172582610d2b565b9050602081019050919050565b5f61174461173f84611702565b611019565b9050828152602081018484840111156117605761175f61103b565b5b61176b848285610d03565b509392505050565b5f82601f83011261178757611786611037565b5b8151611797848260208601611732565b91505092915050565b5f602082840312156117b5576117b4610fb7565b5b6117bf6020611019565b90505f82015167ffffffffffffffff8111156117de576117dd611033565b5b6117ea84828501611773565b5f8301525092915050565b5f6040828403121561180a57611809610fb7565b5b6118146040611019565b90505f82015167ffffffffffffffff81111561183357611832611033565b5b61183f848285016117a0565b5f83015250602061185284828501611107565b60208301525092915050565b5f61187061186b846116d3565b611019565b90508083825260208201905060208402830185811115611893576118926116fe565b5b835b818110156118da57805167ffffffffffffffff8111156118b8576118b7611037565b5b8086016118c589826117f5565b85526020850194505050602081019050611895565b5050509392505050565b5f82601f8301126118f8576118f7611037565b5b815161190884826020860161185e565b91505092915050565b5f67ffffffffffffffff82111561192b5761192a610fbb565b5b602082029050602081019050919050565b61194581611483565b811461194f575f80fd5b50565b5f815190506119608161193c565b92915050565b5f61197861197384611911565b611019565b9050808382526020820190506020840283018581111561199b5761199a6116fe565b5b835b818110156119c457806119b08882611952565b84526020840193505060208101905061199d565b5050509392505050565b5f82601f8301126119e2576119e1611037565b5b81516119f2848260208601611966565b91505092915050565b5f60608284031215611a1057611a0f610fb7565b5b611a1a6060611019565b90505f611a298482850161166d565b5f83015250602082015167ffffffffffffffff811115611a4c57611a4b611033565b5b611a58848285016118e4565b602083015250604082015167ffffffffffffffff811115611a7c57611a7b611033565b5b611a88848285016119ce565b60408301525092915050565b5f60208284031215611aa957611aa8610d9c565b5b5f82015167ffffffffffffffff811115611ac657611ac5610da0565b5b611ad2848285016119fb565b91505092915050565b5f819050919050565b611af5611af08261148c565b611adb565b82525050565b5f611b068284611ae4565b60208201915081905092915050565b5f8160601b9050919050565b5f611b2b82611b15565b9050919050565b5f611b3c82611b21565b9050919050565b611b54611b4f82610dc3565b611b32565b82525050565b5f611b658284611b43565b60148201915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611bab82610dfe565b9150611bb683610dfe565b9250828201905080821115611bce57611bcd611b74565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea26469706673582212200b372e8ac0975068cb6ba68a257f2bff64b96f90ba62bb979233091a88cce04564736f6c63430008180033 \ No newline at end of file +608060405234801561000f575f80fd5b5060043610610091575f3560e01c8063313ce56711610064578063313ce5671461013157806370a082311461014f57806395d89b411461017f578063a9059cbb1461019d578063dd62ed3e146101cd57610091565b806306fdde0314610095578063095ea7b3146100b357806318160ddd146100e357806323b872dd14610101575b5f80fd5b61009d6101fd565b6040516100aa9190610d59565b60405180910390f35b6100cd60048036038101906100c89190610e17565b61028b565b6040516100da9190610e6f565b60405180910390f35b6100eb610379565b6040516100f89190610e97565b60405180910390f35b61011b60048036038101906101169190610eb0565b610407565b6040516101289190610e6f565b60405180910390f35b61013961061d565b6040516101469190610f1b565b60405180910390f35b61016960048036038101906101649190610f34565b6106ab565b6040516101769190610e97565b60405180910390f35b6101876107dc565b6040516101949190610d59565b60405180910390f35b6101b760048036038101906101b29190610e17565b61086b565b6040516101c49190610e6f565b60405180910390f35b6101e760048036038101906101e29190610f5f565b6109ce565b6040516101f49190610e97565b60405180910390f35b606073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaa89f256040518163ffffffff1660e01b81526004015f60405180830381865afa15801561025b573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061028391906111ae565b5f0151905090565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663173263c63385856040518463ffffffff1660e01b81526004016102dd93929190611204565b5f604051808303815f87803b1580156102f4575f80fd5b505af1158015610306573d5f803e3d5ffd5b505050508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103679190610e97565b60405180910390a36001905092915050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaa89f256040518163ffffffff1660e01b81526004015f60405180830381865afa1580156103d6573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906103fe91906111ae565b60600151905090565b5f67ffffffffffffffff8016821115610455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044c90611283565b60405180910390fd5b61045d610cac565b82815f019067ffffffffffffffff16908167ffffffffffffffff168152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e2d3c4e8633846040518463ffffffff1660e01b81526004016104cd93929190611565565b5f604051808303815f87803b1580156104e4575f80fd5b505af11580156104f6573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146105ac5773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b815260040161057e93929190611565565b5f604051808303815f87803b158015610595575f80fd5b505af11580156105a7573d5f803e3d5ffd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516106099190610e97565b60405180910390a360019150509392505050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaa89f256040518163ffffffff1660e01b81526004015f60405180830381865afa15801561067a573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906106a291906111ae565b60400151905090565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561070a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072e91906115cb565b90505f61073b8483610a7a565b905073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b019204f826040518263ffffffff1660e01b815260040161078a919061161d565b602060405180830381865afa1580156107a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107c99190611667565b67ffffffffffffffff1692505050919050565b606073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaa89f256040518163ffffffff1660e01b81526004015f60405180830381865afa15801561083a573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061086291906111ae565b60200151905090565b5f67ffffffffffffffff80168211156108b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b090611283565b60405180910390fd5b6108c1610cac565b82815f019067ffffffffffffffff16908167ffffffffffffffff168152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b815260040161093193929190611565565b5f604051808303815f87803b158015610948575f80fd5b505af115801561095a573d5f803e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516109bb9190610e97565b60405180910390a3600191505092915050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630af4187d85856040518363ffffffff1660e01b8152600401610a1f929190611692565b5f60405180830381865afa158015610a39573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610a619190611a7a565b9050805f015167ffffffffffffffff1691505092915050565b610a82610cd6565b5f82604051602001610a949190611ae1565b60405160208183030381529060405290505f84604051602001610ab79190611b40565b6040516020818303038152906040529050610ad0610cd6565b825182516001610ae09190611b87565b610aea9190611b87565b67ffffffffffffffff811115610b0357610b02610fa1565b5b6040519080825280601f01601f191660200182016040528015610b355781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610b5857610b57611bba565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8351811015610c0c57838181518110610ba457610ba3611bba565b5b602001015160f81c60f81b825f0151600183610bc09190611b87565b81518110610bd157610bd0611bba565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610b88565b505f5b8251811015610c9f57828181518110610c2b57610c2a611bba565b5b602001015160f81c60f81b825f01518551600184610c499190611b87565b610c539190611b87565b81518110610c6457610c63611bba565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610c0f565b5080935050505092915050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060200160405280606081525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610d2b82610ce9565b610d358185610cf3565b9350610d45818560208601610d03565b610d4e81610d11565b840191505092915050565b5f6020820190508181035f830152610d718184610d21565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610db382610d8a565b9050919050565b610dc381610da9565b8114610dcd575f80fd5b50565b5f81359050610dde81610dba565b92915050565b5f819050919050565b610df681610de4565b8114610e00575f80fd5b50565b5f81359050610e1181610ded565b92915050565b5f8060408385031215610e2d57610e2c610d82565b5b5f610e3a85828601610dd0565b9250506020610e4b85828601610e03565b9150509250929050565b5f8115159050919050565b610e6981610e55565b82525050565b5f602082019050610e825f830184610e60565b92915050565b610e9181610de4565b82525050565b5f602082019050610eaa5f830184610e88565b92915050565b5f805f60608486031215610ec757610ec6610d82565b5b5f610ed486828701610dd0565b9350506020610ee586828701610dd0565b9250506040610ef686828701610e03565b9150509250925092565b5f60ff82169050919050565b610f1581610f00565b82525050565b5f602082019050610f2e5f830184610f0c565b92915050565b5f60208284031215610f4957610f48610d82565b5b5f610f5684828501610dd0565b91505092915050565b5f8060408385031215610f7557610f74610d82565b5b5f610f8285828601610dd0565b9250506020610f9385828601610dd0565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610fd782610d11565b810181811067ffffffffffffffff82111715610ff657610ff5610fa1565b5b80604052505050565b5f611008610d79565b90506110148282610fce565b919050565b5f80fd5b5f80fd5b5f80fd5b5f67ffffffffffffffff82111561103f5761103e610fa1565b5b61104882610d11565b9050602081019050919050565b5f61106761106284611025565b610fff565b90508281526020810184848401111561108357611082611021565b5b61108e848285610d03565b509392505050565b5f82601f8301126110aa576110a961101d565b5b81516110ba848260208601611055565b91505092915050565b6110cc81610f00565b81146110d6575f80fd5b50565b5f815190506110e7816110c3565b92915050565b5f815190506110fb81610ded565b92915050565b5f6080828403121561111657611115610f9d565b5b6111206080610fff565b90505f82015167ffffffffffffffff81111561113f5761113e611019565b5b61114b84828501611096565b5f83015250602082015167ffffffffffffffff81111561116e5761116d611019565b5b61117a84828501611096565b602083015250604061118e848285016110d9565b60408301525060606111a2848285016110ed565b60608301525092915050565b5f602082840312156111c3576111c2610d82565b5b5f82015167ffffffffffffffff8111156111e0576111df610d86565b5b6111ec84828501611101565b91505092915050565b6111fe81610da9565b82525050565b5f6060820190506112175f8301866111f5565b61122460208301856111f5565b6112316040830184610e88565b949350505050565b7f616d6f756e7420697320746f6f206c61726765000000000000000000000000005f82015250565b5f61126d601383610cf3565b915061127882611239565b602082019050919050565b5f6020820190508181035f83015261129a81611261565b9050919050565b5f67ffffffffffffffff82169050919050565b6112bd816112a1565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f611310826112ec565b61131a81856112f6565b935061132a818560208601610d03565b61133381610d11565b840191505092915050565b5f602083015f8301518482035f8601526113588282611306565b9150508091505092915050565b61136e81610de4565b82525050565b5f604083015f8301518482035f86015261138e828261133e565b91505060208301516113a36020860182611365565b508091505092915050565b5f6113b98383611374565b905092915050565b5f602082019050919050565b5f6113d7826112c3565b6113e181856112cd565b9350836020820285016113f3856112dd565b805f5b8581101561142e578484038952815161140f85826113ae565b945061141a836113c1565b925060208a019950506001810190506113f6565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b5f61147c82611469565b9050919050565b61148c81611472565b82525050565b5f61149d8383611483565b60208301905092915050565b5f602082019050919050565b5f6114bf82611440565b6114c9818561144a565b93506114d48361145a565b805f5b838110156115045781516114eb8882611492565b97506114f6836114a9565b9250506001810190506114d7565b5085935050505092915050565b5f606083015f8301516115265f8601826112b4565b506020830151848203602086015261153e82826113cd565b9150506040830151848203604086015261155882826114b5565b9150508091505092915050565b5f6060820190506115785f8301866111f5565b61158560208301856111f5565b81810360408301526115978184611511565b9050949350505050565b6115aa81611469565b81146115b4575f80fd5b50565b5f815190506115c5816115a1565b92915050565b5f602082840312156115e0576115df610d82565b5b5f6115ed848285016115b7565b91505092915050565b5f602083015f8301518482035f8601526116108282611306565b9150508091505092915050565b5f6020820190508181035f83015261163581846115f6565b905092915050565b611646816112a1565b8114611650575f80fd5b50565b5f815190506116618161163d565b92915050565b5f6020828403121561167c5761167b610d82565b5b5f61168984828501611653565b91505092915050565b5f6040820190506116a55f8301856111f5565b6116b260208301846111f5565b9392505050565b5f67ffffffffffffffff8211156116d3576116d2610fa1565b5b602082029050602081019050919050565b5f80fd5b5f67ffffffffffffffff82111561170257611701610fa1565b5b61170b82610d11565b9050602081019050919050565b5f61172a611725846116e8565b610fff565b90508281526020810184848401111561174657611745611021565b5b611751848285610d03565b509392505050565b5f82601f83011261176d5761176c61101d565b5b815161177d848260208601611718565b91505092915050565b5f6020828403121561179b5761179a610f9d565b5b6117a56020610fff565b90505f82015167ffffffffffffffff8111156117c4576117c3611019565b5b6117d084828501611759565b5f8301525092915050565b5f604082840312156117f0576117ef610f9d565b5b6117fa6040610fff565b90505f82015167ffffffffffffffff81111561181957611818611019565b5b61182584828501611786565b5f830152506020611838848285016110ed565b60208301525092915050565b5f611856611851846116b9565b610fff565b90508083825260208201905060208402830185811115611879576118786116e4565b5b835b818110156118c057805167ffffffffffffffff81111561189e5761189d61101d565b5b8086016118ab89826117db565b8552602085019450505060208101905061187b565b5050509392505050565b5f82601f8301126118de576118dd61101d565b5b81516118ee848260208601611844565b91505092915050565b5f67ffffffffffffffff82111561191157611910610fa1565b5b602082029050602081019050919050565b61192b81611469565b8114611935575f80fd5b50565b5f8151905061194681611922565b92915050565b5f61195e611959846118f7565b610fff565b90508083825260208201905060208402830185811115611981576119806116e4565b5b835b818110156119aa57806119968882611938565b845260208401935050602081019050611983565b5050509392505050565b5f82601f8301126119c8576119c761101d565b5b81516119d884826020860161194c565b91505092915050565b5f606082840312156119f6576119f5610f9d565b5b611a006060610fff565b90505f611a0f84828501611653565b5f83015250602082015167ffffffffffffffff811115611a3257611a31611019565b5b611a3e848285016118ca565b602083015250604082015167ffffffffffffffff811115611a6257611a61611019565b5b611a6e848285016119b4565b60408301525092915050565b5f60208284031215611a8f57611a8e610d82565b5b5f82015167ffffffffffffffff811115611aac57611aab610d86565b5b611ab8848285016119e1565b91505092915050565b5f819050919050565b611adb611ad682611472565b611ac1565b82525050565b5f611aec8284611aca565b60208201915081905092915050565b5f8160601b9050919050565b5f611b1182611afb565b9050919050565b5f611b2282611b07565b9050919050565b611b3a611b3582610da9565b611b18565b82525050565b5f611b4b8284611b29565b60148201915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611b9182610de4565b9150611b9c83610de4565b9250828201905080821115611bb457611bb3611b5a565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220ff65c44d1ad9b2379a13b2e3dbe6ff4c9031521d466905e3b8afdaa7ee0c26c664736f6c634300081a0033 \ No newline at end of file diff --git a/packages/vm/core/evm/iscmagic/ERC20ExternalNativeTokens.bin-runtime b/packages/vm/core/evm/iscmagic/ERC20ExternalNativeTokens.bin-runtime index 8b38eff059..86dfcbba95 100644 --- a/packages/vm/core/evm/iscmagic/ERC20ExternalNativeTokens.bin-runtime +++ b/packages/vm/core/evm/iscmagic/ERC20ExternalNativeTokens.bin-runtime @@ -1 +1 @@ -608060405234801561000f575f80fd5b506004361061009c575f3560e01c806370a082311161006457806370a082311461015a5780637a4a967d1461018a57806395d89b41146101a8578063a9059cbb146101c6578063dd62ed3e146101f65761009c565b806306fdde03146100a0578063095ea7b3146100be57806318160ddd146100ee57806323b872dd1461010c578063313ce5671461013c575b5f80fd5b6100a8610226565b6040516100b59190610f53565b60405180910390f35b6100d860048036038101906100d39190611011565b6102b5565b6040516100e59190611069565b60405180910390f35b6100f66103ac565b6040516101039190611091565b60405180910390f35b610126600480360381019061012191906110aa565b6103b5565b6040516101339190611069565b60405180910390f35b610144610611565b6040516101519190611115565b60405180910390f35b610174600480360381019061016f919061112e565b610626565b6040516101819190611091565b60405180910390f35b610192610756565b60405161019f91906111d2565b60405180910390f35b6101b06107ff565b6040516101bd9190610f53565b60405180910390f35b6101e060048036038101906101db9190611011565b61088f565b6040516101ed9190611069565b60405180910390f35b610210600480360381019061020b91906111f2565b610a38565b60405161021d9190611091565b60405180910390f35b60605f80546102349061125d565b80601f01602080910402602001604051908101604052809291908181526020018280546102609061125d565b80156102ab5780601f10610282576101008083540402835291602001916102ab565b820191905f5260205f20905b81548152906001019060200180831161028e57829003601f168201915b5050505050905090565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634601069233856102f0610756565b866040518563ffffffff1660e01b8152600401610310949392919061129c565b5f604051808303815f87803b158015610327575f80fd5b505af1158015610339573d5f803e3d5ffd5b505050508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161039a9190611091565b60405180910390a36001905092915050565b5f600454905090565b5f6103be610e5a565b600167ffffffffffffffff8111156103d9576103d86112e6565b5b60405190808252806020026020018201604052801561041257816020015b6103ff610e84565b8152602001906001900390816103f75790505b508160200181905250610423610756565b81602001515f8151811061043a57610439611313565b5b60200260200101515f01819052508281602001515f815181106104605761045f611313565b5b6020026020010151602001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e2d3c4e8633846040518463ffffffff1660e01b81526004016104c1939291906115b2565b5f604051808303815f87803b1580156104d8575f80fd5b505af11580156104ea573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146105a05773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b8152600401610572939291906115b2565b5f604051808303815f87803b158015610589575f80fd5b505af115801561059b573d5f803e3d5ffd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516105fd9190611091565b60405180910390a360019150509392505050565b5f60025f9054906101000a900460ff16905090565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610685573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a99190611618565b90505f6106b68483610b64565b905073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ef43e40d6106f0610756565b836040518363ffffffff1660e01b815260040161070e92919061166a565b602060405180830381865afa158015610729573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074d91906116b3565b92505050919050565b61075e610ea3565b60036040518060200160405290815f8201805461077a9061125d565b80601f01602080910402602001604051908101604052809291908181526020018280546107a69061125d565b80156107f15780601f106107c8576101008083540402835291602001916107f1565b820191905f5260205f20905b8154815290600101906020018083116107d457829003601f168201915b505050505081525050905090565b60606001805461080e9061125d565b80601f016020809104026020016040519081016040528092919081815260200182805461083a9061125d565b80156108855780601f1061085c57610100808354040283529160200191610885565b820191905f5260205f20905b81548152906001019060200180831161086857829003601f168201915b5050505050905090565b5f610898610e5a565b600167ffffffffffffffff8111156108b3576108b26112e6565b5b6040519080825280602002602001820160405280156108ec57816020015b6108d9610e84565b8152602001906001900390816108d15790505b5081602001819052506108fd610756565b81602001515f8151811061091457610913611313565b5b60200260200101515f01819052508281602001515f8151811061093a57610939611313565b5b6020026020010151602001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b815260040161099b939291906115b2565b5f604051808303815f87803b1580156109b2575f80fd5b505af11580156109c4573d5f803e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610a259190611091565b60405180910390a3600191505092915050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630af4187d85856040518363ffffffff1660e01b8152600401610a899291906116de565b5f60405180830381865afa158015610aa3573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610acb9190611b4b565b90505f610ad6610756565b90505f5b826020015151811015610b5757610b1883602001518281518110610b0157610b00611313565b5b60200260200101515f01515f0151835f0151610d96565b15610b4a5782602001518181518110610b3457610b33611313565b5b6020026020010151602001519350505050610b5e565b8080600101915050610ada565b505f925050505b92915050565b610b6c610eb6565b5f82604051602001610b7e9190611bb2565b60405160208183030381529060405290505f84604051602001610ba19190611c11565b6040516020818303038152906040529050610bba610eb6565b825182516001610bca9190611c58565b610bd49190611c58565b67ffffffffffffffff811115610bed57610bec6112e6565b5b6040519080825280601f01601f191660200182016040528015610c1f5781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610c4257610c41611313565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8351811015610cf657838181518110610c8e57610c8d611313565b5b602001015160f81c60f81b825f0151600183610caa9190611c58565b81518110610cbb57610cba611313565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610c72565b505f5b8251811015610d8957828181518110610d1557610d14611313565b5b602001015160f81c60f81b825f01518551600184610d339190611c58565b610d3d9190611c58565b81518110610d4e57610d4d611313565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610cf9565b5080935050505092915050565b5f8151835114610da8575f9050610e54565b5f5b8351811015610e4e57828181518110610dc657610dc5611313565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848281518110610e0657610e05611313565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610e41575f915050610e54565b8080600101915050610daa565b50600190505b92915050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060400160405280610e97610ea3565b81526020015f81525090565b6040518060200160405280606081525090565b6040518060200160405280606081525090565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610f00578082015181840152602081019050610ee5565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610f2582610ec9565b610f2f8185610ed3565b9350610f3f818560208601610ee3565b610f4881610f0b565b840191505092915050565b5f6020820190508181035f830152610f6b8184610f1b565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610fad82610f84565b9050919050565b610fbd81610fa3565b8114610fc7575f80fd5b50565b5f81359050610fd881610fb4565b92915050565b5f819050919050565b610ff081610fde565b8114610ffa575f80fd5b50565b5f8135905061100b81610fe7565b92915050565b5f806040838503121561102757611026610f7c565b5b5f61103485828601610fca565b925050602061104585828601610ffd565b9150509250929050565b5f8115159050919050565b6110638161104f565b82525050565b5f60208201905061107c5f83018461105a565b92915050565b61108b81610fde565b82525050565b5f6020820190506110a45f830184611082565b92915050565b5f805f606084860312156110c1576110c0610f7c565b5b5f6110ce86828701610fca565b93505060206110df86828701610fca565b92505060406110f086828701610ffd565b9150509250925092565b5f60ff82169050919050565b61110f816110fa565b82525050565b5f6020820190506111285f830184611106565b92915050565b5f6020828403121561114357611142610f7c565b5b5f61115084828501610fca565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f61117d82611159565b6111878185611163565b9350611197818560208601610ee3565b6111a081610f0b565b840191505092915050565b5f602083015f8301518482035f8601526111c58282611173565b9150508091505092915050565b5f6020820190508181035f8301526111ea81846111ab565b905092915050565b5f806040838503121561120857611207610f7c565b5b5f61121585828601610fca565b925050602061122685828601610fca565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061127457607f821691505b60208210810361128757611286611230565b5b50919050565b61129681610fa3565b82525050565b5f6080820190506112af5f83018761128d565b6112bc602083018661128d565b81810360408301526112ce81856111ab565b90506112dd6060830184611082565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f67ffffffffffffffff82169050919050565b61135c81611340565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f602083015f8301518482035f8601526113a58282611173565b9150508091505092915050565b6113bb81610fde565b82525050565b5f604083015f8301518482035f8601526113db828261138b565b91505060208301516113f060208601826113b2565b508091505092915050565b5f61140683836113c1565b905092915050565b5f602082019050919050565b5f61142482611362565b61142e818561136c565b9350836020820285016114408561137c565b805f5b8581101561147b578484038952815161145c85826113fb565b94506114678361140e565b925060208a01995050600181019050611443565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b5f6114c9826114b6565b9050919050565b6114d9816114bf565b82525050565b5f6114ea83836114d0565b60208301905092915050565b5f602082019050919050565b5f61150c8261148d565b6115168185611497565b9350611521836114a7565b805f5b8381101561155157815161153888826114df565b9750611543836114f6565b925050600181019050611524565b5085935050505092915050565b5f606083015f8301516115735f860182611353565b506020830151848203602086015261158b828261141a565b915050604083015184820360408601526115a58282611502565b9150508091505092915050565b5f6060820190506115c55f83018661128d565b6115d2602083018561128d565b81810360408301526115e4818461155e565b9050949350505050565b6115f7816114b6565b8114611601575f80fd5b50565b5f81519050611612816115ee565b92915050565b5f6020828403121561162d5761162c610f7c565b5b5f61163a84828501611604565b91505092915050565b5f602083015f8301518482035f86015261165d8282611173565b9150508091505092915050565b5f6040820190508181035f83015261168281856111ab565b905081810360208301526116968184611643565b90509392505050565b5f815190506116ad81610fe7565b92915050565b5f602082840312156116c8576116c7610f7c565b5b5f6116d58482850161169f565b91505092915050565b5f6040820190506116f15f83018561128d565b6116fe602083018461128d565b9392505050565b5f80fd5b61171282610f0b565b810181811067ffffffffffffffff82111715611731576117306112e6565b5b80604052505050565b5f611743610f73565b905061174f8282611709565b919050565b5f80fd5b61176181611340565b811461176b575f80fd5b50565b5f8151905061177c81611758565b92915050565b5f80fd5b5f67ffffffffffffffff8211156117a05761179f6112e6565b5b602082029050602081019050919050565b5f80fd5b5f80fd5b5f67ffffffffffffffff8211156117d3576117d26112e6565b5b6117dc82610f0b565b9050602081019050919050565b5f6117fb6117f6846117b9565b61173a565b905082815260208101848484011115611817576118166117b5565b5b611822848285610ee3565b509392505050565b5f82601f83011261183e5761183d611782565b5b815161184e8482602086016117e9565b91505092915050565b5f6020828403121561186c5761186b611705565b5b611876602061173a565b90505f82015167ffffffffffffffff81111561189557611894611754565b5b6118a18482850161182a565b5f8301525092915050565b5f604082840312156118c1576118c0611705565b5b6118cb604061173a565b90505f82015167ffffffffffffffff8111156118ea576118e9611754565b5b6118f684828501611857565b5f8301525060206119098482850161169f565b60208301525092915050565b5f61192761192284611786565b61173a565b9050808382526020820190506020840283018581111561194a576119496117b1565b5b835b8181101561199157805167ffffffffffffffff81111561196f5761196e611782565b5b80860161197c89826118ac565b8552602085019450505060208101905061194c565b5050509392505050565b5f82601f8301126119af576119ae611782565b5b81516119bf848260208601611915565b91505092915050565b5f67ffffffffffffffff8211156119e2576119e16112e6565b5b602082029050602081019050919050565b6119fc816114b6565b8114611a06575f80fd5b50565b5f81519050611a17816119f3565b92915050565b5f611a2f611a2a846119c8565b61173a565b90508083825260208201905060208402830185811115611a5257611a516117b1565b5b835b81811015611a7b5780611a678882611a09565b845260208401935050602081019050611a54565b5050509392505050565b5f82601f830112611a9957611a98611782565b5b8151611aa9848260208601611a1d565b91505092915050565b5f60608284031215611ac757611ac6611705565b5b611ad1606061173a565b90505f611ae08482850161176e565b5f83015250602082015167ffffffffffffffff811115611b0357611b02611754565b5b611b0f8482850161199b565b602083015250604082015167ffffffffffffffff811115611b3357611b32611754565b5b611b3f84828501611a85565b60408301525092915050565b5f60208284031215611b6057611b5f610f7c565b5b5f82015167ffffffffffffffff811115611b7d57611b7c610f80565b5b611b8984828501611ab2565b91505092915050565b5f819050919050565b611bac611ba7826114bf565b611b92565b82525050565b5f611bbd8284611b9b565b60208201915081905092915050565b5f8160601b9050919050565b5f611be282611bcc565b9050919050565b5f611bf382611bd8565b9050919050565b611c0b611c0682610fa3565b611be9565b82525050565b5f611c1c8284611bfa565b60148201915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611c6282610fde565b9150611c6d83610fde565b9250828201905080821115611c8557611c84611c2b565b5b9291505056fea2646970667358221220196dee7ccfb75e8b8609cfe2920dab94710291e24adcd38189cc3476bef22e8064736f6c63430008180033 \ No newline at end of file +608060405234801561000f575f80fd5b506004361061009c575f3560e01c806370a082311161006457806370a082311461015a5780637a4a967d1461018a57806395d89b41146101a8578063a9059cbb146101c6578063dd62ed3e146101f65761009c565b806306fdde03146100a0578063095ea7b3146100be57806318160ddd146100ee57806323b872dd1461010c578063313ce5671461013c575b5f80fd5b6100a8610226565b6040516100b59190610f39565b60405180910390f35b6100d860048036038101906100d39190610ff7565b6102b5565b6040516100e5919061104f565b60405180910390f35b6100f66103ac565b6040516101039190611077565b60405180910390f35b61012660048036038101906101219190611090565b6103b5565b604051610133919061104f565b60405180910390f35b610144610611565b60405161015191906110fb565b60405180910390f35b610174600480360381019061016f9190611114565b610626565b6040516101819190611077565b60405180910390f35b610192610756565b60405161019f91906111b8565b60405180910390f35b6101b06107ff565b6040516101bd9190610f39565b60405180910390f35b6101e060048036038101906101db9190610ff7565b61088f565b6040516101ed919061104f565b60405180910390f35b610210600480360381019061020b91906111d8565b610a38565b60405161021d9190611077565b60405180910390f35b60605f805461023490611243565b80601f016020809104026020016040519081016040528092919081815260200182805461026090611243565b80156102ab5780601f10610282576101008083540402835291602001916102ab565b820191905f5260205f20905b81548152906001019060200180831161028e57829003601f168201915b5050505050905090565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634601069233856102f0610756565b866040518563ffffffff1660e01b81526004016103109493929190611282565b5f604051808303815f87803b158015610327575f80fd5b505af1158015610339573d5f803e3d5ffd5b505050508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161039a9190611077565b60405180910390a36001905092915050565b5f600454905090565b5f6103be610e5a565b600167ffffffffffffffff8111156103d9576103d86112cc565b5b60405190808252806020026020018201604052801561041257816020015b6103ff610e84565b8152602001906001900390816103f75790505b508160200181905250610423610756565b81602001515f8151811061043a576104396112f9565b5b60200260200101515f01819052508281602001515f815181106104605761045f6112f9565b5b6020026020010151602001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e2d3c4e8633846040518463ffffffff1660e01b81526004016104c193929190611598565b5f604051808303815f87803b1580156104d8575f80fd5b505af11580156104ea573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146105a05773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b815260040161057293929190611598565b5f604051808303815f87803b158015610589575f80fd5b505af115801561059b573d5f803e3d5ffd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516105fd9190611077565b60405180910390a360019150509392505050565b5f60025f9054906101000a900460ff16905090565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610685573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a991906115fe565b90505f6106b68483610b64565b905073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ef43e40d6106f0610756565b836040518363ffffffff1660e01b815260040161070e929190611650565b602060405180830381865afa158015610729573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074d9190611699565b92505050919050565b61075e610ea3565b60036040518060200160405290815f8201805461077a90611243565b80601f01602080910402602001604051908101604052809291908181526020018280546107a690611243565b80156107f15780601f106107c8576101008083540402835291602001916107f1565b820191905f5260205f20905b8154815290600101906020018083116107d457829003601f168201915b505050505081525050905090565b60606001805461080e90611243565b80601f016020809104026020016040519081016040528092919081815260200182805461083a90611243565b80156108855780601f1061085c57610100808354040283529160200191610885565b820191905f5260205f20905b81548152906001019060200180831161086857829003601f168201915b5050505050905090565b5f610898610e5a565b600167ffffffffffffffff8111156108b3576108b26112cc565b5b6040519080825280602002602001820160405280156108ec57816020015b6108d9610e84565b8152602001906001900390816108d15790505b5081602001819052506108fd610756565b81602001515f81518110610914576109136112f9565b5b60200260200101515f01819052508281602001515f8151811061093a576109396112f9565b5b6020026020010151602001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b815260040161099b93929190611598565b5f604051808303815f87803b1580156109b2575f80fd5b505af11580156109c4573d5f803e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610a259190611077565b60405180910390a3600191505092915050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630af4187d85856040518363ffffffff1660e01b8152600401610a899291906116c4565b5f60405180830381865afa158015610aa3573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610acb9190611b31565b90505f610ad6610756565b90505f5b826020015151811015610b5757610b1883602001518281518110610b0157610b006112f9565b5b60200260200101515f01515f0151835f0151610d96565b15610b4a5782602001518181518110610b3457610b336112f9565b5b6020026020010151602001519350505050610b5e565b8080600101915050610ada565b505f925050505b92915050565b610b6c610eb6565b5f82604051602001610b7e9190611b98565b60405160208183030381529060405290505f84604051602001610ba19190611bf7565b6040516020818303038152906040529050610bba610eb6565b825182516001610bca9190611c3e565b610bd49190611c3e565b67ffffffffffffffff811115610bed57610bec6112cc565b5b6040519080825280601f01601f191660200182016040528015610c1f5781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610c4257610c416112f9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8351811015610cf657838181518110610c8e57610c8d6112f9565b5b602001015160f81c60f81b825f0151600183610caa9190611c3e565b81518110610cbb57610cba6112f9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610c72565b505f5b8251811015610d8957828181518110610d1557610d146112f9565b5b602001015160f81c60f81b825f01518551600184610d339190611c3e565b610d3d9190611c3e565b81518110610d4e57610d4d6112f9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610cf9565b5080935050505092915050565b5f8151835114610da8575f9050610e54565b5f5b8351811015610e4e57828181518110610dc657610dc56112f9565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848281518110610e0657610e056112f9565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610e41575f915050610e54565b8080600101915050610daa565b50600190505b92915050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060400160405280610e97610ea3565b81526020015f81525090565b6040518060200160405280606081525090565b6040518060200160405280606081525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610f0b82610ec9565b610f158185610ed3565b9350610f25818560208601610ee3565b610f2e81610ef1565b840191505092915050565b5f6020820190508181035f830152610f518184610f01565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f9382610f6a565b9050919050565b610fa381610f89565b8114610fad575f80fd5b50565b5f81359050610fbe81610f9a565b92915050565b5f819050919050565b610fd681610fc4565b8114610fe0575f80fd5b50565b5f81359050610ff181610fcd565b92915050565b5f806040838503121561100d5761100c610f62565b5b5f61101a85828601610fb0565b925050602061102b85828601610fe3565b9150509250929050565b5f8115159050919050565b61104981611035565b82525050565b5f6020820190506110625f830184611040565b92915050565b61107181610fc4565b82525050565b5f60208201905061108a5f830184611068565b92915050565b5f805f606084860312156110a7576110a6610f62565b5b5f6110b486828701610fb0565b93505060206110c586828701610fb0565b92505060406110d686828701610fe3565b9150509250925092565b5f60ff82169050919050565b6110f5816110e0565b82525050565b5f60208201905061110e5f8301846110ec565b92915050565b5f6020828403121561112957611128610f62565b5b5f61113684828501610fb0565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6111638261113f565b61116d8185611149565b935061117d818560208601610ee3565b61118681610ef1565b840191505092915050565b5f602083015f8301518482035f8601526111ab8282611159565b9150508091505092915050565b5f6020820190508181035f8301526111d08184611191565b905092915050565b5f80604083850312156111ee576111ed610f62565b5b5f6111fb85828601610fb0565b925050602061120c85828601610fb0565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061125a57607f821691505b60208210810361126d5761126c611216565b5b50919050565b61127c81610f89565b82525050565b5f6080820190506112955f830187611273565b6112a26020830186611273565b81810360408301526112b48185611191565b90506112c36060830184611068565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f67ffffffffffffffff82169050919050565b61134281611326565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f602083015f8301518482035f86015261138b8282611159565b9150508091505092915050565b6113a181610fc4565b82525050565b5f604083015f8301518482035f8601526113c18282611371565b91505060208301516113d66020860182611398565b508091505092915050565b5f6113ec83836113a7565b905092915050565b5f602082019050919050565b5f61140a82611348565b6114148185611352565b93508360208202850161142685611362565b805f5b85811015611461578484038952815161144285826113e1565b945061144d836113f4565b925060208a01995050600181019050611429565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b5f6114af8261149c565b9050919050565b6114bf816114a5565b82525050565b5f6114d083836114b6565b60208301905092915050565b5f602082019050919050565b5f6114f282611473565b6114fc818561147d565b93506115078361148d565b805f5b8381101561153757815161151e88826114c5565b9750611529836114dc565b92505060018101905061150a565b5085935050505092915050565b5f606083015f8301516115595f860182611339565b50602083015184820360208601526115718282611400565b9150506040830151848203604086015261158b82826114e8565b9150508091505092915050565b5f6060820190506115ab5f830186611273565b6115b86020830185611273565b81810360408301526115ca8184611544565b9050949350505050565b6115dd8161149c565b81146115e7575f80fd5b50565b5f815190506115f8816115d4565b92915050565b5f6020828403121561161357611612610f62565b5b5f611620848285016115ea565b91505092915050565b5f602083015f8301518482035f8601526116438282611159565b9150508091505092915050565b5f6040820190508181035f8301526116688185611191565b9050818103602083015261167c8184611629565b90509392505050565b5f8151905061169381610fcd565b92915050565b5f602082840312156116ae576116ad610f62565b5b5f6116bb84828501611685565b91505092915050565b5f6040820190506116d75f830185611273565b6116e46020830184611273565b9392505050565b5f80fd5b6116f882610ef1565b810181811067ffffffffffffffff82111715611717576117166112cc565b5b80604052505050565b5f611729610f59565b905061173582826116ef565b919050565b5f80fd5b61174781611326565b8114611751575f80fd5b50565b5f815190506117628161173e565b92915050565b5f80fd5b5f67ffffffffffffffff821115611786576117856112cc565b5b602082029050602081019050919050565b5f80fd5b5f80fd5b5f67ffffffffffffffff8211156117b9576117b86112cc565b5b6117c282610ef1565b9050602081019050919050565b5f6117e16117dc8461179f565b611720565b9050828152602081018484840111156117fd576117fc61179b565b5b611808848285610ee3565b509392505050565b5f82601f83011261182457611823611768565b5b81516118348482602086016117cf565b91505092915050565b5f60208284031215611852576118516116eb565b5b61185c6020611720565b90505f82015167ffffffffffffffff81111561187b5761187a61173a565b5b61188784828501611810565b5f8301525092915050565b5f604082840312156118a7576118a66116eb565b5b6118b16040611720565b90505f82015167ffffffffffffffff8111156118d0576118cf61173a565b5b6118dc8482850161183d565b5f8301525060206118ef84828501611685565b60208301525092915050565b5f61190d6119088461176c565b611720565b905080838252602082019050602084028301858111156119305761192f611797565b5b835b8181101561197757805167ffffffffffffffff81111561195557611954611768565b5b8086016119628982611892565b85526020850194505050602081019050611932565b5050509392505050565b5f82601f83011261199557611994611768565b5b81516119a58482602086016118fb565b91505092915050565b5f67ffffffffffffffff8211156119c8576119c76112cc565b5b602082029050602081019050919050565b6119e28161149c565b81146119ec575f80fd5b50565b5f815190506119fd816119d9565b92915050565b5f611a15611a10846119ae565b611720565b90508083825260208201905060208402830185811115611a3857611a37611797565b5b835b81811015611a615780611a4d88826119ef565b845260208401935050602081019050611a3a565b5050509392505050565b5f82601f830112611a7f57611a7e611768565b5b8151611a8f848260208601611a03565b91505092915050565b5f60608284031215611aad57611aac6116eb565b5b611ab76060611720565b90505f611ac684828501611754565b5f83015250602082015167ffffffffffffffff811115611ae957611ae861173a565b5b611af584828501611981565b602083015250604082015167ffffffffffffffff811115611b1957611b1861173a565b5b611b2584828501611a6b565b60408301525092915050565b5f60208284031215611b4657611b45610f62565b5b5f82015167ffffffffffffffff811115611b6357611b62610f66565b5b611b6f84828501611a98565b91505092915050565b5f819050919050565b611b92611b8d826114a5565b611b78565b82525050565b5f611ba38284611b81565b60208201915081905092915050565b5f8160601b9050919050565b5f611bc882611bb2565b9050919050565b5f611bd982611bbe565b9050919050565b611bf1611bec82610f89565b611bcf565b82525050565b5f611c028284611be0565b60148201915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611c4882610fc4565b9150611c5383610fc4565b9250828201905080821115611c6b57611c6a611c11565b5b9291505056fea26469706673582212206eed40963bb98bc780cc0ff1ad2e819f6f5bc0ecf2764bcdcf97bd2c85a1b87664736f6c634300081a0033 \ No newline at end of file diff --git a/packages/vm/core/evm/iscmagic/ERC20NativeTokens.bin-runtime b/packages/vm/core/evm/iscmagic/ERC20NativeTokens.bin-runtime index fe611b6daf..3769882b5c 100644 --- a/packages/vm/core/evm/iscmagic/ERC20NativeTokens.bin-runtime +++ b/packages/vm/core/evm/iscmagic/ERC20NativeTokens.bin-runtime @@ -1 +1 @@ -608060405234801561000f575f80fd5b506004361061009c575f3560e01c806370a082311161006457806370a082311461015a5780637a4a967d1461018a57806395d89b41146101a8578063a9059cbb146101c6578063dd62ed3e146101f65761009c565b806306fdde03146100a0578063095ea7b3146100be57806318160ddd146100ee57806323b872dd1461010c578063313ce5671461013c575b5f80fd5b6100a8610226565b6040516100b59190611073565b60405180910390f35b6100d860048036038101906100d39190611131565b6102b5565b6040516100e59190611189565b60405180910390f35b6100f66103ac565b60405161010391906111b1565b60405180910390f35b610126600480360381019061012191906111ca565b610449565b6040516101339190611189565b60405180910390f35b6101446106a5565b6040516101519190611235565b60405180910390f35b610174600480360381019061016f919061124e565b6106ba565b60405161018191906111b1565b60405180910390f35b6101926107ea565b60405161019f91906112f2565b60405180910390f35b6101b061088d565b6040516101bd9190611073565b60405180910390f35b6101e060048036038101906101db9190611131565b61091d565b6040516101ed9190611189565b60405180910390f35b610210600480360381019061020b9190611312565b610ac6565b60405161021d91906111b1565b60405180910390f35b60605f80546102349061137d565b80601f01602080910402602001604051908101604052809291908181526020018280546102609061137d565b80156102ab5780601f10610282576101008083540402835291602001916102ab565b820191905f5260205f20905b81548152906001019060200180831161028e57829003601f168201915b5050505050905090565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634601069233856102f06107ea565b866040518563ffffffff1660e01b815260040161031094939291906113bc565b5f604051808303815f87803b158015610327575f80fd5b505af1158015610339573d5f803e3d5ffd5b505050508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161039a91906111b1565b60405180910390a36001905092915050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e64ea416103e5610bf2565b6040518263ffffffff1660e01b81526004016104019190611424565b606060405180830381865afa15801561041c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104409190611532565b60400151905090565b5f610452610f7a565b600167ffffffffffffffff81111561046d5761046c611441565b5b6040519080825280602002602001820160405280156104a657816020015b610493610fa4565b81526020019060019003908161048b5790505b5081602001819052506104b76107ea565b81602001515f815181106104ce576104cd61155d565b5b60200260200101515f01819052508281602001515f815181106104f4576104f361155d565b5b6020026020010151602001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e2d3c4e8633846040518463ffffffff1660e01b8152600401610555939291906117fc565b5f604051808303815f87803b15801561056c575f80fd5b505af115801561057e573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146106345773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b8152600401610606939291906117fc565b5f604051808303815f87803b15801561061d575f80fd5b505af115801561062f573d5f803e3d5ffd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161069191906111b1565b60405180910390a360019150509392505050565b5f60025f9054906101000a900460ff16905090565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610719573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061073d9190611862565b90505f61074a8483610c84565b905073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ef43e40d6107846107ea565b836040518363ffffffff1660e01b81526004016107a29291906118b4565b602060405180830381865afa1580156107bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e191906118e9565b92505050919050565b6107f2610fc3565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663360a917061082a610bf2565b6040518263ffffffff1660e01b81526004016108469190611424565b5f60405180830381865afa158015610860573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906108889190611a0f565b905090565b60606001805461089c9061137d565b80601f01602080910402602001604051908101604052809291908181526020018280546108c89061137d565b80156109135780601f106108ea57610100808354040283529160200191610913565b820191905f5260205f20905b8154815290600101906020018083116108f657829003601f168201915b5050505050905090565b5f610926610f7a565b600167ffffffffffffffff81111561094157610940611441565b5b60405190808252806020026020018201604052801561097a57816020015b610967610fa4565b81526020019060019003908161095f5790505b50816020018190525061098b6107ea565b81602001515f815181106109a2576109a161155d565b5b60200260200101515f01819052508281602001515f815181106109c8576109c761155d565b5b6020026020010151602001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b8152600401610a29939291906117fc565b5f604051808303815f87803b158015610a40575f80fd5b505af1158015610a52573d5f803e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610ab391906111b1565b60405180910390a3600191505092915050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630af4187d85856040518363ffffffff1660e01b8152600401610b17929190611a56565b5f60405180830381865afa158015610b31573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610b599190611d75565b90505f610b646107ea565b90505f5b826020015151811015610be557610ba683602001518281518110610b8f57610b8e61155d565b5b60200260200101515f01515f0151835f0151610eb6565b15610bd85782602001518181518110610bc257610bc161155d565b5b6020026020010151602001519350505050610bec565b8080600101915050610b68565b505f925050505b92915050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166308ad1993306040518263ffffffff1660e01b8152600401610c409190611dbc565b602060405180830381865afa158015610c5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7f9190611dff565b905090565b610c8c610fd6565b5f82604051602001610c9e9190611e4a565b60405160208183030381529060405290505f84604051602001610cc19190611ea9565b6040516020818303038152906040529050610cda610fd6565b825182516001610cea9190611ef0565b610cf49190611ef0565b67ffffffffffffffff811115610d0d57610d0c611441565b5b6040519080825280601f01601f191660200182016040528015610d3f5781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610d6257610d6161155d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8351811015610e1657838181518110610dae57610dad61155d565b5b602001015160f81c60f81b825f0151600183610dca9190611ef0565b81518110610ddb57610dda61155d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610d92565b505f5b8251811015610ea957828181518110610e3557610e3461155d565b5b602001015160f81c60f81b825f01518551600184610e539190611ef0565b610e5d9190611ef0565b81518110610e6e57610e6d61155d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610e19565b5080935050505092915050565b5f8151835114610ec8575f9050610f74565b5f5b8351811015610f6e57828181518110610ee657610ee561155d565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848281518110610f2657610f2561155d565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610f61575f915050610f74565b8080600101915050610eca565b50600190505b92915050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060400160405280610fb7610fc3565b81526020015f81525090565b6040518060200160405280606081525090565b6040518060200160405280606081525090565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611020578082015181840152602081019050611005565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61104582610fe9565b61104f8185610ff3565b935061105f818560208601611003565b6110688161102b565b840191505092915050565b5f6020820190508181035f83015261108b818461103b565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110cd826110a4565b9050919050565b6110dd816110c3565b81146110e7575f80fd5b50565b5f813590506110f8816110d4565b92915050565b5f819050919050565b611110816110fe565b811461111a575f80fd5b50565b5f8135905061112b81611107565b92915050565b5f80604083850312156111475761114661109c565b5b5f611154858286016110ea565b92505060206111658582860161111d565b9150509250929050565b5f8115159050919050565b6111838161116f565b82525050565b5f60208201905061119c5f83018461117a565b92915050565b6111ab816110fe565b82525050565b5f6020820190506111c45f8301846111a2565b92915050565b5f805f606084860312156111e1576111e061109c565b5b5f6111ee868287016110ea565b93505060206111ff868287016110ea565b92505060406112108682870161111d565b9150509250925092565b5f60ff82169050919050565b61122f8161121a565b82525050565b5f6020820190506112485f830184611226565b92915050565b5f602082840312156112635761126261109c565b5b5f611270848285016110ea565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f61129d82611279565b6112a78185611283565b93506112b7818560208601611003565b6112c08161102b565b840191505092915050565b5f602083015f8301518482035f8601526112e58282611293565b9150508091505092915050565b5f6020820190508181035f83015261130a81846112cb565b905092915050565b5f80604083850312156113285761132761109c565b5b5f611335858286016110ea565b9250506020611346858286016110ea565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061139457607f821691505b6020821081036113a7576113a6611350565b5b50919050565b6113b6816110c3565b82525050565b5f6080820190506113cf5f8301876113ad565b6113dc60208301866113ad565b81810360408301526113ee81856112cb565b90506113fd60608301846111a2565b95945050505050565b5f63ffffffff82169050919050565b61141e81611406565b82525050565b5f6020820190506114375f830184611415565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6114778261102b565b810181811067ffffffffffffffff8211171561149657611495611441565b5b80604052505050565b5f6114a8611093565b90506114b4828261146e565b919050565b5f80fd5b5f815190506114cb81611107565b92915050565b5f606082840312156114e6576114e561143d565b5b6114f0606061149f565b90505f6114ff848285016114bd565b5f830152506020611512848285016114bd565b6020830152506040611526848285016114bd565b60408301525092915050565b5f606082840312156115475761154661109c565b5b5f611554848285016114d1565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f67ffffffffffffffff82169050919050565b6115a68161158a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f602083015f8301518482035f8601526115ef8282611293565b9150508091505092915050565b611605816110fe565b82525050565b5f604083015f8301518482035f86015261162582826115d5565b915050602083015161163a60208601826115fc565b508091505092915050565b5f611650838361160b565b905092915050565b5f602082019050919050565b5f61166e826115ac565b61167881856115b6565b93508360208202850161168a856115c6565b805f5b858110156116c557848403895281516116a68582611645565b94506116b183611658565b925060208a0199505060018101905061168d565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b5f61171382611700565b9050919050565b61172381611709565b82525050565b5f611734838361171a565b60208301905092915050565b5f602082019050919050565b5f611756826116d7565b61176081856116e1565b935061176b836116f1565b805f5b8381101561179b5781516117828882611729565b975061178d83611740565b92505060018101905061176e565b5085935050505092915050565b5f606083015f8301516117bd5f86018261159d565b50602083015184820360208601526117d58282611664565b915050604083015184820360408601526117ef828261174c565b9150508091505092915050565b5f60608201905061180f5f8301866113ad565b61181c60208301856113ad565b818103604083015261182e81846117a8565b9050949350505050565b61184181611700565b811461184b575f80fd5b50565b5f8151905061185c81611838565b92915050565b5f602082840312156118775761187661109c565b5b5f6118848482850161184e565b91505092915050565b5f602083015f8301518482035f8601526118a78282611293565b9150508091505092915050565b5f6040820190508181035f8301526118cc81856112cb565b905081810360208301526118e0818461188d565b90509392505050565b5f602082840312156118fe576118fd61109c565b5b5f61190b848285016114bd565b91505092915050565b5f80fd5b5f80fd5b5f67ffffffffffffffff82111561193657611935611441565b5b61193f8261102b565b9050602081019050919050565b5f61195e6119598461191c565b61149f565b90508281526020810184848401111561197a57611979611918565b5b611985848285611003565b509392505050565b5f82601f8301126119a1576119a0611914565b5b81516119b184826020860161194c565b91505092915050565b5f602082840312156119cf576119ce61143d565b5b6119d9602061149f565b90505f82015167ffffffffffffffff8111156119f8576119f76114b9565b5b611a048482850161198d565b5f8301525092915050565b5f60208284031215611a2457611a2361109c565b5b5f82015167ffffffffffffffff811115611a4157611a406110a0565b5b611a4d848285016119ba565b91505092915050565b5f604082019050611a695f8301856113ad565b611a7660208301846113ad565b9392505050565b611a868161158a565b8114611a90575f80fd5b50565b5f81519050611aa181611a7d565b92915050565b5f67ffffffffffffffff821115611ac157611ac0611441565b5b602082029050602081019050919050565b5f80fd5b5f60408284031215611aeb57611aea61143d565b5b611af5604061149f565b90505f82015167ffffffffffffffff811115611b1457611b136114b9565b5b611b20848285016119ba565b5f830152506020611b33848285016114bd565b60208301525092915050565b5f611b51611b4c84611aa7565b61149f565b90508083825260208201905060208402830185811115611b7457611b73611ad2565b5b835b81811015611bbb57805167ffffffffffffffff811115611b9957611b98611914565b5b808601611ba68982611ad6565b85526020850194505050602081019050611b76565b5050509392505050565b5f82601f830112611bd957611bd8611914565b5b8151611be9848260208601611b3f565b91505092915050565b5f67ffffffffffffffff821115611c0c57611c0b611441565b5b602082029050602081019050919050565b611c2681611700565b8114611c30575f80fd5b50565b5f81519050611c4181611c1d565b92915050565b5f611c59611c5484611bf2565b61149f565b90508083825260208201905060208402830185811115611c7c57611c7b611ad2565b5b835b81811015611ca55780611c918882611c33565b845260208401935050602081019050611c7e565b5050509392505050565b5f82601f830112611cc357611cc2611914565b5b8151611cd3848260208601611c47565b91505092915050565b5f60608284031215611cf157611cf061143d565b5b611cfb606061149f565b90505f611d0a84828501611a93565b5f83015250602082015167ffffffffffffffff811115611d2d57611d2c6114b9565b5b611d3984828501611bc5565b602083015250604082015167ffffffffffffffff811115611d5d57611d5c6114b9565b5b611d6984828501611caf565b60408301525092915050565b5f60208284031215611d8a57611d8961109c565b5b5f82015167ffffffffffffffff811115611da757611da66110a0565b5b611db384828501611cdc565b91505092915050565b5f602082019050611dcf5f8301846113ad565b92915050565b611dde81611406565b8114611de8575f80fd5b50565b5f81519050611df981611dd5565b92915050565b5f60208284031215611e1457611e1361109c565b5b5f611e2184828501611deb565b91505092915050565b5f819050919050565b611e44611e3f82611709565b611e2a565b82525050565b5f611e558284611e33565b60208201915081905092915050565b5f8160601b9050919050565b5f611e7a82611e64565b9050919050565b5f611e8b82611e70565b9050919050565b611ea3611e9e826110c3565b611e81565b82525050565b5f611eb48284611e92565b60148201915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611efa826110fe565b9150611f05836110fe565b9250828201905080821115611f1d57611f1c611ec3565b5b9291505056fea264697066735822122029f2fe862dd8ee250b3a93a180644e5e7a6f6a0adfcf8aa09d2c5cca9f42781d64736f6c63430008180033 \ No newline at end of file +608060405234801561000f575f80fd5b506004361061009c575f3560e01c806370a082311161006457806370a082311461015a5780637a4a967d1461018a57806395d89b41146101a8578063a9059cbb146101c6578063dd62ed3e146101f65761009c565b806306fdde03146100a0578063095ea7b3146100be57806318160ddd146100ee57806323b872dd1461010c578063313ce5671461013c575b5f80fd5b6100a8610226565b6040516100b59190611059565b60405180910390f35b6100d860048036038101906100d39190611117565b6102b5565b6040516100e5919061116f565b60405180910390f35b6100f66103ac565b6040516101039190611197565b60405180910390f35b610126600480360381019061012191906111b0565b610449565b604051610133919061116f565b60405180910390f35b6101446106a5565b604051610151919061121b565b60405180910390f35b610174600480360381019061016f9190611234565b6106ba565b6040516101819190611197565b60405180910390f35b6101926107ea565b60405161019f91906112d8565b60405180910390f35b6101b061088d565b6040516101bd9190611059565b60405180910390f35b6101e060048036038101906101db9190611117565b61091d565b6040516101ed919061116f565b60405180910390f35b610210600480360381019061020b91906112f8565b610ac6565b60405161021d9190611197565b60405180910390f35b60605f805461023490611363565b80601f016020809104026020016040519081016040528092919081815260200182805461026090611363565b80156102ab5780601f10610282576101008083540402835291602001916102ab565b820191905f5260205f20905b81548152906001019060200180831161028e57829003601f168201915b5050505050905090565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634601069233856102f06107ea565b866040518563ffffffff1660e01b815260040161031094939291906113a2565b5f604051808303815f87803b158015610327575f80fd5b505af1158015610339573d5f803e3d5ffd5b505050508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161039a9190611197565b60405180910390a36001905092915050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e64ea416103e5610bf2565b6040518263ffffffff1660e01b8152600401610401919061140a565b606060405180830381865afa15801561041c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104409190611518565b60400151905090565b5f610452610f7a565b600167ffffffffffffffff81111561046d5761046c611427565b5b6040519080825280602002602001820160405280156104a657816020015b610493610fa4565b81526020019060019003908161048b5790505b5081602001819052506104b76107ea565b81602001515f815181106104ce576104cd611543565b5b60200260200101515f01819052508281602001515f815181106104f4576104f3611543565b5b6020026020010151602001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e2d3c4e8633846040518463ffffffff1660e01b8152600401610555939291906117e2565b5f604051808303815f87803b15801561056c575f80fd5b505af115801561057e573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146106345773107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b8152600401610606939291906117e2565b5f604051808303815f87803b15801561061d575f80fd5b505af115801561062f573d5f803e3d5ffd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516106919190611197565b60405180910390a360019150509392505050565b5f60025f9054906101000a900460ff16905090565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610719573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061073d9190611848565b90505f61074a8483610c84565b905073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ef43e40d6107846107ea565b836040518363ffffffff1660e01b81526004016107a292919061189a565b602060405180830381865afa1580156107bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e191906118cf565b92505050919050565b6107f2610fc3565b73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663360a917061082a610bf2565b6040518263ffffffff1660e01b8152600401610846919061140a565b5f60405180830381865afa158015610860573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061088891906119f5565b905090565b60606001805461089c90611363565b80601f01602080910402602001604051908101604052809291908181526020018280546108c890611363565b80156109135780601f106108ea57610100808354040283529160200191610913565b820191905f5260205f20905b8154815290600101906020018083116108f657829003601f168201915b5050505050905090565b5f610926610f7a565b600167ffffffffffffffff81111561094157610940611427565b5b60405190808252806020026020018201604052801561097a57816020015b610967610fa4565b81526020019060019003908161095f5790505b50816020018190525061098b6107ea565b81602001515f815181106109a2576109a1611543565b5b60200260200101515f01819052508281602001515f815181106109c8576109c7611543565b5b6020026020010151602001818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b3386846040518463ffffffff1660e01b8152600401610a29939291906117e2565b5f604051808303815f87803b158015610a40575f80fd5b505af1158015610a52573d5f803e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610ab39190611197565b60405180910390a3600191505092915050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630af4187d85856040518363ffffffff1660e01b8152600401610b17929190611a3c565b5f60405180830381865afa158015610b31573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610b599190611d5b565b90505f610b646107ea565b90505f5b826020015151811015610be557610ba683602001518281518110610b8f57610b8e611543565b5b60200260200101515f01515f0151835f0151610eb6565b15610bd85782602001518181518110610bc257610bc1611543565b5b6020026020010151602001519350505050610bec565b8080600101915050610b68565b505f925050505b92915050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166308ad1993306040518263ffffffff1660e01b8152600401610c409190611da2565b602060405180830381865afa158015610c5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7f9190611de5565b905090565b610c8c610fd6565b5f82604051602001610c9e9190611e30565b60405160208183030381529060405290505f84604051602001610cc19190611e8f565b6040516020818303038152906040529050610cda610fd6565b825182516001610cea9190611ed6565b610cf49190611ed6565b67ffffffffffffffff811115610d0d57610d0c611427565b5b6040519080825280601f01601f191660200182016040528015610d3f5781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610d6257610d61611543565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8351811015610e1657838181518110610dae57610dad611543565b5b602001015160f81c60f81b825f0151600183610dca9190611ed6565b81518110610ddb57610dda611543565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610d92565b505f5b8251811015610ea957828181518110610e3557610e34611543565b5b602001015160f81c60f81b825f01518551600184610e539190611ed6565b610e5d9190611ed6565b81518110610e6e57610e6d611543565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610e19565b5080935050505092915050565b5f8151835114610ec8575f9050610f74565b5f5b8351811015610f6e57828181518110610ee657610ee5611543565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848281518110610f2657610f25611543565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610f61575f915050610f74565b8080600101915050610eca565b50600190505b92915050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060400160405280610fb7610fc3565b81526020015f81525090565b6040518060200160405280606081525090565b6040518060200160405280606081525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61102b82610fe9565b6110358185610ff3565b9350611045818560208601611003565b61104e81611011565b840191505092915050565b5f6020820190508181035f8301526110718184611021565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110b38261108a565b9050919050565b6110c3816110a9565b81146110cd575f80fd5b50565b5f813590506110de816110ba565b92915050565b5f819050919050565b6110f6816110e4565b8114611100575f80fd5b50565b5f81359050611111816110ed565b92915050565b5f806040838503121561112d5761112c611082565b5b5f61113a858286016110d0565b925050602061114b85828601611103565b9150509250929050565b5f8115159050919050565b61116981611155565b82525050565b5f6020820190506111825f830184611160565b92915050565b611191816110e4565b82525050565b5f6020820190506111aa5f830184611188565b92915050565b5f805f606084860312156111c7576111c6611082565b5b5f6111d4868287016110d0565b93505060206111e5868287016110d0565b92505060406111f686828701611103565b9150509250925092565b5f60ff82169050919050565b61121581611200565b82525050565b5f60208201905061122e5f83018461120c565b92915050565b5f6020828403121561124957611248611082565b5b5f611256848285016110d0565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6112838261125f565b61128d8185611269565b935061129d818560208601611003565b6112a681611011565b840191505092915050565b5f602083015f8301518482035f8601526112cb8282611279565b9150508091505092915050565b5f6020820190508181035f8301526112f081846112b1565b905092915050565b5f806040838503121561130e5761130d611082565b5b5f61131b858286016110d0565b925050602061132c858286016110d0565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061137a57607f821691505b60208210810361138d5761138c611336565b5b50919050565b61139c816110a9565b82525050565b5f6080820190506113b55f830187611393565b6113c26020830186611393565b81810360408301526113d481856112b1565b90506113e36060830184611188565b95945050505050565b5f63ffffffff82169050919050565b611404816113ec565b82525050565b5f60208201905061141d5f8301846113fb565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61145d82611011565b810181811067ffffffffffffffff8211171561147c5761147b611427565b5b80604052505050565b5f61148e611079565b905061149a8282611454565b919050565b5f80fd5b5f815190506114b1816110ed565b92915050565b5f606082840312156114cc576114cb611423565b5b6114d66060611485565b90505f6114e5848285016114a3565b5f8301525060206114f8848285016114a3565b602083015250604061150c848285016114a3565b60408301525092915050565b5f6060828403121561152d5761152c611082565b5b5f61153a848285016114b7565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f67ffffffffffffffff82169050919050565b61158c81611570565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f602083015f8301518482035f8601526115d58282611279565b9150508091505092915050565b6115eb816110e4565b82525050565b5f604083015f8301518482035f86015261160b82826115bb565b915050602083015161162060208601826115e2565b508091505092915050565b5f61163683836115f1565b905092915050565b5f602082019050919050565b5f61165482611592565b61165e818561159c565b935083602082028501611670856115ac565b805f5b858110156116ab578484038952815161168c858261162b565b94506116978361163e565b925060208a01995050600181019050611673565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f819050919050565b5f6116f9826116e6565b9050919050565b611709816116ef565b82525050565b5f61171a8383611700565b60208301905092915050565b5f602082019050919050565b5f61173c826116bd565b61174681856116c7565b9350611751836116d7565b805f5b83811015611781578151611768888261170f565b975061177383611726565b925050600181019050611754565b5085935050505092915050565b5f606083015f8301516117a35f860182611583565b50602083015184820360208601526117bb828261164a565b915050604083015184820360408601526117d58282611732565b9150508091505092915050565b5f6060820190506117f55f830186611393565b6118026020830185611393565b8181036040830152611814818461178e565b9050949350505050565b611827816116e6565b8114611831575f80fd5b50565b5f815190506118428161181e565b92915050565b5f6020828403121561185d5761185c611082565b5b5f61186a84828501611834565b91505092915050565b5f602083015f8301518482035f86015261188d8282611279565b9150508091505092915050565b5f6040820190508181035f8301526118b281856112b1565b905081810360208301526118c68184611873565b90509392505050565b5f602082840312156118e4576118e3611082565b5b5f6118f1848285016114a3565b91505092915050565b5f80fd5b5f80fd5b5f67ffffffffffffffff82111561191c5761191b611427565b5b61192582611011565b9050602081019050919050565b5f61194461193f84611902565b611485565b9050828152602081018484840111156119605761195f6118fe565b5b61196b848285611003565b509392505050565b5f82601f830112611987576119866118fa565b5b8151611997848260208601611932565b91505092915050565b5f602082840312156119b5576119b4611423565b5b6119bf6020611485565b90505f82015167ffffffffffffffff8111156119de576119dd61149f565b5b6119ea84828501611973565b5f8301525092915050565b5f60208284031215611a0a57611a09611082565b5b5f82015167ffffffffffffffff811115611a2757611a26611086565b5b611a33848285016119a0565b91505092915050565b5f604082019050611a4f5f830185611393565b611a5c6020830184611393565b9392505050565b611a6c81611570565b8114611a76575f80fd5b50565b5f81519050611a8781611a63565b92915050565b5f67ffffffffffffffff821115611aa757611aa6611427565b5b602082029050602081019050919050565b5f80fd5b5f60408284031215611ad157611ad0611423565b5b611adb6040611485565b90505f82015167ffffffffffffffff811115611afa57611af961149f565b5b611b06848285016119a0565b5f830152506020611b19848285016114a3565b60208301525092915050565b5f611b37611b3284611a8d565b611485565b90508083825260208201905060208402830185811115611b5a57611b59611ab8565b5b835b81811015611ba157805167ffffffffffffffff811115611b7f57611b7e6118fa565b5b808601611b8c8982611abc565b85526020850194505050602081019050611b5c565b5050509392505050565b5f82601f830112611bbf57611bbe6118fa565b5b8151611bcf848260208601611b25565b91505092915050565b5f67ffffffffffffffff821115611bf257611bf1611427565b5b602082029050602081019050919050565b611c0c816116e6565b8114611c16575f80fd5b50565b5f81519050611c2781611c03565b92915050565b5f611c3f611c3a84611bd8565b611485565b90508083825260208201905060208402830185811115611c6257611c61611ab8565b5b835b81811015611c8b5780611c778882611c19565b845260208401935050602081019050611c64565b5050509392505050565b5f82601f830112611ca957611ca86118fa565b5b8151611cb9848260208601611c2d565b91505092915050565b5f60608284031215611cd757611cd6611423565b5b611ce16060611485565b90505f611cf084828501611a79565b5f83015250602082015167ffffffffffffffff811115611d1357611d1261149f565b5b611d1f84828501611bab565b602083015250604082015167ffffffffffffffff811115611d4357611d4261149f565b5b611d4f84828501611c95565b60408301525092915050565b5f60208284031215611d7057611d6f611082565b5b5f82015167ffffffffffffffff811115611d8d57611d8c611086565b5b611d9984828501611cc2565b91505092915050565b5f602082019050611db55f830184611393565b92915050565b611dc4816113ec565b8114611dce575f80fd5b50565b5f81519050611ddf81611dbb565b92915050565b5f60208284031215611dfa57611df9611082565b5b5f611e0784828501611dd1565b91505092915050565b5f819050919050565b611e2a611e25826116ef565b611e10565b82525050565b5f611e3b8284611e19565b60208201915081905092915050565b5f8160601b9050919050565b5f611e6082611e4a565b9050919050565b5f611e7182611e56565b9050919050565b611e89611e84826110a9565b611e67565b82525050565b5f611e9a8284611e78565b60148201915081905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611ee0826110e4565b9150611eeb836110e4565b9250828201905080821115611f0357611f02611ea9565b5b9291505056fea2646970667358221220a0a8f17c6f3185360d298a773dc6a1f1e2ae42a2d874246fd3a719f6f70e0ee564736f6c634300081a0033 \ No newline at end of file diff --git a/packages/vm/core/evm/iscmagic/ERC721NFTCollection.bin-runtime b/packages/vm/core/evm/iscmagic/ERC721NFTCollection.bin-runtime index f469f27cfe..4d416dc068 100644 --- a/packages/vm/core/evm/iscmagic/ERC721NFTCollection.bin-runtime +++ b/packages/vm/core/evm/iscmagic/ERC721NFTCollection.bin-runtime @@ -1 +1 @@ -6080604052600436106100dc575f3560e01c80636352211e1161007e578063a22cb46511610058578063a22cb465146102a2578063b88d4fde146102ca578063c87b56dd146102e6578063e985e9c514610322576100dc565b80636352211e1461020057806370a082311461023c57806395d89b4114610278576100dc565b8063095ea7b3116100ba578063095ea7b31461018257806323b872dd1461019e5780633d26bb67146101ba57806342842e0e146101e4576100dc565b806301ffc9a7146100e057806306fdde031461011c578063081812fc14610146575b5f80fd5b3480156100eb575f80fd5b50610106600480360381019061010191906114f9565b61035e565b604051610113919061153e565b60405180910390f35b348015610127575f80fd5b5061013061044c565b60405161013d91906115e1565b60405180910390f35b348015610151575f80fd5b5061016c60048036038101906101679190611634565b6104dc565b604051610179919061169e565b60405180910390f35b61019c600480360381019061019791906116e1565b610514565b005b6101b860048036038101906101b3919061171f565b61064d565b005b3480156101c5575f80fd5b506101ce61066f565b6040516101db9190611798565b60405180910390f35b6101fe60048036038101906101f9919061171f565b610678565b005b34801561020b575f80fd5b5061022660048036038101906102219190611634565b610697565b604051610233919061169e565b60405180910390f35b348015610247575f80fd5b50610262600480360381019061025d91906117b1565b61076d565b60405161026f91906117eb565b60405180910390f35b348015610283575f80fd5b5061028c61080c565b60405161029991906115e1565b60405180910390f35b3480156102ad575f80fd5b506102c860048036038101906102c3919061182e565b610822565b005b6102e460048036038101906102df9190611998565b610951565b005b3480156102f1575f80fd5b5061030c60048036038101906103079190611634565b610976565b60405161031991906115e1565b60405180910390f35b34801561032d575f80fd5b5061034860048036038101906103439190611a18565b610a37565b604051610355919061153e565b60405180910390f35b5f6301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103f657506380ac58cd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104455750635b5e139f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606003805461045b90611a83565b80601f016020809104026020016040519081016040528092919081815260200182805461048790611a83565b80156104d25780601f106104a9576101008083540402835291602001916104d2565b820191905f5260205f20905b8154815290600101906020018083116104b557829003601f168201915b5050505050905090565b5f805f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f61051e82610697565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610557575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061059757506105968133610a37565b5b61059f575f80fd5b825f808481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6106573382610ac5565b61065f575f80fd5b61066a838383610b59565b505050565b5f600254905090565b61069283838360405180602001604052805f815250610951565b505050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663298b9b726106d285610d3d565b6040518263ffffffff1660e01b81526004016106ee9190611798565b5f60405180830381865afa158015610708573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906107309190611cc6565b905061073f8160600151610d48565b610747575f80fd5b61075081610d7d565b610758575f80fd5b6107658160600151610d9a565b915050919050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f09190611d37565b90506108046107ff8483610e88565b6110ba565b915050919050565b606060405180602001604052805f815250905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610859575f80fd5b8060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610945919061153e565b60405180910390a35050565b61095c84848461064d565b61096884848484611152565b610970575f80fd5b50505050565b60605f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166343c4b6d86109b285610d3d565b6040518263ffffffff1660e01b81526004016109ce9190611798565b5f60405180830381865afa1580156109e8573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610a109190611f9a565b9050610a1e815f0151610d7d565b610a26575f80fd5b806020015160600151915050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f80610ad083610697565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610b3f57508373ffffffffffffffffffffffffffffffffffffffff16610b27846104dc565b73ffffffffffffffffffffffffffffffffffffffff16145b80610b505750610b4f8185610a37565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610b7982610697565b73ffffffffffffffffffffffffffffffffffffffff1614610b98575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bcf575f80fd5b610bd88161123f565b610be0611456565b600167ffffffffffffffff811115610bfb57610bfa611874565b5b604051908082528060200260200182016040528015610c295781602001602082028036833780820191505090505b508160400181905250610c3b82610d3d565b81604001515f81518110610c5257610c51611fe1565b5b60200260200101818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b8585846040518463ffffffff1660e01b8152600401610caf939291906122b8565b5f604051808303815f87803b158015610cc6575f80fd5b505af1158015610cd8573d5f803e3d5ffd5b50505050818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b5f815f1b9050919050565b5f600360ff16825f01515f81518110610d6457610d63611fe1565b5b602001015160f81c60f81b60f81c60ff16149050919050565b5f610d93600254836112f390919063ffffffff16565b9050919050565b5f80601467ffffffffffffffff811115610db757610db6611874565b5b6040519080825280601f01601f191660200182016040528015610de95781602001600182028036833780820191505090505b5090505f5b6014811015610e7257835f0151602182610e089190612321565b81518110610e1957610e18611fe1565b5b602001015160f81c60f81b828281518110610e3757610e36611fe1565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610dee565b5080610e7d906123ae565b60601c915050919050565b610e90611480565b5f82604051602001610ea29190612434565b60405160208183030381529060405290505f84604051602001610ec59190612493565b6040516020818303038152906040529050610ede611480565b825182516001610eee9190612321565b610ef89190612321565b67ffffffffffffffff811115610f1157610f10611874565b5b6040519080825280601f01601f191660200182016040528015610f435781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610f6657610f65611fe1565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b835181101561101a57838181518110610fb257610fb1611fe1565b5b602001015160f81c60f81b825f0151600183610fce9190612321565b81518110610fdf57610fde611fe1565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610f96565b505f5b82518110156110ad5782818151811061103957611038611fe1565b5b602001015160f81c60f81b825f015185516001846110579190612321565b6110619190612321565b8151811061107257611071611fe1565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350808060010191505061101d565b5080935050505092915050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ccd15a14836002546040518363ffffffff1660e01b815260040161110c9291906124d4565b602060405180830381865afa158015611127573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061114b9190612516565b9050919050565b5f61115c84611419565b6111695760019050611237565b5f8473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff1660e01b81526004016111a99493929190612589565b6020604051808303815f875af11580156111c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e991906125e7565b905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff165f808381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f0575f805f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b5f601060ff16611306846020015161142a565b60ff1614611316575f9050611413565b602183602001515f0151511461132f5761132e612612565b5b5f826040516020016113419190612656565b60405160208183030381529060405290505f5b602081101561140c5784602001515f01516001826113729190612321565b8151811061138357611382611fe1565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168282815181106113c3576113c2611fe1565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146113ff575f92505050611413565b8080600101915050611354565b5060019150505b92915050565b5f80823b90505f8111915050919050565b5f815f01515f8151811061144157611440611fe1565b5b602001015160f81c60f81b60f81c9050919050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060200160405280606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6114d8816114a4565b81146114e2575f80fd5b50565b5f813590506114f3816114cf565b92915050565b5f6020828403121561150e5761150d61149c565b5b5f61151b848285016114e5565b91505092915050565b5f8115159050919050565b61153881611524565b82525050565b5f6020820190506115515f83018461152f565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561158e578082015181840152602081019050611573565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6115b382611557565b6115bd8185611561565b93506115cd818560208601611571565b6115d681611599565b840191505092915050565b5f6020820190508181035f8301526115f981846115a9565b905092915050565b5f819050919050565b61161381611601565b811461161d575f80fd5b50565b5f8135905061162e8161160a565b92915050565b5f602082840312156116495761164861149c565b5b5f61165684828501611620565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6116888261165f565b9050919050565b6116988161167e565b82525050565b5f6020820190506116b15f83018461168f565b92915050565b6116c08161167e565b81146116ca575f80fd5b50565b5f813590506116db816116b7565b92915050565b5f80604083850312156116f7576116f661149c565b5b5f611704858286016116cd565b925050602061171585828601611620565b9150509250929050565b5f805f606084860312156117365761173561149c565b5b5f611743868287016116cd565b9350506020611754868287016116cd565b925050604061176586828701611620565b9150509250925092565b5f819050919050565b5f6117828261176f565b9050919050565b61179281611778565b82525050565b5f6020820190506117ab5f830184611789565b92915050565b5f602082840312156117c6576117c561149c565b5b5f6117d3848285016116cd565b91505092915050565b6117e581611601565b82525050565b5f6020820190506117fe5f8301846117dc565b92915050565b61180d81611524565b8114611817575f80fd5b50565b5f8135905061182881611804565b92915050565b5f80604083850312156118445761184361149c565b5b5f611851858286016116cd565b92505060206118628582860161181a565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6118aa82611599565b810181811067ffffffffffffffff821117156118c9576118c8611874565b5b80604052505050565b5f6118db611493565b90506118e782826118a1565b919050565b5f67ffffffffffffffff82111561190657611905611874565b5b61190f82611599565b9050602081019050919050565b828183375f83830152505050565b5f61193c611937846118ec565b6118d2565b90508281526020810184848401111561195857611957611870565b5b61196384828561191c565b509392505050565b5f82601f83011261197f5761197e61186c565b5b813561198f84826020860161192a565b91505092915050565b5f805f80608085870312156119b0576119af61149c565b5b5f6119bd878288016116cd565b94505060206119ce878288016116cd565b93505060406119df87828801611620565b925050606085013567ffffffffffffffff811115611a00576119ff6114a0565b5b611a0c8782880161196b565b91505092959194509250565b5f8060408385031215611a2e57611a2d61149c565b5b5f611a3b858286016116cd565b9250506020611a4c858286016116cd565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611a9a57607f821691505b602082108103611aad57611aac611a56565b5b50919050565b5f80fd5b5f80fd5b611ac48161176f565b8114611ace575f80fd5b50565b5f81519050611adf81611abb565b92915050565b5f611af7611af2846118ec565b6118d2565b905082815260208101848484011115611b1357611b12611870565b5b611b1e848285611571565b509392505050565b5f82601f830112611b3a57611b3961186c565b5b8151611b4a848260208601611ae5565b91505092915050565b5f60208284031215611b6857611b67611ab3565b5b611b7260206118d2565b90505f82015167ffffffffffffffff811115611b9157611b90611ab7565b5b611b9d84828501611b26565b5f8301525092915050565b5f60208284031215611bbd57611bbc611ab3565b5b611bc760206118d2565b90505f82015167ffffffffffffffff811115611be657611be5611ab7565b5b611bf284828501611b26565b5f8301525092915050565b5f60808284031215611c1257611c11611ab3565b5b611c1c60806118d2565b90505f611c2b84828501611ad1565b5f83015250602082015167ffffffffffffffff811115611c4e57611c4d611ab7565b5b611c5a84828501611b53565b602083015250604082015167ffffffffffffffff811115611c7e57611c7d611ab7565b5b611c8a84828501611b26565b604083015250606082015167ffffffffffffffff811115611cae57611cad611ab7565b5b611cba84828501611ba8565b60608301525092915050565b5f60208284031215611cdb57611cda61149c565b5b5f82015167ffffffffffffffff811115611cf857611cf76114a0565b5b611d0484828501611bfd565b91505092915050565b611d168161176f565b8114611d20575f80fd5b50565b5f81519050611d3181611d0d565b92915050565b5f60208284031215611d4c57611d4b61149c565b5b5f611d5984828501611d23565b91505092915050565b5f67ffffffffffffffff821115611d7c57611d7b611874565b5b611d8582611599565b9050602081019050919050565b5f611da4611d9f84611d62565b6118d2565b905082815260208101848484011115611dc057611dbf611870565b5b611dcb848285611571565b509392505050565b5f82601f830112611de757611de661186c565b5b8151611df7848260208601611d92565b91505092915050565b5f60a08284031215611e1557611e14611ab3565b5b611e1f60a06118d2565b90505f82015167ffffffffffffffff811115611e3e57611e3d611ab7565b5b611e4a84828501611dd3565b5f83015250602082015167ffffffffffffffff811115611e6d57611e6c611ab7565b5b611e7984828501611dd3565b602083015250604082015167ffffffffffffffff811115611e9d57611e9c611ab7565b5b611ea984828501611dd3565b604083015250606082015167ffffffffffffffff811115611ecd57611ecc611ab7565b5b611ed984828501611dd3565b606083015250608082015167ffffffffffffffff811115611efd57611efc611ab7565b5b611f0984828501611dd3565b60808301525092915050565b5f60408284031215611f2a57611f29611ab3565b5b611f3460406118d2565b90505f82015167ffffffffffffffff811115611f5357611f52611ab7565b5b611f5f84828501611bfd565b5f83015250602082015167ffffffffffffffff811115611f8257611f81611ab7565b5b611f8e84828501611e00565b60208301525092915050565b5f60208284031215611faf57611fae61149c565b5b5f82015167ffffffffffffffff811115611fcc57611fcb6114a0565b5b611fd884828501611f15565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f67ffffffffffffffff82169050919050565b61202a8161200e565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f61207d82612059565b6120878185612063565b9350612097818560208601611571565b6120a081611599565b840191505092915050565b5f602083015f8301518482035f8601526120c58282612073565b9150508091505092915050565b6120db81611601565b82525050565b5f604083015f8301518482035f8601526120fb82826120ab565b915050602083015161211060208601826120d2565b508091505092915050565b5f61212683836120e1565b905092915050565b5f602082019050919050565b5f61214482612030565b61214e818561203a565b9350836020820285016121608561204a565b805f5b8581101561219b578484038952815161217c858261211b565b94506121878361212e565b925060208a01995050600181019050612163565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6121df81611778565b82525050565b5f6121f083836121d6565b60208301905092915050565b5f602082019050919050565b5f612212826121ad565b61221c81856121b7565b9350612227836121c7565b805f5b8381101561225757815161223e88826121e5565b9750612249836121fc565b92505060018101905061222a565b5085935050505092915050565b5f606083015f8301516122795f860182612021565b5060208301518482036020860152612291828261213a565b915050604083015184820360408601526122ab8282612208565b9150508091505092915050565b5f6060820190506122cb5f83018661168f565b6122d8602083018561168f565b81810360408301526122ea8184612264565b9050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61232b82611601565b915061233683611601565b925082820190508082111561234e5761234d6122f4565b5b92915050565b5f819050602082019050919050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b5f6123998251612363565b80915050919050565b5f82821b905092915050565b5f6123b882612059565b826123c284612354565b90506123cd8161238e565b9250601482101561240d576124087fffffffffffffffffffffffffffffffffffffffff000000000000000000000000836014036008026123a2565b831692505b5050919050565b5f819050919050565b61242e61242982611778565b612414565b82525050565b5f61243f828461241d565b60208201915081905092915050565b5f8160601b9050919050565b5f6124648261244e565b9050919050565b5f6124758261245a565b9050919050565b61248d6124888261167e565b61246b565b82525050565b5f61249e828461247c565b60148201915081905092915050565b5f602083015f8301518482035f8601526124c78282612073565b9150508091505092915050565b5f6040820190508181035f8301526124ec81856124ad565b90506124fb6020830184611789565b9392505050565b5f815190506125108161160a565b92915050565b5f6020828403121561252b5761252a61149c565b5b5f61253884828501612502565b91505092915050565b5f82825260208201905092915050565b5f61255b82612059565b6125658185612541565b9350612575818560208601611571565b61257e81611599565b840191505092915050565b5f60808201905061259c5f83018761168f565b6125a9602083018661168f565b6125b660408301856117dc565b81810360608301526125c88184612551565b905095945050505050565b5f815190506125e1816114cf565b92915050565b5f602082840312156125fc576125fb61149c565b5b5f612609848285016125d3565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b61265061264b82611778565b612414565b82525050565b5f612661828461263f565b6020820191508190509291505056fea264697066735822122021ebfaa86eb56a0b78a1a56322dbac0d58f107fc5e4bf877cc135a8e823b9df464736f6c63430008180033 \ No newline at end of file +6080604052600436106100dc575f3560e01c80636352211e1161007e578063a22cb46511610058578063a22cb465146102a2578063b88d4fde146102ca578063c87b56dd146102e6578063e985e9c514610322576100dc565b80636352211e1461020057806370a082311461023c57806395d89b4114610278576100dc565b8063095ea7b3116100ba578063095ea7b31461018257806323b872dd1461019e5780633d26bb67146101ba57806342842e0e146101e4576100dc565b806301ffc9a7146100e057806306fdde031461011c578063081812fc14610146575b5f80fd5b3480156100eb575f80fd5b506101066004803603810190610101919061155a565b61035e565b604051610113919061159f565b60405180910390f35b348015610127575f80fd5b5061013061044c565b60405161013d9190611628565b60405180910390f35b348015610151575f80fd5b5061016c6004803603810190610167919061167b565b6104dc565b60405161017991906116e5565b60405180910390f35b61019c60048036038101906101979190611728565b61051d565b005b6101b860048036038101906101b39190611766565b610656565b005b3480156101c5575f80fd5b506101ce610678565b6040516101db91906117df565b60405180910390f35b6101fe60048036038101906101f99190611766565b610681565b005b34801561020b575f80fd5b506102266004803603810190610221919061167b565b6106a0565b60405161023391906116e5565b60405180910390f35b348015610247575f80fd5b50610262600480360381019061025d91906117f8565b6107ad565b60405161026f9190611832565b60405180910390f35b348015610283575f80fd5b5061028c61084c565b6040516102999190611628565b60405180910390f35b3480156102ad575f80fd5b506102c860048036038101906102c39190611875565b610889565b005b6102e460048036038101906102df91906119df565b6109b8565b005b3480156102f1575f80fd5b5061030c6004803603810190610307919061167b565b6109dd565b6040516103199190611628565b60405180910390f35b34801561032d575f80fd5b5061034860048036038101906103439190611a5f565b610a8b565b604051610355919061159f565b60405180910390f35b5f6301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103f657506380ac58cd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104455750635b5e139f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606003805461045b90611aca565b80601f016020809104026020016040519081016040528092919081815260200182805461048790611aca565b80156104d25780601f106104a9576101008083540402835291602001916104d2565b820191905f5260205f20905b8154815290600101906020018083116104b557829003601f168201915b5050505050905090565b5f6104e682610b19565b5f808381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f610527826106a0565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610560575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806105a0575061059f8133610a8b565b5b6105a8575f80fd5b825f808481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6106603382610b26565b610668575f80fd5b610673838383610bba565b505050565b5f600254905090565b61069b83838360405180602001604052805f8152506109b8565b505050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663298b9b726106da84610d9e565b6040518263ffffffff1660e01b81526004016106f691906117df565b5f60405180830381865afa92505050801561073357506040513d5f823e3d601f19601f820116820180604052508101906107309190611d0d565b60015b610772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076990611d9e565b60405180910390fd5b61077f8160600151610da9565b610787575f80fd5b61079081610dde565b610798575f80fd5b6107a58160600151610dfb565b915050919050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561080c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108309190611de6565b905061084461083f8483610ee9565b61111b565b915050919050565b60606040518060400160405280600c81526020017f436f6c6c656374696f6e4c310000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108c0575f80fd5b8060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516109ac919061159f565b60405180910390a35050565b6109c3848484610656565b6109cf848484846111b3565b6109d7575f80fd5b50505050565b60606109e882610b19565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c4276cc9610a2285610d9e565b6040518263ffffffff1660e01b8152600401610a3e91906117df565b5f60405180830381865afa158015610a58573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190610a809190611eaf565b905080915050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b610b22816106a0565b5050565b5f80610b31836106a0565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610ba057508373ffffffffffffffffffffffffffffffffffffffff16610b88846104dc565b73ffffffffffffffffffffffffffffffffffffffff16145b80610bb15750610bb08185610a8b565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610bda826106a0565b73ffffffffffffffffffffffffffffffffffffffff1614610bf9575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c30575f80fd5b610c39816112a0565b610c416114b7565b600167ffffffffffffffff811115610c5c57610c5b6118bb565b5b604051908082528060200260200182016040528015610c8a5781602001602082028036833780820191505090505b508160400181905250610c9c82610d9e565b81604001515f81518110610cb357610cb2611ef6565b5b60200260200101818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b8585846040518463ffffffff1660e01b8152600401610d10939291906121cd565b5f604051808303815f87803b158015610d27575f80fd5b505af1158015610d39573d5f803e3d5ffd5b50505050818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b5f815f1b9050919050565b5f600360ff16825f01515f81518110610dc557610dc4611ef6565b5b602001015160f81c60f81b60f81c60ff16149050919050565b5f610df46002548361135490919063ffffffff16565b9050919050565b5f80601467ffffffffffffffff811115610e1857610e176118bb565b5b6040519080825280601f01601f191660200182016040528015610e4a5781602001600182028036833780820191505090505b5090505f5b6014811015610ed357835f0151602182610e699190612236565b81518110610e7a57610e79611ef6565b5b602001015160f81c60f81b828281518110610e9857610e97611ef6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610e4f565b5080610ede906122c3565b60601c915050919050565b610ef16114e1565b5f82604051602001610f039190612349565b60405160208183030381529060405290505f84604051602001610f2691906123a8565b6040516020818303038152906040529050610f3f6114e1565b825182516001610f4f9190612236565b610f599190612236565b67ffffffffffffffff811115610f7257610f716118bb565b5b6040519080825280601f01601f191660200182016040528015610fa45781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610fc757610fc6611ef6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b835181101561107b5783818151811061101357611012611ef6565b5b602001015160f81c60f81b825f015160018361102f9190612236565b815181106110405761103f611ef6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610ff7565b505f5b825181101561110e5782818151811061109a57611099611ef6565b5b602001015160f81c60f81b825f015185516001846110b89190612236565b6110c29190612236565b815181106110d3576110d2611ef6565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350808060010191505061107e565b5080935050505092915050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ccd15a14836002546040518363ffffffff1660e01b815260040161116d9291906123e9565b602060405180830381865afa158015611188573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ac919061242b565b9050919050565b5f6111bd8461147a565b6111ca5760019050611298565b5f8473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff1660e01b815260040161120a949392919061249e565b6020604051808303815f875af1158015611226573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061124a91906124fc565b905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff165f808381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611351575f805f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b5f601060ff16611367846020015161148b565b60ff1614611377575f9050611474565b602183602001515f015151146113905761138f612527565b5b5f826040516020016113a2919061256b565b60405160208183030381529060405290505f5b602081101561146d5784602001515f01516001826113d39190612236565b815181106113e4576113e3611ef6565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191682828151811061142457611423611ef6565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611460575f92505050611474565b80806001019150506113b5565b5060019150505b92915050565b5f80823b90505f8111915050919050565b5f815f01515f815181106114a2576114a1611ef6565b5b602001015160f81c60f81b60f81c9050919050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060200160405280606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61153981611505565b8114611543575f80fd5b50565b5f8135905061155481611530565b92915050565b5f6020828403121561156f5761156e6114fd565b5b5f61157c84828501611546565b91505092915050565b5f8115159050919050565b61159981611585565b82525050565b5f6020820190506115b25f830184611590565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6115fa826115b8565b61160481856115c2565b93506116148185602086016115d2565b61161d816115e0565b840191505092915050565b5f6020820190508181035f83015261164081846115f0565b905092915050565b5f819050919050565b61165a81611648565b8114611664575f80fd5b50565b5f8135905061167581611651565b92915050565b5f602082840312156116905761168f6114fd565b5b5f61169d84828501611667565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6116cf826116a6565b9050919050565b6116df816116c5565b82525050565b5f6020820190506116f85f8301846116d6565b92915050565b611707816116c5565b8114611711575f80fd5b50565b5f81359050611722816116fe565b92915050565b5f806040838503121561173e5761173d6114fd565b5b5f61174b85828601611714565b925050602061175c85828601611667565b9150509250929050565b5f805f6060848603121561177d5761177c6114fd565b5b5f61178a86828701611714565b935050602061179b86828701611714565b92505060406117ac86828701611667565b9150509250925092565b5f819050919050565b5f6117c9826117b6565b9050919050565b6117d9816117bf565b82525050565b5f6020820190506117f25f8301846117d0565b92915050565b5f6020828403121561180d5761180c6114fd565b5b5f61181a84828501611714565b91505092915050565b61182c81611648565b82525050565b5f6020820190506118455f830184611823565b92915050565b61185481611585565b811461185e575f80fd5b50565b5f8135905061186f8161184b565b92915050565b5f806040838503121561188b5761188a6114fd565b5b5f61189885828601611714565b92505060206118a985828601611861565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6118f1826115e0565b810181811067ffffffffffffffff821117156119105761190f6118bb565b5b80604052505050565b5f6119226114f4565b905061192e82826118e8565b919050565b5f67ffffffffffffffff82111561194d5761194c6118bb565b5b611956826115e0565b9050602081019050919050565b828183375f83830152505050565b5f61198361197e84611933565b611919565b90508281526020810184848401111561199f5761199e6118b7565b5b6119aa848285611963565b509392505050565b5f82601f8301126119c6576119c56118b3565b5b81356119d6848260208601611971565b91505092915050565b5f805f80608085870312156119f7576119f66114fd565b5b5f611a0487828801611714565b9450506020611a1587828801611714565b9350506040611a2687828801611667565b925050606085013567ffffffffffffffff811115611a4757611a46611501565b5b611a53878288016119b2565b91505092959194509250565b5f8060408385031215611a7557611a746114fd565b5b5f611a8285828601611714565b9250506020611a9385828601611714565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611ae157607f821691505b602082108103611af457611af3611a9d565b5b50919050565b5f80fd5b5f80fd5b611b0b816117b6565b8114611b15575f80fd5b50565b5f81519050611b2681611b02565b92915050565b5f611b3e611b3984611933565b611919565b905082815260208101848484011115611b5a57611b596118b7565b5b611b658482856115d2565b509392505050565b5f82601f830112611b8157611b806118b3565b5b8151611b91848260208601611b2c565b91505092915050565b5f60208284031215611baf57611bae611afa565b5b611bb96020611919565b90505f82015167ffffffffffffffff811115611bd857611bd7611afe565b5b611be484828501611b6d565b5f8301525092915050565b5f60208284031215611c0457611c03611afa565b5b611c0e6020611919565b90505f82015167ffffffffffffffff811115611c2d57611c2c611afe565b5b611c3984828501611b6d565b5f8301525092915050565b5f60808284031215611c5957611c58611afa565b5b611c636080611919565b90505f611c7284828501611b18565b5f83015250602082015167ffffffffffffffff811115611c9557611c94611afe565b5b611ca184828501611b9a565b602083015250604082015167ffffffffffffffff811115611cc557611cc4611afe565b5b611cd184828501611b6d565b604083015250606082015167ffffffffffffffff811115611cf557611cf4611afe565b5b611d0184828501611bef565b60608301525092915050565b5f60208284031215611d2257611d216114fd565b5b5f82015167ffffffffffffffff811115611d3f57611d3e611501565b5b611d4b84828501611c44565b91505092915050565b7f4552433732314e6f6e6578697374656e74546f6b656e000000000000000000005f82015250565b5f611d886016836115c2565b9150611d9382611d54565b602082019050919050565b5f6020820190508181035f830152611db581611d7c565b9050919050565b611dc5816117b6565b8114611dcf575f80fd5b50565b5f81519050611de081611dbc565b92915050565b5f60208284031215611dfb57611dfa6114fd565b5b5f611e0884828501611dd2565b91505092915050565b5f67ffffffffffffffff821115611e2b57611e2a6118bb565b5b611e34826115e0565b9050602081019050919050565b5f611e53611e4e84611e11565b611919565b905082815260208101848484011115611e6f57611e6e6118b7565b5b611e7a8482856115d2565b509392505050565b5f82601f830112611e9657611e956118b3565b5b8151611ea6848260208601611e41565b91505092915050565b5f60208284031215611ec457611ec36114fd565b5b5f82015167ffffffffffffffff811115611ee157611ee0611501565b5b611eed84828501611e82565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f67ffffffffffffffff82169050919050565b611f3f81611f23565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f611f9282611f6e565b611f9c8185611f78565b9350611fac8185602086016115d2565b611fb5816115e0565b840191505092915050565b5f602083015f8301518482035f860152611fda8282611f88565b9150508091505092915050565b611ff081611648565b82525050565b5f604083015f8301518482035f8601526120108282611fc0565b91505060208301516120256020860182611fe7565b508091505092915050565b5f61203b8383611ff6565b905092915050565b5f602082019050919050565b5f61205982611f45565b6120638185611f4f565b93508360208202850161207585611f5f565b805f5b858110156120b057848403895281516120918582612030565b945061209c83612043565b925060208a01995050600181019050612078565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6120f4816117bf565b82525050565b5f61210583836120eb565b60208301905092915050565b5f602082019050919050565b5f612127826120c2565b61213181856120cc565b935061213c836120dc565b805f5b8381101561216c57815161215388826120fa565b975061215e83612111565b92505060018101905061213f565b5085935050505092915050565b5f606083015f83015161218e5f860182611f36565b50602083015184820360208601526121a6828261204f565b915050604083015184820360408601526121c0828261211d565b9150508091505092915050565b5f6060820190506121e05f8301866116d6565b6121ed60208301856116d6565b81810360408301526121ff8184612179565b9050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61224082611648565b915061224b83611648565b925082820190508082111561226357612262612209565b5b92915050565b5f819050602082019050919050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b5f6122ae8251612278565b80915050919050565b5f82821b905092915050565b5f6122cd82611f6e565b826122d784612269565b90506122e2816122a3565b925060148210156123225761231d7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000836014036008026122b7565b831692505b5050919050565b5f819050919050565b61234361233e826117bf565b612329565b82525050565b5f6123548284612332565b60208201915081905092915050565b5f8160601b9050919050565b5f61237982612363565b9050919050565b5f61238a8261236f565b9050919050565b6123a261239d826116c5565b612380565b82525050565b5f6123b38284612391565b60148201915081905092915050565b5f602083015f8301518482035f8601526123dc8282611f88565b9150508091505092915050565b5f6040820190508181035f83015261240181856123c2565b905061241060208301846117d0565b9392505050565b5f8151905061242581611651565b92915050565b5f602082840312156124405761243f6114fd565b5b5f61244d84828501612417565b91505092915050565b5f82825260208201905092915050565b5f61247082611f6e565b61247a8185612456565b935061248a8185602086016115d2565b612493816115e0565b840191505092915050565b5f6080820190506124b15f8301876116d6565b6124be60208301866116d6565b6124cb6040830185611823565b81810360608301526124dd8184612466565b905095945050505050565b5f815190506124f681611530565b92915050565b5f60208284031215612511576125106114fd565b5b5f61251e848285016124e8565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b612565612560826117bf565b612329565b82525050565b5f6125768284612554565b6020820191508190509291505056fea2646970667358221220e3d7ed077ed7365a9384f59f26974701ae0e43a894612c5f8de4eb690f03d14664736f6c634300081a0033 \ No newline at end of file diff --git a/packages/vm/core/evm/iscmagic/ERC721NFTs.bin-runtime b/packages/vm/core/evm/iscmagic/ERC721NFTs.bin-runtime index cbea078f21..d8ab7a4d61 100644 --- a/packages/vm/core/evm/iscmagic/ERC721NFTs.bin-runtime +++ b/packages/vm/core/evm/iscmagic/ERC721NFTs.bin-runtime @@ -1 +1 @@ -6080604052600436106100c1575f3560e01c80636352211e1161007e578063a22cb46511610058578063a22cb4651461025d578063b88d4fde14610285578063c87b56dd146102a1578063e985e9c5146102dd576100c1565b80636352211e146101bb57806370a08231146101f757806395d89b4114610233576100c1565b806301ffc9a7146100c557806306fdde0314610101578063081812fc1461012b578063095ea7b31461016757806323b872dd1461018357806342842e0e1461019f575b5f80fd5b3480156100d0575f80fd5b506100eb60048036038101906100e691906112c8565b610319565b6040516100f8919061130d565b60405180910390f35b34801561010c575f80fd5b50610115610407565b60405161012291906113b0565b60405180910390f35b348015610136575f80fd5b50610151600480360381019061014c9190611403565b61041d565b60405161015e919061146d565b60405180910390f35b610181600480360381019061017c91906114b0565b610455565b005b61019d600480360381019061019891906114ee565b61058e565b005b6101b960048036038101906101b491906114ee565b6105b0565b005b3480156101c6575f80fd5b506101e160048036038101906101dc9190611403565b6105cf565b6040516101ee919061146d565b60405180910390f35b348015610202575f80fd5b5061021d6004803603810190610218919061153e565b6106a5565b60405161022a9190611578565b60405180910390f35b34801561023e575f80fd5b50610247610744565b60405161025491906113b0565b60405180910390f35b348015610268575f80fd5b50610283600480360381019061027e91906115bb565b61075a565b005b61029f600480360381019061029a9190611725565b610889565b005b3480156102ac575f80fd5b506102c760048036038101906102c29190611403565b6108ae565b6040516102d491906113b0565b60405180910390f35b3480156102e8575f80fd5b5061030360048036038101906102fe91906117a5565b61096f565b604051610310919061130d565b60405180910390f35b5f6301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103b157506380ac58cd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104005750635b5e139f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b606060405180602001604052805f815250905090565b5f805f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f61045f826105cf565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610498575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806104d857506104d7813361096f565b5b6104e0575f80fd5b825f808481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b61059833826109fd565b6105a0575f80fd5b6105ab838383610a91565b505050565b6105ca83838360405180602001604052805f815250610889565b505050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663298b9b7261060a85610c75565b6040518263ffffffff1660e01b8152600401610626919061180c565b5f60405180830381865afa158015610640573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906106689190611a38565b90506106778160600151610c80565b61067f575f80fd5b61068881610cb5565b610690575f80fd5b61069d8160600151610cbf565b915050919050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610704573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107289190611aa9565b905061073c6107378483610dad565b610fdf565b915050919050565b606060405180602001604052805f815250905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610791575f80fd5b8060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161087d919061130d565b60405180910390a35050565b61089484848461058e565b6108a084848484611073565b6108a8575f80fd5b50505050565b60605f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166343c4b6d86108ea85610c75565b6040518263ffffffff1660e01b8152600401610906919061180c565b5f60405180830381865afa158015610920573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906109489190611d0c565b9050610956815f0151610cb5565b61095e575f80fd5b806020015160600151915050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f80610a08836105cf565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610a7757508373ffffffffffffffffffffffffffffffffffffffff16610a5f8461041d565b73ffffffffffffffffffffffffffffffffffffffff16145b80610a885750610a87818561096f565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610ab1826105cf565b73ffffffffffffffffffffffffffffffffffffffff1614610ad0575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b07575f80fd5b610b1081611160565b610b18611225565b600167ffffffffffffffff811115610b3357610b32611601565b5b604051908082528060200260200182016040528015610b615781602001602082028036833780820191505090505b508160400181905250610b7382610c75565b81604001515f81518110610b8a57610b89611d53565b5b60200260200101818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b8585846040518463ffffffff1660e01b8152600401610be79392919061202a565b5f604051808303815f87803b158015610bfe575f80fd5b505af1158015610c10573d5f803e3d5ffd5b50505050818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b5f815f1b9050919050565b5f600360ff16825f01515f81518110610c9c57610c9b611d53565b5b602001015160f81c60f81b60f81c60ff16149050919050565b5f60019050919050565b5f80601467ffffffffffffffff811115610cdc57610cdb611601565b5b6040519080825280601f01601f191660200182016040528015610d0e5781602001600182028036833780820191505090505b5090505f5b6014811015610d9757835f0151602182610d2d9190612093565b81518110610d3e57610d3d611d53565b5b602001015160f81c60f81b828281518110610d5c57610d5b611d53565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610d13565b5080610da290612120565b60601c915050919050565b610db561124f565b5f82604051602001610dc791906121a6565b60405160208183030381529060405290505f84604051602001610dea9190612205565b6040516020818303038152906040529050610e0361124f565b825182516001610e139190612093565b610e1d9190612093565b67ffffffffffffffff811115610e3657610e35611601565b5b6040519080825280601f01601f191660200182016040528015610e685781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610e8b57610e8a611d53565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8351811015610f3f57838181518110610ed757610ed6611d53565b5b602001015160f81c60f81b825f0151600183610ef39190612093565b81518110610f0457610f03611d53565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610ebb565b505f5b8251811015610fd257828181518110610f5e57610f5d611d53565b5b602001015160f81c60f81b825f01518551600184610f7c9190612093565b610f869190612093565b81518110610f9757610f96611d53565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610f42565b5080935050505092915050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d90ec7b836040518263ffffffff1660e01b815260040161102d9190612246565b602060405180830381865afa158015611048573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061106c919061227a565b9050919050565b5f61107d84611214565b61108a5760019050611158565b5f8473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff1660e01b81526004016110ca94939291906122ed565b6020604051808303815f875af11580156110e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110a919061234b565b905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff165f808381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611211575f805f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b5f80823b90505f8111915050919050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060200160405280606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6112a781611273565b81146112b1575f80fd5b50565b5f813590506112c28161129e565b92915050565b5f602082840312156112dd576112dc61126b565b5b5f6112ea848285016112b4565b91505092915050565b5f8115159050919050565b611307816112f3565b82525050565b5f6020820190506113205f8301846112fe565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561135d578082015181840152602081019050611342565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61138282611326565b61138c8185611330565b935061139c818560208601611340565b6113a581611368565b840191505092915050565b5f6020820190508181035f8301526113c88184611378565b905092915050565b5f819050919050565b6113e2816113d0565b81146113ec575f80fd5b50565b5f813590506113fd816113d9565b92915050565b5f602082840312156114185761141761126b565b5b5f611425848285016113ef565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6114578261142e565b9050919050565b6114678161144d565b82525050565b5f6020820190506114805f83018461145e565b92915050565b61148f8161144d565b8114611499575f80fd5b50565b5f813590506114aa81611486565b92915050565b5f80604083850312156114c6576114c561126b565b5b5f6114d38582860161149c565b92505060206114e4858286016113ef565b9150509250929050565b5f805f606084860312156115055761150461126b565b5b5f6115128682870161149c565b93505060206115238682870161149c565b9250506040611534868287016113ef565b9150509250925092565b5f602082840312156115535761155261126b565b5b5f6115608482850161149c565b91505092915050565b611572816113d0565b82525050565b5f60208201905061158b5f830184611569565b92915050565b61159a816112f3565b81146115a4575f80fd5b50565b5f813590506115b581611591565b92915050565b5f80604083850312156115d1576115d061126b565b5b5f6115de8582860161149c565b92505060206115ef858286016115a7565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61163782611368565b810181811067ffffffffffffffff8211171561165657611655611601565b5b80604052505050565b5f611668611262565b9050611674828261162e565b919050565b5f67ffffffffffffffff82111561169357611692611601565b5b61169c82611368565b9050602081019050919050565b828183375f83830152505050565b5f6116c96116c484611679565b61165f565b9050828152602081018484840111156116e5576116e46115fd565b5b6116f08482856116a9565b509392505050565b5f82601f83011261170c5761170b6115f9565b5b813561171c8482602086016116b7565b91505092915050565b5f805f806080858703121561173d5761173c61126b565b5b5f61174a8782880161149c565b945050602061175b8782880161149c565b935050604061176c878288016113ef565b925050606085013567ffffffffffffffff81111561178d5761178c61126f565b5b611799878288016116f8565b91505092959194509250565b5f80604083850312156117bb576117ba61126b565b5b5f6117c88582860161149c565b92505060206117d98582860161149c565b9150509250929050565b5f819050919050565b5f6117f6826117e3565b9050919050565b611806816117ec565b82525050565b5f60208201905061181f5f8301846117fd565b92915050565b5f80fd5b5f80fd5b611836816117e3565b8114611840575f80fd5b50565b5f815190506118518161182d565b92915050565b5f61186961186484611679565b61165f565b905082815260208101848484011115611885576118846115fd565b5b611890848285611340565b509392505050565b5f82601f8301126118ac576118ab6115f9565b5b81516118bc848260208601611857565b91505092915050565b5f602082840312156118da576118d9611825565b5b6118e4602061165f565b90505f82015167ffffffffffffffff81111561190357611902611829565b5b61190f84828501611898565b5f8301525092915050565b5f6020828403121561192f5761192e611825565b5b611939602061165f565b90505f82015167ffffffffffffffff81111561195857611957611829565b5b61196484828501611898565b5f8301525092915050565b5f6080828403121561198457611983611825565b5b61198e608061165f565b90505f61199d84828501611843565b5f83015250602082015167ffffffffffffffff8111156119c0576119bf611829565b5b6119cc848285016118c5565b602083015250604082015167ffffffffffffffff8111156119f0576119ef611829565b5b6119fc84828501611898565b604083015250606082015167ffffffffffffffff811115611a2057611a1f611829565b5b611a2c8482850161191a565b60608301525092915050565b5f60208284031215611a4d57611a4c61126b565b5b5f82015167ffffffffffffffff811115611a6a57611a6961126f565b5b611a768482850161196f565b91505092915050565b611a88816117e3565b8114611a92575f80fd5b50565b5f81519050611aa381611a7f565b92915050565b5f60208284031215611abe57611abd61126b565b5b5f611acb84828501611a95565b91505092915050565b5f67ffffffffffffffff821115611aee57611aed611601565b5b611af782611368565b9050602081019050919050565b5f611b16611b1184611ad4565b61165f565b905082815260208101848484011115611b3257611b316115fd565b5b611b3d848285611340565b509392505050565b5f82601f830112611b5957611b586115f9565b5b8151611b69848260208601611b04565b91505092915050565b5f60a08284031215611b8757611b86611825565b5b611b9160a061165f565b90505f82015167ffffffffffffffff811115611bb057611baf611829565b5b611bbc84828501611b45565b5f83015250602082015167ffffffffffffffff811115611bdf57611bde611829565b5b611beb84828501611b45565b602083015250604082015167ffffffffffffffff811115611c0f57611c0e611829565b5b611c1b84828501611b45565b604083015250606082015167ffffffffffffffff811115611c3f57611c3e611829565b5b611c4b84828501611b45565b606083015250608082015167ffffffffffffffff811115611c6f57611c6e611829565b5b611c7b84828501611b45565b60808301525092915050565b5f60408284031215611c9c57611c9b611825565b5b611ca6604061165f565b90505f82015167ffffffffffffffff811115611cc557611cc4611829565b5b611cd18482850161196f565b5f83015250602082015167ffffffffffffffff811115611cf457611cf3611829565b5b611d0084828501611b72565b60208301525092915050565b5f60208284031215611d2157611d2061126b565b5b5f82015167ffffffffffffffff811115611d3e57611d3d61126f565b5b611d4a84828501611c87565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f67ffffffffffffffff82169050919050565b611d9c81611d80565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f611def82611dcb565b611df98185611dd5565b9350611e09818560208601611340565b611e1281611368565b840191505092915050565b5f602083015f8301518482035f860152611e378282611de5565b9150508091505092915050565b611e4d816113d0565b82525050565b5f604083015f8301518482035f860152611e6d8282611e1d565b9150506020830151611e826020860182611e44565b508091505092915050565b5f611e988383611e53565b905092915050565b5f602082019050919050565b5f611eb682611da2565b611ec08185611dac565b935083602082028501611ed285611dbc565b805f5b85811015611f0d5784840389528151611eee8582611e8d565b9450611ef983611ea0565b925060208a01995050600181019050611ed5565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611f51816117ec565b82525050565b5f611f628383611f48565b60208301905092915050565b5f602082019050919050565b5f611f8482611f1f565b611f8e8185611f29565b9350611f9983611f39565b805f5b83811015611fc9578151611fb08882611f57565b9750611fbb83611f6e565b925050600181019050611f9c565b5085935050505092915050565b5f606083015f830151611feb5f860182611d93565b50602083015184820360208601526120038282611eac565b9150506040830151848203604086015261201d8282611f7a565b9150508091505092915050565b5f60608201905061203d5f83018661145e565b61204a602083018561145e565b818103604083015261205c8184611fd6565b9050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61209d826113d0565b91506120a8836113d0565b92508282019050808211156120c0576120bf612066565b5b92915050565b5f819050602082019050919050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b5f61210b82516120d5565b80915050919050565b5f82821b905092915050565b5f61212a82611dcb565b82612134846120c6565b905061213f81612100565b9250601482101561217f5761217a7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000083601403600802612114565b831692505b5050919050565b5f819050919050565b6121a061219b826117ec565b612186565b82525050565b5f6121b1828461218f565b60208201915081905092915050565b5f8160601b9050919050565b5f6121d6826121c0565b9050919050565b5f6121e7826121cc565b9050919050565b6121ff6121fa8261144d565b6121dd565b82525050565b5f61221082846121ee565b60148201915081905092915050565b5f602083015f8301518482035f8601526122398282611de5565b9150508091505092915050565b5f6020820190508181035f83015261225e818461221f565b905092915050565b5f81519050612274816113d9565b92915050565b5f6020828403121561228f5761228e61126b565b5b5f61229c84828501612266565b91505092915050565b5f82825260208201905092915050565b5f6122bf82611dcb565b6122c981856122a5565b93506122d9818560208601611340565b6122e281611368565b840191505092915050565b5f6080820190506123005f83018761145e565b61230d602083018661145e565b61231a6040830185611569565b818103606083015261232c81846122b5565b905095945050505050565b5f815190506123458161129e565b92915050565b5f602082840312156123605761235f61126b565b5b5f61236d84828501612337565b9150509291505056fea2646970667358221220d3101be6fd34404a6905694faf72f59b448eb8e6f51342cb020be954684976ab64736f6c63430008180033 \ No newline at end of file +6080604052600436106100c1575f3560e01c80636352211e1161007e578063a22cb46511610058578063a22cb4651461025d578063b88d4fde14610285578063c87b56dd146102a1578063e985e9c5146102dd576100c1565b80636352211e146101bb57806370a08231146101f757806395d89b4114610233576100c1565b806301ffc9a7146100c557806306fdde0314610101578063081812fc1461012b578063095ea7b31461016757806323b872dd1461018357806342842e0e1461019f575b5f80fd5b3480156100d0575f80fd5b506100eb60048036038101906100e69190611350565b610319565b6040516100f89190611395565b60405180910390f35b34801561010c575f80fd5b50610115610407565b604051610122919061141e565b60405180910390f35b348015610136575f80fd5b50610151600480360381019061014c9190611471565b610444565b60405161015e91906114db565b60405180910390f35b610181600480360381019061017c919061151e565b610485565b005b61019d6004803603810190610198919061155c565b6105be565b005b6101b960048036038101906101b4919061155c565b6105e0565b005b3480156101c6575f80fd5b506101e160048036038101906101dc9190611471565b6105ff565b6040516101ee91906114db565b60405180910390f35b348015610202575f80fd5b5061021d600480360381019061021891906115ac565b61070c565b60405161022a91906115e6565b60405180910390f35b34801561023e575f80fd5b506102476107ab565b604051610254919061141e565b60405180910390f35b348015610268575f80fd5b50610283600480360381019061027e9190611629565b6107e8565b005b61029f600480360381019061029a9190611793565b610917565b005b3480156102ac575f80fd5b506102c760048036038101906102c29190611471565b61093c565b6040516102d4919061141e565b60405180910390f35b3480156102e8575f80fd5b5061030360048036038101906102fe9190611813565b6109ea565b6040516103109190611395565b60405180910390f35b5f6301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103b157506380ac58cd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104005750635b5e139f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606040518060400160405280600781526020017f4c31204e46547300000000000000000000000000000000000000000000000000815250905090565b5f61044e82610a78565b5f808381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f61048f826105ff565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036104c8575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610508575061050781336109ea565b5b610510575f80fd5b825f808481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6105c83382610a85565b6105d0575f80fd5b6105db838383610b19565b505050565b6105fa83838360405180602001604052805f815250610917565b505050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663298b9b7261063984610cfd565b6040518263ffffffff1660e01b8152600401610655919061187a565b5f60405180830381865afa92505050801561069257506040513d5f823e3d601f19601f8201168201806040525081019061068f9190611aa6565b60015b6106d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c890611b37565b60405180910390fd5b6106de8160600151610d08565b6106e6575f80fd5b6106ef81610d3d565b6106f7575f80fd5b6107048160600151610d47565b915050919050565b5f8073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663564b81ef6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561076b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061078f9190611b7f565b90506107a361079e8483610e35565b611067565b915050919050565b60606040518060400160405280600c81526020017f436f6c6c656374696f6e4c310000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361081f575f80fd5b8060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161090b9190611395565b60405180910390a35050565b6109228484846105be565b61092e848484846110fb565b610936575f80fd5b50505050565b606061094782610a78565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c4276cc961098185610cfd565b6040518263ffffffff1660e01b815260040161099d919061187a565b5f60405180830381865afa1580156109b7573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906109df9190611c48565b905080915050919050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b610a81816105ff565b5050565b5f80610a90836105ff565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610aff57508373ffffffffffffffffffffffffffffffffffffffff16610ae784610444565b73ffffffffffffffffffffffffffffffffffffffff16145b80610b105750610b0f81856109ea565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610b39826105ff565b73ffffffffffffffffffffffffffffffffffffffff1614610b58575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b8f575f80fd5b610b98816111e8565b610ba06112ad565b600167ffffffffffffffff811115610bbb57610bba61166f565b5b604051908082528060200260200182016040528015610be95781602001602082028036833780820191505090505b508160400181905250610bfb82610cfd565b81604001515f81518110610c1257610c11611c8f565b5b60200260200101818152505073107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4b74d1b8585846040518463ffffffff1660e01b8152600401610c6f93929190611f66565b5f604051808303815f87803b158015610c86575f80fd5b505af1158015610c98573d5f803e3d5ffd5b50505050818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b5f815f1b9050919050565b5f600360ff16825f01515f81518110610d2457610d23611c8f565b5b602001015160f81c60f81b60f81c60ff16149050919050565b5f60019050919050565b5f80601467ffffffffffffffff811115610d6457610d6361166f565b5b6040519080825280601f01601f191660200182016040528015610d965781602001600182028036833780820191505090505b5090505f5b6014811015610e1f57835f0151602182610db59190611fcf565b81518110610dc657610dc5611c8f565b5b602001015160f81c60f81b828281518110610de457610de3611c8f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610d9b565b5080610e2a9061205c565b60601c915050919050565b610e3d6112d7565b5f82604051602001610e4f91906120e2565b60405160208183030381529060405290505f84604051602001610e729190612141565b6040516020818303038152906040529050610e8b6112d7565b825182516001610e9b9190611fcf565b610ea59190611fcf565b67ffffffffffffffff811115610ebe57610ebd61166f565b5b6040519080825280601f01601f191660200182016040528015610ef05781602001600182028036833780820191505090505b50815f0181905250600360f81b815f01515f81518110610f1357610f12611c8f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8351811015610fc757838181518110610f5f57610f5e611c8f565b5b602001015160f81c60f81b825f0151600183610f7b9190611fcf565b81518110610f8c57610f8b611c8f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610f43565b505f5b825181101561105a57828181518110610fe657610fe5611c8f565b5b602001015160f81c60f81b825f015185516001846110049190611fcf565b61100e9190611fcf565b8151811061101f5761101e611c8f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050610fca565b5080935050505092915050565b5f73107400000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d90ec7b836040518263ffffffff1660e01b81526004016110b59190612182565b602060405180830381865afa1580156110d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f491906121b6565b9050919050565b5f6111058461129c565b61111257600190506111e0565b5f8473ffffffffffffffffffffffffffffffffffffffff1663150b7a02338887876040518563ffffffff1660e01b81526004016111529493929190612229565b6020604051808303815f875af115801561116e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111929190612287565b905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff165f808381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611299575f805f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b5f80823b90505f8111915050919050565b60405180606001604052805f67ffffffffffffffff16815260200160608152602001606081525090565b6040518060200160405280606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61132f816112fb565b8114611339575f80fd5b50565b5f8135905061134a81611326565b92915050565b5f60208284031215611365576113646112f3565b5b5f6113728482850161133c565b91505092915050565b5f8115159050919050565b61138f8161137b565b82525050565b5f6020820190506113a85f830184611386565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6113f0826113ae565b6113fa81856113b8565b935061140a8185602086016113c8565b611413816113d6565b840191505092915050565b5f6020820190508181035f83015261143681846113e6565b905092915050565b5f819050919050565b6114508161143e565b811461145a575f80fd5b50565b5f8135905061146b81611447565b92915050565b5f60208284031215611486576114856112f3565b5b5f6114938482850161145d565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6114c58261149c565b9050919050565b6114d5816114bb565b82525050565b5f6020820190506114ee5f8301846114cc565b92915050565b6114fd816114bb565b8114611507575f80fd5b50565b5f81359050611518816114f4565b92915050565b5f8060408385031215611534576115336112f3565b5b5f6115418582860161150a565b92505060206115528582860161145d565b9150509250929050565b5f805f60608486031215611573576115726112f3565b5b5f6115808682870161150a565b93505060206115918682870161150a565b92505060406115a28682870161145d565b9150509250925092565b5f602082840312156115c1576115c06112f3565b5b5f6115ce8482850161150a565b91505092915050565b6115e08161143e565b82525050565b5f6020820190506115f95f8301846115d7565b92915050565b6116088161137b565b8114611612575f80fd5b50565b5f81359050611623816115ff565b92915050565b5f806040838503121561163f5761163e6112f3565b5b5f61164c8582860161150a565b925050602061165d85828601611615565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6116a5826113d6565b810181811067ffffffffffffffff821117156116c4576116c361166f565b5b80604052505050565b5f6116d66112ea565b90506116e2828261169c565b919050565b5f67ffffffffffffffff8211156117015761170061166f565b5b61170a826113d6565b9050602081019050919050565b828183375f83830152505050565b5f611737611732846116e7565b6116cd565b9050828152602081018484840111156117535761175261166b565b5b61175e848285611717565b509392505050565b5f82601f83011261177a57611779611667565b5b813561178a848260208601611725565b91505092915050565b5f805f80608085870312156117ab576117aa6112f3565b5b5f6117b88782880161150a565b94505060206117c98782880161150a565b93505060406117da8782880161145d565b925050606085013567ffffffffffffffff8111156117fb576117fa6112f7565b5b61180787828801611766565b91505092959194509250565b5f8060408385031215611829576118286112f3565b5b5f6118368582860161150a565b92505060206118478582860161150a565b9150509250929050565b5f819050919050565b5f61186482611851565b9050919050565b6118748161185a565b82525050565b5f60208201905061188d5f83018461186b565b92915050565b5f80fd5b5f80fd5b6118a481611851565b81146118ae575f80fd5b50565b5f815190506118bf8161189b565b92915050565b5f6118d76118d2846116e7565b6116cd565b9050828152602081018484840111156118f3576118f261166b565b5b6118fe8482856113c8565b509392505050565b5f82601f83011261191a57611919611667565b5b815161192a8482602086016118c5565b91505092915050565b5f6020828403121561194857611947611893565b5b61195260206116cd565b90505f82015167ffffffffffffffff81111561197157611970611897565b5b61197d84828501611906565b5f8301525092915050565b5f6020828403121561199d5761199c611893565b5b6119a760206116cd565b90505f82015167ffffffffffffffff8111156119c6576119c5611897565b5b6119d284828501611906565b5f8301525092915050565b5f608082840312156119f2576119f1611893565b5b6119fc60806116cd565b90505f611a0b848285016118b1565b5f83015250602082015167ffffffffffffffff811115611a2e57611a2d611897565b5b611a3a84828501611933565b602083015250604082015167ffffffffffffffff811115611a5e57611a5d611897565b5b611a6a84828501611906565b604083015250606082015167ffffffffffffffff811115611a8e57611a8d611897565b5b611a9a84828501611988565b60608301525092915050565b5f60208284031215611abb57611aba6112f3565b5b5f82015167ffffffffffffffff811115611ad857611ad76112f7565b5b611ae4848285016119dd565b91505092915050565b7f4552433732314e6f6e6578697374656e74546f6b656e000000000000000000005f82015250565b5f611b216016836113b8565b9150611b2c82611aed565b602082019050919050565b5f6020820190508181035f830152611b4e81611b15565b9050919050565b611b5e81611851565b8114611b68575f80fd5b50565b5f81519050611b7981611b55565b92915050565b5f60208284031215611b9457611b936112f3565b5b5f611ba184828501611b6b565b91505092915050565b5f67ffffffffffffffff821115611bc457611bc361166f565b5b611bcd826113d6565b9050602081019050919050565b5f611bec611be784611baa565b6116cd565b905082815260208101848484011115611c0857611c0761166b565b5b611c138482856113c8565b509392505050565b5f82601f830112611c2f57611c2e611667565b5b8151611c3f848260208601611bda565b91505092915050565b5f60208284031215611c5d57611c5c6112f3565b5b5f82015167ffffffffffffffff811115611c7a57611c796112f7565b5b611c8684828501611c1b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f67ffffffffffffffff82169050919050565b611cd881611cbc565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f611d2b82611d07565b611d358185611d11565b9350611d458185602086016113c8565b611d4e816113d6565b840191505092915050565b5f602083015f8301518482035f860152611d738282611d21565b9150508091505092915050565b611d898161143e565b82525050565b5f604083015f8301518482035f860152611da98282611d59565b9150506020830151611dbe6020860182611d80565b508091505092915050565b5f611dd48383611d8f565b905092915050565b5f602082019050919050565b5f611df282611cde565b611dfc8185611ce8565b935083602082028501611e0e85611cf8565b805f5b85811015611e495784840389528151611e2a8582611dc9565b9450611e3583611ddc565b925060208a01995050600181019050611e11565b50829750879550505050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611e8d8161185a565b82525050565b5f611e9e8383611e84565b60208301905092915050565b5f602082019050919050565b5f611ec082611e5b565b611eca8185611e65565b9350611ed583611e75565b805f5b83811015611f05578151611eec8882611e93565b9750611ef783611eaa565b925050600181019050611ed8565b5085935050505092915050565b5f606083015f830151611f275f860182611ccf565b5060208301518482036020860152611f3f8282611de8565b91505060408301518482036040860152611f598282611eb6565b9150508091505092915050565b5f606082019050611f795f8301866114cc565b611f8660208301856114cc565b8181036040830152611f988184611f12565b9050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611fd98261143e565b9150611fe48361143e565b9250828201905080821115611ffc57611ffb611fa2565b5b92915050565b5f819050602082019050919050565b5f7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b5f6120478251612011565b80915050919050565b5f82821b905092915050565b5f61206682611d07565b8261207084612002565b905061207b8161203c565b925060148210156120bb576120b67fffffffffffffffffffffffffffffffffffffffff00000000000000000000000083601403600802612050565b831692505b5050919050565b5f819050919050565b6120dc6120d78261185a565b6120c2565b82525050565b5f6120ed82846120cb565b60208201915081905092915050565b5f8160601b9050919050565b5f612112826120fc565b9050919050565b5f61212382612108565b9050919050565b61213b612136826114bb565b612119565b82525050565b5f61214c828461212a565b60148201915081905092915050565b5f602083015f8301518482035f8601526121758282611d21565b9150508091505092915050565b5f6020820190508181035f83015261219a818461215b565b905092915050565b5f815190506121b081611447565b92915050565b5f602082840312156121cb576121ca6112f3565b5b5f6121d8848285016121a2565b91505092915050565b5f82825260208201905092915050565b5f6121fb82611d07565b61220581856121e1565b93506122158185602086016113c8565b61221e816113d6565b840191505092915050565b5f60808201905061223c5f8301876114cc565b61224960208301866114cc565b61225660408301856115d7565b818103606083015261226881846121f1565b905095945050505050565b5f8151905061228181611326565b92915050565b5f6020828403121561229c5761229b6112f3565b5b5f6122a984828501612273565b9150509291505056fea26469706673582212204faaf378d4725cf146b9674542d559f87fbd2cf86730824e9bde2a7ab29d927564736f6c634300081a0033 \ No newline at end of file diff --git a/packages/vm/core/evm/iscmagic/ERC721NFTs.sol b/packages/vm/core/evm/iscmagic/ERC721NFTs.sol index 9019202e2d..e7167abbc1 100644 --- a/packages/vm/core/evm/iscmagic/ERC721NFTs.sol +++ b/packages/vm/core/evm/iscmagic/ERC721NFTs.sol @@ -311,9 +311,8 @@ contract ERC721NFTs { // IERC721Metadata function tokenURI(uint256 tokenId) external view returns (string memory) { _requireNftExists(tokenId); - IRC27NFT memory nft = __iscSandbox.getIRC27NFTData(tokenId.asNFTID()); - require(_isManagedByThisContract(nft.nft)); - return nft.metadata.uri; + string memory uri = __iscSandbox.getIRC27TokenURI(tokenId.asNFTID()); + return uri; } } diff --git a/packages/vm/core/evm/iscmagic/ISCSandbox.abi b/packages/vm/core/evm/iscmagic/ISCSandbox.abi index 60471f956b..a899c259f1 100644 --- a/packages/vm/core/evm/iscmagic/ISCSandbox.abi +++ b/packages/vm/core/evm/iscmagic/ISCSandbox.abi @@ -1 +1 @@ -[{"inputs":[{"internalType":"address","name":"target","type":"address"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"allowance","type":"tuple"}],"name":"allow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"ISCHname","name":"contractHname","type":"uint32"},{"internalType":"ISCHname","name":"entryPoint","type":"uint32"},{"components":[{"components":[{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct ISCDictItem[]","name":"items","type":"tuple[]"}],"internalType":"struct ISCDict","name":"params","type":"tuple"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"allowance","type":"tuple"}],"name":"call","outputs":[{"components":[{"components":[{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct ISCDictItem[]","name":"items","type":"tuple[]"}],"internalType":"struct ISCDict","name":"","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"ISCHname","name":"contractHname","type":"uint32"},{"internalType":"ISCHname","name":"entryPoint","type":"uint32"},{"components":[{"components":[{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct ISCDictItem[]","name":"items","type":"tuple[]"}],"internalType":"struct ISCDict","name":"params","type":"tuple"}],"name":"callView","outputs":[{"components":[{"components":[{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct ISCDictItem[]","name":"items","type":"tuple[]"}],"internalType":"struct ISCDict","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"foundrySN","type":"uint32"}],"name":"erc20NativeTokensAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"erc20NativeTokensFoundrySerialNumber","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"NFTID","name":"collectionID","type":"bytes32"}],"name":"erc721NFTCollectionAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"getAllowance","outputs":[{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getAllowanceFrom","outputs":[{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"getAllowanceTo","outputs":[{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaseTokenProperties","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"tickerSymbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"internalType":"struct ISCTokenProperties","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getChainID","outputs":[{"internalType":"ISCChainID","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getChainOwnerID","outputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISCAgentID","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEntropy","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"NFTID","name":"id","type":"bytes32"}],"name":"getIRC27NFTData","outputs":[{"components":[{"components":[{"internalType":"NFTID","name":"ID","type":"bytes32"},{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct L1Address","name":"issuer","type":"tuple"},{"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISCAgentID","name":"owner","type":"tuple"}],"internalType":"struct ISCNFT","name":"nft","type":"tuple"},{"components":[{"internalType":"string","name":"standard","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"string","name":"mimeType","type":"string"},{"internalType":"string","name":"uri","type":"string"},{"internalType":"string","name":"name","type":"string"}],"internalType":"struct IRC27NFTMetadata","name":"metadata","type":"tuple"}],"internalType":"struct IRC27NFT","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"NFTID","name":"id","type":"bytes32"}],"name":"getNFTData","outputs":[{"components":[{"internalType":"NFTID","name":"ID","type":"bytes32"},{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct L1Address","name":"issuer","type":"tuple"},{"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISCAgentID","name":"owner","type":"tuple"}],"internalType":"struct ISCNFT","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"foundrySN","type":"uint32"}],"name":"getNativeTokenID","outputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"foundrySN","type":"uint32"}],"name":"getNativeTokenScheme","outputs":[{"components":[{"internalType":"uint256","name":"mintedTokens","type":"uint256"},{"internalType":"uint256","name":"meltedTokens","type":"uint256"},{"internalType":"uint256","name":"maximumSupply","type":"uint256"}],"internalType":"struct NativeTokenScheme","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRequestID","outputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISCRequestID","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSenderAccount","outputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISCAgentID","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimestampUnixSeconds","outputs":[{"internalType":"int64","name":"","type":"int64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"foundrySN","type":"uint32"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"allowance","type":"tuple"}],"name":"registerERC20NativeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct L1Address","name":"targetAddress","type":"tuple"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"assets","type":"tuple"},{"internalType":"bool","name":"adjustMinimumStorageDeposit","type":"bool"},{"components":[{"internalType":"ISCHname","name":"targetContract","type":"uint32"},{"internalType":"ISCHname","name":"entrypoint","type":"uint32"},{"components":[{"components":[{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct ISCDictItem[]","name":"items","type":"tuple[]"}],"internalType":"struct ISCDict","name":"params","type":"tuple"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"allowance","type":"tuple"},{"internalType":"uint64","name":"gasBudget","type":"uint64"}],"internalType":"struct ISCSendMetadata","name":"metadata","type":"tuple"},{"components":[{"internalType":"int64","name":"timelock","type":"int64"},{"components":[{"internalType":"int64","name":"time","type":"int64"},{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct L1Address","name":"returnAddress","type":"tuple"}],"internalType":"struct ISCExpiration","name":"expiration","type":"tuple"}],"internalType":"struct ISCSendOptions","name":"sendOptions","type":"tuple"}],"name":"send","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"allowance","type":"tuple"}],"name":"takeAllowedFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"s","type":"string"}],"name":"triggerEvent","outputs":[],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file +[{"inputs":[{"internalType":"address","name":"target","type":"address"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"allowance","type":"tuple"}],"name":"allow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"ISCHname","name":"contractHname","type":"uint32"},{"internalType":"ISCHname","name":"entryPoint","type":"uint32"},{"components":[{"components":[{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct ISCDictItem[]","name":"items","type":"tuple[]"}],"internalType":"struct ISCDict","name":"params","type":"tuple"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"allowance","type":"tuple"}],"name":"call","outputs":[{"components":[{"components":[{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct ISCDictItem[]","name":"items","type":"tuple[]"}],"internalType":"struct ISCDict","name":"","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"ISCHname","name":"contractHname","type":"uint32"},{"internalType":"ISCHname","name":"entryPoint","type":"uint32"},{"components":[{"components":[{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct ISCDictItem[]","name":"items","type":"tuple[]"}],"internalType":"struct ISCDict","name":"params","type":"tuple"}],"name":"callView","outputs":[{"components":[{"components":[{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct ISCDictItem[]","name":"items","type":"tuple[]"}],"internalType":"struct ISCDict","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"foundrySN","type":"uint32"}],"name":"erc20NativeTokensAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"erc20NativeTokensFoundrySerialNumber","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"NFTID","name":"collectionID","type":"bytes32"}],"name":"erc721NFTCollectionAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"getAllowance","outputs":[{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getAllowanceFrom","outputs":[{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"getAllowanceTo","outputs":[{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaseTokenProperties","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"tickerSymbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"totalSupply","type":"uint256"}],"internalType":"struct ISCTokenProperties","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getChainID","outputs":[{"internalType":"ISCChainID","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getChainOwnerID","outputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISCAgentID","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEntropy","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"NFTID","name":"id","type":"bytes32"}],"name":"getIRC27NFTData","outputs":[{"components":[{"components":[{"internalType":"NFTID","name":"ID","type":"bytes32"},{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct L1Address","name":"issuer","type":"tuple"},{"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISCAgentID","name":"owner","type":"tuple"}],"internalType":"struct ISCNFT","name":"nft","type":"tuple"},{"components":[{"internalType":"string","name":"standard","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"string","name":"mimeType","type":"string"},{"internalType":"string","name":"uri","type":"string"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"string","name":"attributes","type":"string"}],"internalType":"struct IRC27NFTMetadata","name":"metadata","type":"tuple"}],"internalType":"struct IRC27NFT","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"NFTID","name":"id","type":"bytes32"}],"name":"getIRC27TokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"NFTID","name":"id","type":"bytes32"}],"name":"getNFTData","outputs":[{"components":[{"internalType":"NFTID","name":"ID","type":"bytes32"},{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct L1Address","name":"issuer","type":"tuple"},{"internalType":"bytes","name":"metadata","type":"bytes"},{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISCAgentID","name":"owner","type":"tuple"}],"internalType":"struct ISCNFT","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"foundrySN","type":"uint32"}],"name":"getNativeTokenID","outputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"foundrySN","type":"uint32"}],"name":"getNativeTokenScheme","outputs":[{"components":[{"internalType":"uint256","name":"mintedTokens","type":"uint256"},{"internalType":"uint256","name":"meltedTokens","type":"uint256"},{"internalType":"uint256","name":"maximumSupply","type":"uint256"}],"internalType":"struct NativeTokenScheme","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRequestID","outputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISCRequestID","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSenderAccount","outputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISCAgentID","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimestampUnixSeconds","outputs":[{"internalType":"int64","name":"","type":"int64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"foundrySN","type":"uint32"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"allowance","type":"tuple"}],"name":"registerERC20NativeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct L1Address","name":"targetAddress","type":"tuple"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"assets","type":"tuple"},{"internalType":"bool","name":"adjustMinimumStorageDeposit","type":"bool"},{"components":[{"internalType":"ISCHname","name":"targetContract","type":"uint32"},{"internalType":"ISCHname","name":"entrypoint","type":"uint32"},{"components":[{"components":[{"internalType":"bytes","name":"key","type":"bytes"},{"internalType":"bytes","name":"value","type":"bytes"}],"internalType":"struct ISCDictItem[]","name":"items","type":"tuple[]"}],"internalType":"struct ISCDict","name":"params","type":"tuple"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"allowance","type":"tuple"},{"internalType":"uint64","name":"gasBudget","type":"uint64"}],"internalType":"struct ISCSendMetadata","name":"metadata","type":"tuple"},{"components":[{"internalType":"int64","name":"timelock","type":"int64"},{"components":[{"internalType":"int64","name":"time","type":"int64"},{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct L1Address","name":"returnAddress","type":"tuple"}],"internalType":"struct ISCExpiration","name":"expiration","type":"tuple"}],"internalType":"struct ISCSendOptions","name":"sendOptions","type":"tuple"}],"name":"send","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"components":[{"internalType":"uint64","name":"baseTokens","type":"uint64"},{"components":[{"components":[{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct NativeTokenID","name":"ID","type":"tuple"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct NativeToken[]","name":"nativeTokens","type":"tuple[]"},{"internalType":"NFTID[]","name":"nfts","type":"bytes32[]"}],"internalType":"struct ISCAssets","name":"allowance","type":"tuple"}],"name":"takeAllowedFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"s","type":"string"}],"name":"triggerEvent","outputs":[],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/packages/vm/core/evm/iscmagic/ISCSandbox.sol b/packages/vm/core/evm/iscmagic/ISCSandbox.sol index 5d69be90b3..408728d70a 100644 --- a/packages/vm/core/evm/iscmagic/ISCSandbox.sol +++ b/packages/vm/core/evm/iscmagic/ISCSandbox.sol @@ -27,26 +27,26 @@ interface ISCSandbox { // Take some funds from the given address, which must have authorized first with `allow`. // If `allowance` is empty, all allowed funds are taken. - function takeAllowedFunds(address addr, ISCAssets memory allowance) - external; + function takeAllowedFunds( + address addr, + ISCAssets memory allowance + ) external; // Get the amount of funds currently allowed by the given address to the caller - function getAllowanceFrom(address addr) - external - view - returns (ISCAssets memory); + function getAllowanceFrom( + address addr + ) external view returns (ISCAssets memory); // Get the amount of funds currently allowed by the caller to the given address - function getAllowanceTo(address target) - external - view - returns (ISCAssets memory); + function getAllowanceTo( + address target + ) external view returns (ISCAssets memory); // Get the amount of funds currently allowed between the given addresses - function getAllowance(address from, address to) - external - view - returns (ISCAssets memory); + function getAllowance( + address from, + address to + ) external view returns (ISCAssets memory); // Send an on-ledger request (or a regular transaction to any L1 address). // The specified `assets` are transferred from the caller's @@ -94,16 +94,14 @@ interface ISCSandbox { returns (ISCTokenProperties memory); // Get the ID of a L2-controlled native token, given its foundry serial number - function getNativeTokenID(uint32 foundrySN) - external - view - returns (NativeTokenID memory); + function getNativeTokenID( + uint32 foundrySN + ) external view returns (NativeTokenID memory); // Get the token scheme of a L2-controlled native token, given its foundry serial number - function getNativeTokenScheme(uint32 foundrySN) - external - view - returns (NativeTokenScheme memory); + function getNativeTokenScheme( + uint32 foundrySN + ) external view returns (NativeTokenScheme memory); // Get information about an on-chain NFT function getNFTData(NFTID id) external view returns (ISCNFT memory); @@ -117,26 +115,38 @@ interface ISCSandbox { // })) function getIRC27NFTData(NFTID id) external view returns (IRC27NFT memory); + // Get information about an on-chain IRC27 NFT + // returns a JSON file encoded with the following format: + // base64(jsonEncode({ + // "name": NFT.name, + // "description": NFT.description, + // "image": NFT.URI + // })) + function getIRC27TokenURI(NFTID id) external view returns (string memory); + // Get the address of an ERC20NativeTokens contract for the given foundry serial number - function erc20NativeTokensAddress(uint32 foundrySN) - external - view - returns (address); + function erc20NativeTokensAddress( + uint32 foundrySN + ) external view returns (address); // Get the address of an ERC721NFTCollection contract for the given collection ID - function erc721NFTCollectionAddress(NFTID collectionID) - external - view - returns (address); + function erc721NFTCollectionAddress( + NFTID collectionID + ) external view returns (address); // Extract the foundry serial number from an ERC20NativeTokens contract's address - function erc20NativeTokensFoundrySerialNumber(address addr) - external - view - returns (uint32); + function erc20NativeTokensFoundrySerialNumber( + address addr + ) external view returns (uint32); // Creates an ERC20NativeTokens contract instance and register it with the foundry as a native token. Only the foundry owner can call this function. - function registerERC20NativeToken(uint32 foundrySN, string memory name, string memory symbol, uint8 decimals, ISCAssets memory allowance) external; + function registerERC20NativeToken( + uint32 foundrySN, + string memory name, + string memory symbol, + uint8 decimals, + ISCAssets memory allowance + ) external; } ISCSandbox constant __iscSandbox = ISCSandbox(ISC_MAGIC_ADDRESS); diff --git a/packages/vm/core/evm/iscmagic/ISCTypes.sol b/packages/vm/core/evm/iscmagic/ISCTypes.sol index 5f76d4dcca..6f4f10806a 100644 --- a/packages/vm/core/evm/iscmagic/ISCTypes.sol +++ b/packages/vm/core/evm/iscmagic/ISCTypes.sol @@ -58,19 +58,10 @@ struct IRC27NFTMetadata { string standard; string version; string mimeType; - // Note: uri field is encoded as a data URL with: - // base64(jsonEncode({ - // "name": NFT.name, - // "description": NFT.description, - // "image": NFT.URI - // })) - // tokenURI fields string uri; string name; string description; - string image; string attributes; - string tokenURI; // encoded JSON with the fields above } // Information about an on-chain IRC27 NFT diff --git a/packages/vm/core/evm/iscmagic/types.go b/packages/vm/core/evm/iscmagic/types.go index 08c13fad25..cd13a6b88f 100644 --- a/packages/vm/core/evm/iscmagic/types.go +++ b/packages/vm/core/evm/iscmagic/types.go @@ -212,20 +212,24 @@ func (n ISCNFT) MustUnwrap() *isc.NFT { // IRC27NFTMetadata matches the struct definition in ISCTypes.sol type IRC27NFTMetadata struct { - Standard string - Version string - MimeType string - Uri string //nolint:revive // false positive - Name string + Standard string + Version string + MimeType string + Uri string //nolint:revive // false positive + Name string + Description string + Attributes string } func WrapIRC27NFTMetadata(m *isc.IRC27NFTMetadata) IRC27NFTMetadata { return IRC27NFTMetadata{ - Standard: m.Standard, - Version: m.Version, - MimeType: m.MIMEType, - Uri: m.URI, - Name: m.Name, + Standard: m.Standard, + Version: m.Version, + MimeType: m.MIMEType, + Uri: m.URI, + Name: m.Name, + Description: m.Description, + Attributes: m.Attributes, } } diff --git a/packages/vm/core/evm/nfthack.go b/packages/vm/core/evm/nfthack.go index 539b15e06a..7be02010bc 100644 --- a/packages/vm/core/evm/nfthack.go +++ b/packages/vm/core/evm/nfthack.go @@ -17,6 +17,7 @@ import ( type PackedNFTURI struct { Name string `json:"name"` Description string `json:"description,omitempty"` + Attributes string `json:"attributes,omitempty"` Image string `json:"image"` } @@ -27,6 +28,7 @@ func EncodePackedNFTURI(metadata *isc.IRC27NFTMetadata) string { Name: metadata.Name, Description: metadata.Description, Image: metadata.URI, + Attributes: metadata.Attributes, }))) } diff --git a/packages/vm/core/testcore/accounts_test.go b/packages/vm/core/testcore/accounts_test.go index c81a0c3c74..6ee4df93f6 100644 --- a/packages/vm/core/testcore/accounts_test.go +++ b/packages/vm/core/testcore/accounts_test.go @@ -1459,7 +1459,7 @@ func TestNonces(t *testing.T) { func TestNFTMint(t *testing.T) { env := solo.New(t) ch := env.NewChain() - mockNFTMetadata := isc.NewIRC27NFTMetadata("foo/bar", "", "foobar").Bytes() + mockNFTMetadata := isc.NewIRC27NFTMetadata("foo/bar", "", "foobar", "[]").Bytes() _seedIndex := 0 seedIndex := func() int { @@ -1597,7 +1597,7 @@ func TestNFTMint(t *testing.T) { req = solo.NewCallParams( accounts.Contract.Name, accounts.FuncMintNFT.Name, - accounts.ParamNFTImmutableData, isc.NewIRC27NFTMetadata("foo/bar/collection", "", "foobar_collection").Bytes(), + accounts.ParamNFTImmutableData, isc.NewIRC27NFTMetadata("foo/bar/collection", "", "foobar_collection", "").Bytes(), accounts.ParamAgentID, agentID.Bytes(), accounts.ParamCollectionID, codec.Encode(firstNFTID), ). diff --git a/tools/evm/evmemulator/go.mod b/tools/evm/evmemulator/go.mod index 688dbe1df8..c4eabdbad0 100644 --- a/tools/evm/evmemulator/go.mod +++ b/tools/evm/evmemulator/go.mod @@ -3,7 +3,7 @@ module github.com/iotaledger/wasp/tools/evm/evmemulator go 1.21 replace ( - github.com/ethereum/go-ethereum => github.com/iotaledger/go-ethereum v1.13.12-wasp1 + github.com/ethereum/go-ethereum => github.com/iotaledger/go-ethereum v1.14.5-wasp1 github.com/iotaledger/tools/wasp-cli => ../../wasp-cli/ github.com/iotaledger/wasp => ../../../ go.dedis.ch/kyber/v3 => github.com/kape1395/kyber/v3 v3.0.14-0.20230124095845-ec682ff08c93 // branch: dkg-2suites @@ -19,7 +19,7 @@ require ( require ( filippo.io/edwards25519 v1.0.0 // indirect github.com/DataDog/zstd v1.5.5 // indirect - github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect github.com/VictoriaMetrics/fastcache v1.12.2 // indirect github.com/benbjohnson/clock v1.3.5 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -28,33 +28,33 @@ require ( github.com/bygui86/multi-profile/v2 v2.1.0 // indirect github.com/bytecodealliance/wasmtime-go/v9 v9.0.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/cockroachdb/errors v1.11.0 // indirect + github.com/cockroachdb/errors v1.11.1 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 // indirect + github.com/cockroachdb/pebble v1.1.0 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/consensys/gnark-crypto v0.12.1 // indirect github.com/containerd/cgroups v1.1.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 // indirect - github.com/crate-crypto/go-kzg-4844 v0.7.0 // indirect + github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect + github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect - github.com/deckarep/golang-set/v2 v2.3.1 // indirect + github.com/deckarep/golang-set/v2 v2.6.0 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/eclipse/paho.mqtt.golang v1.4.3 // indirect github.com/elastic/gosigar v0.14.2 // indirect - github.com/ethereum/c-kzg-4844 v0.4.0 // indirect + github.com/ethereum/c-kzg-4844 v1.0.0 // indirect + github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 // indirect github.com/fatih/structs v1.1.0 // indirect github.com/felixge/fgprof v0.9.3 // indirect github.com/flynn/noise v1.0.0 // indirect github.com/francoispqt/gojay v1.2.13 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 // indirect - github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 // indirect github.com/getsentry/sentry-go v0.23.0 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect diff --git a/tools/evm/evmemulator/go.sum b/tools/evm/evmemulator/go.sum index 61624dc70d..f74a79cec6 100644 --- a/tools/evm/evmemulator/go.sum +++ b/tools/evm/evmemulator/go.sum @@ -13,8 +13,8 @@ github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOv github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= @@ -80,12 +80,12 @@ github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGX github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= -github.com/cockroachdb/errors v1.11.0 h1:egs/a04mIiCuydSNS4SVe77uDTr0sLx1cq7hb8CxB7g= -github.com/cockroachdb/errors v1.11.0/go.mod h1:ycP9D0f30ZLfWZPQgaFXEYbUaa5NUIQxU/2kOxGh6KY= +github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= +github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 h1:aPEJyR4rPBvDmeyi+l/FS/VtA00IWvjeFvjen1m1l1A= -github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593/go.mod h1:6hk1eMY/u5t+Cf18q5lFMUA1Rc+Sm5I6Ra1QuPyxXCo= +github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= +github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= @@ -106,18 +106,18 @@ github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ= -github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= -github.com/crate-crypto/go-kzg-4844 v0.7.0 h1:C0vgZRk4q4EZ/JgPfzuSoxdCq3C3mOZMBShovmncxvA= -github.com/crate-crypto/go-kzg-4844 v0.7.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= +github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= +github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c h1:pFUpOrbxDR6AkioZ1ySsx5yxlDQZ8stG2b88gTPxgJU= github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U= -github.com/deckarep/golang-set/v2 v2.3.1 h1:vjmkvJt/IV27WXPyYQpAh4bRyWJc5Y435D17XQ9QU5A= -github.com/deckarep/golang-set/v2 v2.3.1/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= +github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= +github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= @@ -141,8 +141,10 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= -github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= +github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 h1:KrE8I4reeVvf7C1tm8elRjj4BdscTYzz/WAbYyf/JI4= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0/go.mod h1:D9AJLVXSyZQXJQVk8oh1EwjISE+sJTn2duYIZC0dy3w= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= @@ -162,8 +164,6 @@ github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nos github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 h1:f6D9Hr8xV8uYKlyuj8XIruxlh9WjVjdh1gIicAS7ays= github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= -github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 h1:BAIP2GihuqhwdILrV+7GJel5lyPV3u1+PgzrWLc0TkE= -github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46/go.mod h1:QNpY22eby74jVhqH4WhDLDwxc/vqsern6pW+u2kbkpc= github.com/getsentry/sentry-go v0.23.0 h1:dn+QRCeJv4pPt9OjVXiMcGIBIefaTJPw/h0bZWO05nE= github.com/getsentry/sentry-go v0.23.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -325,8 +325,8 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/iotaledger/go-ethereum v1.13.12-wasp1 h1:yXTTA4+LQzNfQEMMz0mal/LcvadB6AJYNR/ee6OIcBs= -github.com/iotaledger/go-ethereum v1.13.12-wasp1/go.mod h1:hKL2Qcj1OvStXNSEDbucexqnEt1Wh4Cz329XsjAalZY= +github.com/iotaledger/go-ethereum v1.14.5-wasp1 h1:MiiLn6VwuESvnHpYNHrp1EvRori3mW7/no121/oQfpk= +github.com/iotaledger/go-ethereum v1.14.5-wasp1/go.mod h1:VEDGGhSxY7IEjn98hJRFXl/uFvpRgbIIf2PpXiyGGgc= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= github.com/iotaledger/hive.go/app v0.0.0-20240319170702-c7591bb5f9f2 h1:7bTc69VqIHJ25dE7Xc/u4mY4GV+UP4PGO4/c5iElTaM= diff --git a/tools/gascalibration/go.mod b/tools/gascalibration/go.mod index d22e22125a..d88634a54f 100644 --- a/tools/gascalibration/go.mod +++ b/tools/gascalibration/go.mod @@ -3,7 +3,7 @@ module github.com/iotaledger/wasp/tools/gascalibration go 1.21 replace ( - github.com/ethereum/go-ethereum => github.com/iotaledger/go-ethereum v1.13.12-wasp1 + github.com/ethereum/go-ethereum => github.com/iotaledger/go-ethereum v1.14.5-wasp1 github.com/iotaledger/wasp => ../../ github.com/iotaledger/wasp/tools/wasp-cli => ../wasp-cli/ go.dedis.ch/kyber/v3 => github.com/kape1395/kyber/v3 v3.0.14-0.20230124095845-ec682ff08c93 // branch: dkg-2suites @@ -19,7 +19,7 @@ require ( filippo.io/edwards25519 v1.0.0 // indirect git.sr.ht/~sbinet/gg v0.5.0 // indirect github.com/DataDog/zstd v1.5.5 // indirect - github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect github.com/VictoriaMetrics/fastcache v1.12.2 // indirect github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -27,23 +27,23 @@ require ( github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/campoy/embedmd v1.0.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/cockroachdb/errors v1.11.0 // indirect + github.com/cockroachdb/errors v1.11.1 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 // indirect + github.com/cockroachdb/pebble v1.1.0 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/consensys/gnark-crypto v0.12.1 // indirect - github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 // indirect - github.com/crate-crypto/go-kzg-4844 v0.7.0 // indirect + github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect + github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/deckarep/golang-set/v2 v2.3.1 // indirect + github.com/deckarep/golang-set/v2 v2.6.0 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect - github.com/ethereum/c-kzg-4844 v0.4.0 // indirect + github.com/ethereum/c-kzg-4844 v1.0.0 // indirect github.com/ethereum/go-ethereum v1.13.13 // indirect + github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 // indirect - github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 // indirect github.com/getsentry/sentry-go v0.23.0 // indirect github.com/go-fonts/liberation v0.3.1 // indirect github.com/go-latex/latex v0.0.0-20230307184459-12ec69307ad9 // indirect @@ -114,12 +114,10 @@ require ( golang.org/x/crypto v0.24.0 // indirect golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 // indirect golang.org/x/image v0.11.0 // indirect - golang.org/x/mod v0.18.0 // indirect golang.org/x/net v0.26.0 // indirect golang.org/x/sync v0.7.0 // indirect golang.org/x/sys v0.21.0 // indirect golang.org/x/text v0.16.0 // indirect - golang.org/x/tools v0.22.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c // indirect google.golang.org/grpc v1.63.2 // indirect google.golang.org/protobuf v1.33.0 // indirect diff --git a/tools/gascalibration/go.sum b/tools/gascalibration/go.sum index 51948bc9d4..aa8fad568c 100644 --- a/tools/gascalibration/go.sum +++ b/tools/gascalibration/go.sum @@ -8,8 +8,8 @@ github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOv github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= @@ -38,12 +38,12 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= -github.com/cockroachdb/errors v1.11.0 h1:egs/a04mIiCuydSNS4SVe77uDTr0sLx1cq7hb8CxB7g= -github.com/cockroachdb/errors v1.11.0/go.mod h1:ycP9D0f30ZLfWZPQgaFXEYbUaa5NUIQxU/2kOxGh6KY= +github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= +github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 h1:aPEJyR4rPBvDmeyi+l/FS/VtA00IWvjeFvjen1m1l1A= -github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593/go.mod h1:6hk1eMY/u5t+Cf18q5lFMUA1Rc+Sm5I6Ra1QuPyxXCo= +github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= +github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= @@ -53,33 +53,33 @@ github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ= -github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= -github.com/crate-crypto/go-kzg-4844 v0.7.0 h1:C0vgZRk4q4EZ/JgPfzuSoxdCq3C3mOZMBShovmncxvA= -github.com/crate-crypto/go-kzg-4844 v0.7.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= +github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= +github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/deckarep/golang-set/v2 v2.3.1 h1:vjmkvJt/IV27WXPyYQpAh4bRyWJc5Y435D17XQ9QU5A= -github.com/deckarep/golang-set/v2 v2.3.1/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= +github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= +github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/dgraph-io/badger v1.5.4/go.mod h1:VZxzAIRPHRVNRKRo6AXrX9BJegn6il06VMTZVJYCIjQ= github.com/dgryski/go-farm v0.0.0-20190323231341-8198c7b169ec/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= -github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= +github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 h1:KrE8I4reeVvf7C1tm8elRjj4BdscTYzz/WAbYyf/JI4= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0/go.mod h1:D9AJLVXSyZQXJQVk8oh1EwjISE+sJTn2duYIZC0dy3w= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 h1:f6D9Hr8xV8uYKlyuj8XIruxlh9WjVjdh1gIicAS7ays= github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= -github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 h1:BAIP2GihuqhwdILrV+7GJel5lyPV3u1+PgzrWLc0TkE= -github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46/go.mod h1:QNpY22eby74jVhqH4WhDLDwxc/vqsern6pW+u2kbkpc= github.com/getsentry/sentry-go v0.23.0 h1:dn+QRCeJv4pPt9OjVXiMcGIBIefaTJPw/h0bZWO05nE= github.com/getsentry/sentry-go v0.23.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= @@ -140,8 +140,8 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/iotaledger/go-ethereum v1.13.12-wasp1 h1:yXTTA4+LQzNfQEMMz0mal/LcvadB6AJYNR/ee6OIcBs= -github.com/iotaledger/go-ethereum v1.13.12-wasp1/go.mod h1:hKL2Qcj1OvStXNSEDbucexqnEt1Wh4Cz329XsjAalZY= +github.com/iotaledger/go-ethereum v1.14.5-wasp1 h1:MiiLn6VwuESvnHpYNHrp1EvRori3mW7/no121/oQfpk= +github.com/iotaledger/go-ethereum v1.14.5-wasp1/go.mod h1:VEDGGhSxY7IEjn98hJRFXl/uFvpRgbIIf2PpXiyGGgc= github.com/iotaledger/hive.go/constraints v0.0.0-20240319170702-c7591bb5f9f2 h1:e6xpjV6XdDFlROqKodsxyqUloDFMu3/4hysGzWLgKks= github.com/iotaledger/hive.go/constraints v0.0.0-20240319170702-c7591bb5f9f2/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= github.com/iotaledger/hive.go/crypto v0.0.0-20240319170702-c7591bb5f9f2 h1:dKjT8wHtkbB4YKznFYMBWh6E7CzA22l/309xXtPxqzQ= @@ -310,8 +310,6 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= -golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -378,8 +376,6 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= -golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index 89227dc2cd..5d9ca7011a 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -3,7 +3,7 @@ module github.com/iotaledger/wasp/tools/gendoc go 1.21 replace ( - github.com/ethereum/go-ethereum => github.com/iotaledger/go-ethereum v1.13.12-wasp1 + github.com/ethereum/go-ethereum => github.com/iotaledger/go-ethereum v1.14.5-wasp1 github.com/iotaledger/wasp => ../../ go.dedis.ch/kyber/v3 => github.com/kape1395/kyber/v3 v3.0.14-0.20230124095845-ec682ff08c93 // branch: dkg-2suites ) @@ -17,7 +17,7 @@ require ( require ( filippo.io/edwards25519 v1.0.0 // indirect github.com/DataDog/zstd v1.5.5 // indirect - github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect github.com/VictoriaMetrics/fastcache v1.12.2 // indirect github.com/benbjohnson/clock v1.3.5 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -26,27 +26,28 @@ require ( github.com/bygui86/multi-profile/v2 v2.1.0 // indirect github.com/bytecodealliance/wasmtime-go/v9 v9.0.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/cockroachdb/errors v1.11.0 // indirect + github.com/cockroachdb/errors v1.11.1 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 // indirect + github.com/cockroachdb/pebble v1.1.0 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/consensys/gnark-crypto v0.12.1 // indirect github.com/containerd/cgroups v1.1.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 // indirect - github.com/crate-crypto/go-kzg-4844 v0.7.0 // indirect + github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect + github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect - github.com/deckarep/golang-set/v2 v2.3.1 // indirect + github.com/deckarep/golang-set/v2 v2.6.0 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/eclipse/paho.mqtt.golang v1.4.3 // indirect github.com/elastic/gosigar v0.14.2 // indirect - github.com/ethereum/c-kzg-4844 v0.4.0 // indirect + github.com/ethereum/c-kzg-4844 v1.0.0 // indirect github.com/ethereum/go-ethereum v1.13.13 // indirect + github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 // indirect github.com/fatih/structs v1.1.0 // indirect github.com/fbiville/markdown-table-formatter v0.3.0 // indirect github.com/felixge/fgprof v0.9.3 // indirect @@ -54,7 +55,6 @@ require ( github.com/francoispqt/gojay v1.2.13 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 // indirect - github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 // indirect github.com/getsentry/sentry-go v0.23.0 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index 768c6da6ca..fd365ac611 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -13,8 +13,8 @@ github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOv github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= @@ -80,12 +80,12 @@ github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGX github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= -github.com/cockroachdb/errors v1.11.0 h1:egs/a04mIiCuydSNS4SVe77uDTr0sLx1cq7hb8CxB7g= -github.com/cockroachdb/errors v1.11.0/go.mod h1:ycP9D0f30ZLfWZPQgaFXEYbUaa5NUIQxU/2kOxGh6KY= +github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= +github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 h1:aPEJyR4rPBvDmeyi+l/FS/VtA00IWvjeFvjen1m1l1A= -github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593/go.mod h1:6hk1eMY/u5t+Cf18q5lFMUA1Rc+Sm5I6Ra1QuPyxXCo= +github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= +github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= @@ -105,18 +105,18 @@ github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8 github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ= -github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= -github.com/crate-crypto/go-kzg-4844 v0.7.0 h1:C0vgZRk4q4EZ/JgPfzuSoxdCq3C3mOZMBShovmncxvA= -github.com/crate-crypto/go-kzg-4844 v0.7.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= +github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= +github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c h1:pFUpOrbxDR6AkioZ1ySsx5yxlDQZ8stG2b88gTPxgJU= github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U= -github.com/deckarep/golang-set/v2 v2.3.1 h1:vjmkvJt/IV27WXPyYQpAh4bRyWJc5Y435D17XQ9QU5A= -github.com/deckarep/golang-set/v2 v2.3.1/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= +github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= +github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= @@ -140,8 +140,10 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= -github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= +github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 h1:KrE8I4reeVvf7C1tm8elRjj4BdscTYzz/WAbYyf/JI4= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0/go.mod h1:D9AJLVXSyZQXJQVk8oh1EwjISE+sJTn2duYIZC0dy3w= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= @@ -163,8 +165,6 @@ github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nos github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 h1:f6D9Hr8xV8uYKlyuj8XIruxlh9WjVjdh1gIicAS7ays= github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= -github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 h1:BAIP2GihuqhwdILrV+7GJel5lyPV3u1+PgzrWLc0TkE= -github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46/go.mod h1:QNpY22eby74jVhqH4WhDLDwxc/vqsern6pW+u2kbkpc= github.com/getsentry/sentry-go v0.23.0 h1:dn+QRCeJv4pPt9OjVXiMcGIBIefaTJPw/h0bZWO05nE= github.com/getsentry/sentry-go v0.23.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -324,8 +324,8 @@ github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFck github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJn+Ichc= github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= -github.com/iotaledger/go-ethereum v1.13.12-wasp1 h1:yXTTA4+LQzNfQEMMz0mal/LcvadB6AJYNR/ee6OIcBs= -github.com/iotaledger/go-ethereum v1.13.12-wasp1/go.mod h1:hKL2Qcj1OvStXNSEDbucexqnEt1Wh4Cz329XsjAalZY= +github.com/iotaledger/go-ethereum v1.14.5-wasp1 h1:MiiLn6VwuESvnHpYNHrp1EvRori3mW7/no121/oQfpk= +github.com/iotaledger/go-ethereum v1.14.5-wasp1/go.mod h1:VEDGGhSxY7IEjn98hJRFXl/uFvpRgbIIf2PpXiyGGgc= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= github.com/iotaledger/hive.go/app v0.0.0-20240319170702-c7591bb5f9f2 h1:7bTc69VqIHJ25dE7Xc/u4mY4GV+UP4PGO4/c5iElTaM= diff --git a/tools/wasp-cli/go.mod b/tools/wasp-cli/go.mod index dd3e1bac12..f5281049e8 100644 --- a/tools/wasp-cli/go.mod +++ b/tools/wasp-cli/go.mod @@ -3,7 +3,7 @@ module github.com/iotaledger/wasp/tools/wasp-cli go 1.21 replace ( - github.com/ethereum/go-ethereum => github.com/iotaledger/go-ethereum v1.13.12-wasp1 + github.com/ethereum/go-ethereum => github.com/iotaledger/go-ethereum v1.14.5-wasp1 github.com/iotaledger/wasp => ../../ go.dedis.ch/kyber/v3 => github.com/kape1395/kyber/v3 v3.0.14-0.20230124095845-ec682ff08c93 // branch: dkg-2suites ) @@ -31,7 +31,7 @@ require ( filippo.io/edwards25519 v1.0.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/DataDog/zstd v1.5.5 // indirect - github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect github.com/VictoriaMetrics/fastcache v1.12.2 // indirect github.com/alessio/shellescape v1.4.1 // indirect github.com/awnumar/memcall v0.2.0 // indirect @@ -42,35 +42,35 @@ require ( github.com/bygui86/multi-profile/v2 v2.1.0 // indirect github.com/bytecodealliance/wasmtime-go/v9 v9.0.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/cockroachdb/errors v1.11.0 // indirect + github.com/cockroachdb/errors v1.11.1 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 // indirect + github.com/cockroachdb/pebble v1.1.0 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/consensys/gnark-crypto v0.12.1 // indirect github.com/containerd/cgroups v1.1.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 // indirect - github.com/crate-crypto/go-kzg-4844 v0.7.0 // indirect + github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect + github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect github.com/danieljoos/wincred v1.2.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect - github.com/deckarep/golang-set/v2 v2.3.1 // indirect + github.com/deckarep/golang-set/v2 v2.6.0 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/ebitengine/purego v0.6.1 // indirect github.com/eclipse/paho.mqtt.golang v1.4.3 // indirect github.com/elastic/gosigar v0.14.2 // indirect - github.com/ethereum/c-kzg-4844 v0.4.0 // indirect + github.com/ethereum/c-kzg-4844 v1.0.0 // indirect + github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 // indirect github.com/fatih/structs v1.1.0 // indirect github.com/felixge/fgprof v0.9.3 // indirect github.com/flynn/noise v1.0.0 // indirect github.com/francoispqt/gojay v1.2.13 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 // indirect - github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 // indirect github.com/getsentry/sentry-go v0.23.0 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect diff --git a/tools/wasp-cli/go.sum b/tools/wasp-cli/go.sum index 724ce69561..a58cb5d49f 100644 --- a/tools/wasp-cli/go.sum +++ b/tools/wasp-cli/go.sum @@ -17,8 +17,8 @@ github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOv github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= @@ -90,12 +90,12 @@ github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGX github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= -github.com/cockroachdb/errors v1.11.0 h1:egs/a04mIiCuydSNS4SVe77uDTr0sLx1cq7hb8CxB7g= -github.com/cockroachdb/errors v1.11.0/go.mod h1:ycP9D0f30ZLfWZPQgaFXEYbUaa5NUIQxU/2kOxGh6KY= +github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= +github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 h1:aPEJyR4rPBvDmeyi+l/FS/VtA00IWvjeFvjen1m1l1A= -github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593/go.mod h1:6hk1eMY/u5t+Cf18q5lFMUA1Rc+Sm5I6Ra1QuPyxXCo= +github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= +github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= @@ -116,10 +116,10 @@ github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ= -github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= -github.com/crate-crypto/go-kzg-4844 v0.7.0 h1:C0vgZRk4q4EZ/JgPfzuSoxdCq3C3mOZMBShovmncxvA= -github.com/crate-crypto/go-kzg-4844 v0.7.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= +github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= +github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/danieljoos/wincred v1.2.0 h1:ozqKHaLK0W/ii4KVbbvluM91W2H3Sh0BncbUNPS7jLE= github.com/danieljoos/wincred v1.2.0/go.mod h1:FzQLLMKBFdvu+osBrnFODiv32YGwCfx0SkRa/eYHgec= @@ -129,8 +129,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c h1:pFUpOrbxDR6AkioZ1ySsx5yxlDQZ8stG2b88gTPxgJU= github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U= -github.com/deckarep/golang-set/v2 v2.3.1 h1:vjmkvJt/IV27WXPyYQpAh4bRyWJc5Y435D17XQ9QU5A= -github.com/deckarep/golang-set/v2 v2.3.1/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= +github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= +github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= @@ -158,8 +158,10 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= -github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= +github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 h1:KrE8I4reeVvf7C1tm8elRjj4BdscTYzz/WAbYyf/JI4= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0/go.mod h1:D9AJLVXSyZQXJQVk8oh1EwjISE+sJTn2duYIZC0dy3w= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= @@ -179,8 +181,6 @@ github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nos github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 h1:f6D9Hr8xV8uYKlyuj8XIruxlh9WjVjdh1gIicAS7ays= github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= -github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 h1:BAIP2GihuqhwdILrV+7GJel5lyPV3u1+PgzrWLc0TkE= -github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46/go.mod h1:QNpY22eby74jVhqH4WhDLDwxc/vqsern6pW+u2kbkpc= github.com/getsentry/sentry-go v0.23.0 h1:dn+QRCeJv4pPt9OjVXiMcGIBIefaTJPw/h0bZWO05nE= github.com/getsentry/sentry-go v0.23.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -348,8 +348,8 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/iotaledger/go-ethereum v1.13.12-wasp1 h1:yXTTA4+LQzNfQEMMz0mal/LcvadB6AJYNR/ee6OIcBs= -github.com/iotaledger/go-ethereum v1.13.12-wasp1/go.mod h1:hKL2Qcj1OvStXNSEDbucexqnEt1Wh4Cz329XsjAalZY= +github.com/iotaledger/go-ethereum v1.14.5-wasp1 h1:MiiLn6VwuESvnHpYNHrp1EvRori3mW7/no121/oQfpk= +github.com/iotaledger/go-ethereum v1.14.5-wasp1/go.mod h1:VEDGGhSxY7IEjn98hJRFXl/uFvpRgbIIf2PpXiyGGgc= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= github.com/iotaledger/hive.go/app v0.0.0-20240319170702-c7591bb5f9f2 h1:7bTc69VqIHJ25dE7Xc/u4mY4GV+UP4PGO4/c5iElTaM= From 42a77ad76cf104e50f17b74cea9a213b3f1b7342 Mon Sep 17 00:00:00 2001 From: Jorge Silva Date: Mon, 1 Jul 2024 14:16:28 +0100 Subject: [PATCH 5/8] update ERC721NFTs code migration --- contracts/wasm/testwasmlib/test/deploy.cmd | 1 - contracts/wasm/testwasmlib/test/deploy.sh | 1 - packages/evm/evmtest/ISCTest.sol | 1 - packages/isc/irc27nft.go | 2 +- .../TestDeployNativeContract-root.hex | 2 +- .../testdbhash/TestGetEvents-blocklog.hex | 2 +- ...mint_from_it_as_a_collection1-accounts.hex | 2 +- ...mint_from_it_as_a_collection2-accounts.hex | 2 +- .../testdbhash/TestSelfDestruct-evm.hex | 2 +- .../testdbhash/TestSendBaseTokens-evm.hex | 2 +- .../testdbhash/TestStorageContract-evm.hex | 2 +- .../TestUnprocessableWithPruning-blocklog.hex | 2 +- packages/vm/core/evm/emulator/emulator.go | 2 +- packages/vm/core/evm/evmimpl/impl.go | 16 +-- packages/vm/core/evm/evmtest/evm_test.go | 17 ++-- .../vm/core/migrations/allmigrations/all.go | 2 + .../core/migrations/m002/update_iscmagic.go | 22 +++++ tools/cluster/tests/wasp-cli_test.go | 97 ------------------- 18 files changed, 53 insertions(+), 124 deletions(-) create mode 100644 packages/vm/core/migrations/m002/update_iscmagic.go diff --git a/contracts/wasm/testwasmlib/test/deploy.cmd b/contracts/wasm/testwasmlib/test/deploy.cmd index a4581d2a8a..46aedaf353 100644 --- a/contracts/wasm/testwasmlib/test/deploy.cmd +++ b/contracts/wasm/testwasmlib/test/deploy.cmd @@ -8,5 +8,4 @@ wasp-cli chain deploy-contract wasmtime testwasmlib "Test WasmLib" ..\rs\testwas wasp-cli chain post-request -s testwasmlib random wasp-cli chain call-view testwasmlib getRandom | wasp-cli decode string random uint64 wasp-cli chain balance -wasp-cli chain list-accounts wasp-cli check-versions diff --git a/contracts/wasm/testwasmlib/test/deploy.sh b/contracts/wasm/testwasmlib/test/deploy.sh index f6222f50e5..e6aa74b1cd 100644 --- a/contracts/wasm/testwasmlib/test/deploy.sh +++ b/contracts/wasm/testwasmlib/test/deploy.sh @@ -9,5 +9,4 @@ wasp-cli chain deploy-contract wasmtime testwasmlib "Test WasmLib" ../rs/testwas wasp-cli chain post-request -s testwasmlib random wasp-cli chain call-view testwasmlib getRandom | wasp-cli decode string random uint64 wasp-cli chain balance -wasp-cli chain list-accounts wasp-cli check-versions diff --git a/packages/evm/evmtest/ISCTest.sol b/packages/evm/evmtest/ISCTest.sol index c49416514d..30c7bb424a 100644 --- a/packages/evm/evmtest/ISCTest.sol +++ b/packages/evm/evmtest/ISCTest.sol @@ -247,7 +247,6 @@ contract ISCTest { ISCAssets memory allowance; allowance.baseTokens = 100000; - // TODO why does this not work correctly (importing via ISCTypes) ISCAgentID memory agentID = ISCTypes.newL1AgentID(l1addr); ISCDict memory params = ISCDict(new ISCDictItem[](3)); diff --git a/packages/isc/irc27nft.go b/packages/isc/irc27nft.go index 38b1400800..7de1524a3e 100644 --- a/packages/isc/irc27nft.go +++ b/packages/isc/irc27nft.go @@ -24,7 +24,7 @@ func NewIRC27NFTMetadata(mimeType, uri, name, attributes string) *IRC27NFTMetada MIMEType: mimeType, URI: uri, Name: name, - Attributes: attributes, // TODO validate that attributes are a valid JSON? + Attributes: attributes, } } diff --git a/packages/testutil/testdbhash/TestDeployNativeContract-root.hex b/packages/testutil/testdbhash/TestDeployNativeContract-root.hex index 90c3887609..ca90a02879 100644 --- a/packages/testutil/testdbhash/TestDeployNativeContract-root.hex +++ b/packages/testutil/testdbhash/TestDeployNativeContract-root.hex @@ -1 +1 @@ -0x4fccfa68bb2a25bbb54e65796a0fb4a7ee2cdb82dd9b5cede2f9674c5b474209 +0x97abe1b6193673f6c561c704ef04565b1211e344ffdf44eae0ca4b93e2b39bb4 diff --git a/packages/testutil/testdbhash/TestGetEvents-blocklog.hex b/packages/testutil/testdbhash/TestGetEvents-blocklog.hex index 84d80aa60c..f38755de38 100644 --- a/packages/testutil/testdbhash/TestGetEvents-blocklog.hex +++ b/packages/testutil/testdbhash/TestGetEvents-blocklog.hex @@ -1 +1 @@ -0xf44bb465759a04e6942e716bfcd8652f6afb2c1dbcb1fdf6bf77d9129f07f0f8 +0x6d23c7af0d1d75bccf5d2132d94466f685ff7dfcdf568ce9426e24f3f72329b9 diff --git a/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection1-accounts.hex b/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection1-accounts.hex index 6ffedbda60..8306a2f6c0 100644 --- a/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection1-accounts.hex +++ b/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection1-accounts.hex @@ -1 +1 @@ -0xdbcc902a05b06563da0b687d9d73689b63e83fee57309ecb37fc151b9121aa1e +0xf48358eea8a78e3ea311ee6b8c67cf664fa1df7411c2dbb7d86875dd9ed40d2b diff --git a/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection2-accounts.hex b/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection2-accounts.hex index 9917ce94fd..6176ea3ccb 100644 --- a/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection2-accounts.hex +++ b/packages/testutil/testdbhash/TestNFTMint-mint_to_self,_then_mint_from_it_as_a_collection2-accounts.hex @@ -1 +1 @@ -0x33699eeaa2c59b8cc13b997c79697f991515b78baeafabc51c318666a160ab4b +0x6e3f35b3f5a6b14f9001d42c1b8dd78c676a238af8202b3fb2c9b3fdecbefd01 diff --git a/packages/testutil/testdbhash/TestSelfDestruct-evm.hex b/packages/testutil/testdbhash/TestSelfDestruct-evm.hex index 9f9fbbdbbe..038f119121 100644 --- a/packages/testutil/testdbhash/TestSelfDestruct-evm.hex +++ b/packages/testutil/testdbhash/TestSelfDestruct-evm.hex @@ -1 +1 @@ -0x11cacd5ff64036c943c1882fb7186f141232237c145313f9befcddbac77b7ca2 +0x6ff8ffff5befa3c4cf2bd6f14b492611a977c2abc83f8e5ba2088de7c2e16d12 diff --git a/packages/testutil/testdbhash/TestSendBaseTokens-evm.hex b/packages/testutil/testdbhash/TestSendBaseTokens-evm.hex index 57dd649a06..de875ef42b 100644 --- a/packages/testutil/testdbhash/TestSendBaseTokens-evm.hex +++ b/packages/testutil/testdbhash/TestSendBaseTokens-evm.hex @@ -1 +1 @@ -0x5835faf7e10d35e126af3b13d000fa5d5b100a5ae329a1d50b9ab47b937787ce +0x29f7a125c10e0d3a49c7b697c54627910235b826b55c8cb3706167b94757a315 diff --git a/packages/testutil/testdbhash/TestStorageContract-evm.hex b/packages/testutil/testdbhash/TestStorageContract-evm.hex index 07216fe0bc..846975483b 100644 --- a/packages/testutil/testdbhash/TestStorageContract-evm.hex +++ b/packages/testutil/testdbhash/TestStorageContract-evm.hex @@ -1 +1 @@ -0xf947695a32a4a3bd1a33c878a39f37f3db4e8cffb98b60d9c10ac38af1703cf5 +0x5d36d9fd395239fd2bcad1bb313ba3b653ca58a50a85b479ef2fcf5cef24bf7d diff --git a/packages/testutil/testdbhash/TestUnprocessableWithPruning-blocklog.hex b/packages/testutil/testdbhash/TestUnprocessableWithPruning-blocklog.hex index 28d3128661..e2aefd4632 100644 --- a/packages/testutil/testdbhash/TestUnprocessableWithPruning-blocklog.hex +++ b/packages/testutil/testdbhash/TestUnprocessableWithPruning-blocklog.hex @@ -1 +1 @@ -0x316e88b911b69e241d916ab7f98f0ec1301c22eec5a1ba559c720742a6d8587b +0xff156b18e625b1a3d2ebfa7d749515c6b3ada0aa20fd7bb5ee3d14f4d2f6e18f diff --git a/packages/vm/core/evm/emulator/emulator.go b/packages/vm/core/evm/emulator/emulator.go index 4b42226d50..d2b2c002cf 100644 --- a/packages/vm/core/evm/emulator/emulator.go +++ b/packages/vm/core/evm/emulator/emulator.go @@ -122,7 +122,7 @@ func Init( chainID uint16, gasLimits GasLimits, timestamp uint64, - alloc core.GenesisAlloc, + alloc types.GenesisAlloc, ) { bdb := NewBlockchainDB(emulatorState, gasLimits.Block, BlockKeepAll) if bdb.Initialized() { diff --git a/packages/vm/core/evm/evmimpl/impl.go b/packages/vm/core/evm/evmimpl/impl.go index befdd8812c..2ae1c618c9 100644 --- a/packages/vm/core/evm/evmimpl/impl.go +++ b/packages/vm/core/evm/evmimpl/impl.go @@ -54,10 +54,10 @@ var Processor = evm.Contract.Processor(nil, // block on a newly created ISC chain. func SetInitialState(evmPartition kv.KVStore, evmChainID uint16, createBaseTokenMagicWrap bool) { // Ethereum genesis block configuration - genesisAlloc := core.GenesisAlloc{} + genesisAlloc := types.GenesisAlloc{} // add the ISC magic contract at address 0x10740000...00 - genesisAlloc[iscmagic.Address] = core.GenesisAccount{ + genesisAlloc[iscmagic.Address] = types.Account{ // Dummy code, because some contracts check the code size before calling // the contract. // The EVM code itself will never get executed; see type [magicContract]. @@ -68,7 +68,7 @@ func SetInitialState(evmPartition kv.KVStore, evmChainID uint16, createBaseToken if createBaseTokenMagicWrap { // add the ERC20BaseTokens contract at address 0x10740100...00 - genesisAlloc[iscmagic.ERC20BaseTokensAddress] = core.GenesisAccount{ + genesisAlloc[iscmagic.ERC20BaseTokensAddress] = types.Account{ Code: iscmagic.ERC20BaseTokensRuntimeBytecode, Storage: map[common.Hash]common.Hash{}, Balance: nil, @@ -77,7 +77,7 @@ func SetInitialState(evmPartition kv.KVStore, evmChainID uint16, createBaseToken } // add the ERC721NFTs contract at address 0x10740300...00 - genesisAlloc[iscmagic.ERC721NFTsAddress] = core.GenesisAccount{ + genesisAlloc[iscmagic.ERC721NFTsAddress] = types.Account{ Code: iscmagic.ERC721NFTsRuntimeBytecode, Storage: map[common.Hash]common.Hash{}, Balance: nil, @@ -440,23 +440,23 @@ func newL1Deposit(ctx isc.Sandbox) dict.Dict { ctx.RequireCaller(isc.NewContractAgentID(ctx.ChainID(), accounts.Contract.Hname())) params := ctx.Params() l1DepositOriginatorBytes := params.MustGetBytes(evm.FieldAgentIDDepositOriginator) - fromAddress := common.Address{} toAddress := common.BytesToAddress(params.MustGetBytes(evm.FieldAddress)) assets, err := isc.AssetsFromBytes(params.MustGetBytes(evm.FieldAssets)) ctx.RequireNoError(err, "unable to parse assets from params") txData := l1DepositOriginatorBytes // create a fake tx so that the operation is visible by the EVM - addDummyTxWithTransferEvents(ctx, fromAddress, toAddress, assets, txData) + addDummyTxWithTransferEvents(ctx, toAddress, assets, txData) return nil } func addDummyTxWithTransferEvents( ctx isc.Sandbox, - fromAddress, toAddress common.Address, + toAddress common.Address, assets *isc.Assets, txData []byte, ) { - logs := makeTransferEvents(ctx, fromAddress, toAddress, assets) + zeroAddress := common.Address{} + logs := makeTransferEvents(ctx, zeroAddress, toAddress, assets) wei := util.BaseTokensDecimalsToEthereumDecimals(assets.BaseTokens, newEmulatorContext(ctx).BaseTokensDecimals()) if wei.Sign() == 0 && len(logs) == 0 { diff --git a/packages/vm/core/evm/evmtest/evm_test.go b/packages/vm/core/evm/evmtest/evm_test.go index 4c2730375a..437e7f2cef 100644 --- a/packages/vm/core/evm/evmtest/evm_test.go +++ b/packages/vm/core/evm/evmtest/evm_test.go @@ -500,14 +500,19 @@ func TestISCNFTMint(t *testing.T) { ethKey, ethAddr := env.Chain.NewEthereumAccountWithL2Funds() iscTest := env.deployISCTestContract(ethKey) - _, err := iscTest.CallFn([]ethCallOptions{{ - value: big.NewInt(int64(5000000000000 * isc.Million)), - }}, "mintNFT") - - require.NoError(t, err) + var mintID []byte + iscTest.CallFnExpectEvent( + []ethCallOptions{{ + value: big.NewInt(int64(5000000000000 * isc.Million)), + }}, + "nftMint", + &mintID, + "mintNFT", + ) + require.NotEmpty(t, mintID) /// produce a block (so the minted nft gets accounted for) - _, err = iscTest.triggerEvent("Hi from EVM!") + _, err := iscTest.triggerEvent("Hi from EVM!") require.NoError(t, err) /// diff --git a/packages/vm/core/migrations/allmigrations/all.go b/packages/vm/core/migrations/allmigrations/all.go index 5fd3ccc490..737aa83a2e 100644 --- a/packages/vm/core/migrations/allmigrations/all.go +++ b/packages/vm/core/migrations/allmigrations/all.go @@ -3,6 +3,7 @@ package allmigrations import ( "github.com/iotaledger/wasp/packages/vm/core/migrations" "github.com/iotaledger/wasp/packages/vm/core/migrations/m001" + "github.com/iotaledger/wasp/packages/vm/core/migrations/m002" ) var DefaultScheme = &migrations.MigrationScheme{ @@ -17,5 +18,6 @@ var DefaultScheme = &migrations.MigrationScheme{ // BaseSchemaVersion by one. Migrations: []migrations.Migration{ m001.AccountDecimals, + m002.UpdateEVMISCMagic, }, } diff --git a/packages/vm/core/migrations/m002/update_iscmagic.go b/packages/vm/core/migrations/m002/update_iscmagic.go new file mode 100644 index 0000000000..958791579b --- /dev/null +++ b/packages/vm/core/migrations/m002/update_iscmagic.go @@ -0,0 +1,22 @@ +package m002 + +import ( + "github.com/iotaledger/hive.go/logger" + "github.com/iotaledger/wasp/packages/kv" + "github.com/iotaledger/wasp/packages/kv/subrealm" + "github.com/iotaledger/wasp/packages/vm/core/evm" + "github.com/iotaledger/wasp/packages/vm/core/evm/emulator" + "github.com/iotaledger/wasp/packages/vm/core/evm/iscmagic" + "github.com/iotaledger/wasp/packages/vm/core/migrations" +) + +var UpdateEVMISCMagic = migrations.Migration{ + Contract: evm.Contract, + Apply: func(state kv.KVStore, log *logger.Logger) error { + evmPartition := subrealm.New(state, kv.Key(evm.Contract.Hname().Bytes())) + emulatorState := evm.EmulatorStateSubrealm(evmPartition) + stateDBSubrealm := emulator.StateDBSubrealm(emulatorState) + emulator.SetCode(stateDBSubrealm, iscmagic.ERC721NFTsAddress, iscmagic.ERC721NFTsRuntimeBytecode) + return nil + }, +} diff --git a/tools/cluster/tests/wasp-cli_test.go b/tools/cluster/tests/wasp-cli_test.go index 6f519dfa76..c3a7665d2f 100644 --- a/tools/cluster/tests/wasp-cli_test.go +++ b/tools/cluster/tests/wasp-cli_test.go @@ -25,7 +25,6 @@ import ( "github.com/iotaledger/wasp/packages/parameters" "github.com/iotaledger/wasp/packages/testutil/testkey" "github.com/iotaledger/wasp/packages/vm/core/accounts" - "github.com/iotaledger/wasp/packages/vm/core/blob" "github.com/iotaledger/wasp/packages/vm/core/blocklog" "github.com/iotaledger/wasp/packages/vm/gas" "github.com/iotaledger/wasp/packages/vm/vmtypes" @@ -96,62 +95,6 @@ func TestZeroGasFee(t *testing.T) { }) } -func TestWaspCLI1Chain(t *testing.T) { - w := newWaspCLITest(t) - - chainName := "chain1" - - committee, quorum := w.ArgCommitteeConfig(0) - - // test chain deploy command - w.MustRun("chain", "deploy", "--chain="+chainName, committee, quorum, "--evm-chainid=1091", "--block-keep-amount=123", "--node=0") - w.ActivateChainOnAllNodes(chainName, 0) - - // test chain info command - chainID := w.ChainID(0) - - require.NotEmpty(t, chainID) - t.Logf("Chain ID: %s", chainID) - - // test chain list command - out := w.MustRun("chain", "list", "--node=0") - require.Contains(t, out[0], "Total 1 chain(s)") - require.Contains(t, out[4], chainID) - - // test chain list-contracts command - out = w.MustRun("chain", "list-contracts", "--node=0") - require.Regexp(t, `Total \d+ contracts in chain .{64}`, out[0]) - - // test chain list-accounts command - out = w.MustRun("chain", "list-accounts", "--node=0") - require.Contains(t, out[0], "Total 1 account(s)") - agentID := strings.TrimSpace(out[4]) - require.NotEmpty(t, agentID) - t.Logf("Agent ID: %s", agentID) - - // test chain balance command - out = w.MustRun("chain", "balance", agentID, "--node=0") - // check that the chain balance of owner is > 0 - r := regexp.MustCompile(`(?m)base\s+(\d+)$`).FindStringSubmatch(out[len(out)-1]) - require.Len(t, r, 2) - bal, err := strconv.ParseInt(r[1], 10, 64) - require.NoError(t, err) - require.Positive(t, bal) - - // same test, this time calling the view function manually - out = w.MustRun("chain", "call-view", "accounts", "balance", "string", "a", "agentid", agentID, "--node=0") - out = w.MustPipe(out, "decode", "bytes", "bigint") - - r = regexp.MustCompile(`(?m):\s+(\d+)$`).FindStringSubmatch(out[0]) - bal2, err := strconv.ParseInt(r[1], 10, 64) - require.NoError(t, err) - require.EqualValues(t, bal, bal2) - - // test the chainlog - out = w.MustRun("chain", "events", "root", "--node=0") - require.Len(t, out, 1) -} - func checkBalance(t *testing.T, out []string, expected int) { t.Helper() // regex example: base tokens 1000000 @@ -536,46 +479,6 @@ func TestWaspCLIBlockLog(t *testing.T) { require.True(t, found) } -func TestWaspCLIBlobContract(t *testing.T) { - w := newWaspCLITest(t) - - committee, quorum := w.ArgCommitteeConfig(0) - w.MustRun("chain", "deploy", "--chain=chain1", committee, quorum, "--node=0") - w.ActivateChainOnAllNodes("chain1", 0) - - // for running off-ledger requests - w.MustRun("chain", "deposit", "base:10", "--node=0") - - // test chain list-blobs command - out := w.MustRun("chain", "list-blobs", "--node=0") - require.Contains(t, out[0], "Total 0 blob(s)") - - vmtype := vmtypes.WasmTime - description := "inccounter SC" - w.CopyFile(srcFile) - - // test chain store-blob command - w.MustRun( - "chain", "store-blob", - "string", blob.VarFieldProgramBinary, "file", file, - "string", blob.VarFieldVMType, "string", vmtype, - "string", blob.VarFieldProgramDescription, "string", description, - "--node=0", - ) - - out = w.MustRun("chain", "list-blobs", "--node=0") - require.Contains(t, out[0], "Total 1 blob(s)") - - blobHash := regexp.MustCompile(`(?m)([[:alnum:]]+)\s`).FindStringSubmatch(out[4])[1] - require.NotEmpty(t, blobHash) - t.Logf("Blob hash: %s", blobHash) - - // test chain show-blob command - out = w.MustRun("chain", "show-blob", blobHash, "--node=0") - out = w.MustPipe(out, "decode", "string", blob.VarFieldProgramDescription, "string") - require.Contains(t, out[0], description) -} - func TestWaspCLIRejoinChain(t *testing.T) { w := newWaspCLITest(t) From 387f1a12c4654c214e8763d68d6a8a3978ece304 Mon Sep 17 00:00:00 2001 From: Jorge Silva Date: Mon, 1 Jul 2024 17:02:24 +0100 Subject: [PATCH 6/8] go mod tidy --- go.sum | 2 ++ 1 file changed, 2 insertions(+) diff --git a/go.sum b/go.sum index 54880d256f..446a46c488 100644 --- a/go.sum +++ b/go.sum @@ -344,6 +344,8 @@ github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFck github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJn+Ichc= github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= +github.com/iotaledger/go-ethereum v1.14.5-wasp1 h1:MiiLn6VwuESvnHpYNHrp1EvRori3mW7/no121/oQfpk= +github.com/iotaledger/go-ethereum v1.14.5-wasp1/go.mod h1:VEDGGhSxY7IEjn98hJRFXl/uFvpRgbIIf2PpXiyGGgc= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= github.com/iotaledger/hive.go/app v0.0.0-20240319170702-c7591bb5f9f2 h1:7bTc69VqIHJ25dE7Xc/u4mY4GV+UP4PGO4/c5iElTaM= From d2cef66b7b7e9129c6d47eaf4802a32e28e4ad96 Mon Sep 17 00:00:00 2001 From: Jorge Silva Date: Mon, 1 Jul 2024 17:20:22 +0100 Subject: [PATCH 7/8] lint fix --- packages/evm/jsonrpc/tracer_call.go | 17 ++++------------- packages/solo/ledgerl1l2.go | 18 +++++++++--------- packages/testutil/run_heavy_tests_false.go | 1 - packages/trie/trie_kvstore.go | 2 +- packages/vm/core/evm/emulator/emulator_test.go | 11 +++++------ 5 files changed, 19 insertions(+), 30 deletions(-) diff --git a/packages/evm/jsonrpc/tracer_call.go b/packages/evm/jsonrpc/tracer_call.go index bd5e910939..346dca623b 100644 --- a/packages/evm/jsonrpc/tracer_call.go +++ b/packages/evm/jsonrpc/tracer_call.go @@ -54,7 +54,7 @@ func (f CallFrame) TypeString() string { } func (f CallFrame) failed() bool { - return len(f.Error) > 0 && f.revertedSnapshot + return f.Error != "" && f.revertedSnapshot } func (f *CallFrame) processOutput(output []byte, err error, reverted bool) { @@ -85,15 +85,6 @@ func (f *CallFrame) processOutput(output []byte, err error, reverted bool) { } } -type callFrameMarshaling struct { - TypeString string `json:"type"` - Gas hexutil.Uint64 - GasUsed hexutil.Uint64 - Value *hexutil.Big - Input hexutil.Bytes - Output hexutil.Bytes -} - type callTracer struct { callstack []CallFrame config callTracerConfig @@ -128,7 +119,7 @@ func newCallTracer(ctx *tracers.Context, cfg json.RawMessage) (*tracers.Tracer, }, nil } -func newCallTracerObject(ctx *tracers.Context, cfg json.RawMessage) (*callTracer, error) { +func newCallTracerObject(_ *tracers.Context, cfg json.RawMessage) (*callTracer, error) { var config callTracerConfig if cfg != nil { if err := json.Unmarshal(cfg, &config); err != nil { @@ -186,7 +177,7 @@ func (t *callTracer) OnExit(depth int, output []byte, gasUsed uint64, err error, // Pop call. call := t.callstack[size-1] t.callstack = t.callstack[:size-1] - size -= 1 + size-- call.GasUsed = gasUsed call.processOutput(output, err, reverted) @@ -194,7 +185,7 @@ func (t *callTracer) OnExit(depth int, output []byte, gasUsed uint64, err error, t.callstack[size-1].Calls = append(t.callstack[size-1].Calls, call) } -func (t *callTracer) captureEnd(output []byte, gasUsed uint64, err error, reverted bool) { +func (t *callTracer) captureEnd(output []byte, _ uint64, err error, reverted bool) { if len(t.callstack) != 1 { return } diff --git a/packages/solo/ledgerl1l2.go b/packages/solo/ledgerl1l2.go index 5aba5b0843..41e2d44d0b 100644 --- a/packages/solo/ledgerl1l2.go +++ b/packages/solo/ledgerl1l2.go @@ -162,7 +162,7 @@ func (ch *Chain) GetNativeTokenIDByFoundrySN(sn uint32) (iotago.NativeTokenID, e return o.MustNativeTokenID(), nil } -type newNativeTokenParams struct { +type NewNativeTokenParams struct { ch *Chain user *cryptolib.KeyPair sch iotago.TokenScheme @@ -179,8 +179,8 @@ const ( TransferAllowanceToGasBudgetBaseTokens = 1 * isc.Million ) -func (ch *Chain) NewNativeTokenParams(maxSupply interface{}) *newNativeTokenParams { //nolint:revive - ret := &newNativeTokenParams{ +func (ch *Chain) NewNativeTokenParams(maxSupply interface{}) *NewNativeTokenParams { + ret := &NewNativeTokenParams{ ch: ch, sch: &iotago.SimpleTokenScheme{ MaximumSupply: util.ToBigInt(maxSupply), @@ -194,27 +194,27 @@ func (ch *Chain) NewNativeTokenParams(maxSupply interface{}) *newNativeTokenPara return ret } -func (fp *newNativeTokenParams) WithUser(user *cryptolib.KeyPair) *newNativeTokenParams { +func (fp *NewNativeTokenParams) WithUser(user *cryptolib.KeyPair) *NewNativeTokenParams { fp.user = user return fp } -func (fp *newNativeTokenParams) WithTokenScheme(sch iotago.TokenScheme) *newNativeTokenParams { +func (fp *NewNativeTokenParams) WithTokenScheme(sch iotago.TokenScheme) *NewNativeTokenParams { fp.sch = sch return fp } -func (fp *newNativeTokenParams) WithTokenName(tokenName string) *newNativeTokenParams { +func (fp *NewNativeTokenParams) WithTokenName(tokenName string) *NewNativeTokenParams { fp.tokenName = tokenName return fp } -func (fp *newNativeTokenParams) WithTokenSymbol(tokenSymbol string) *newNativeTokenParams { +func (fp *NewNativeTokenParams) WithTokenSymbol(tokenSymbol string) *NewNativeTokenParams { fp.tokenSymbol = tokenSymbol return fp } -func (fp *newNativeTokenParams) WithTokenDecimals(tokenDecimals uint8) *newNativeTokenParams { +func (fp *NewNativeTokenParams) WithTokenDecimals(tokenDecimals uint8) *NewNativeTokenParams { fp.tokenDecimals = tokenDecimals return fp } @@ -224,7 +224,7 @@ const ( allowanceForModifySupply = 1 * isc.Million ) -func (fp *newNativeTokenParams) CreateFoundry() (uint32, iotago.NativeTokenID, error) { +func (fp *NewNativeTokenParams) CreateFoundry() (uint32, iotago.NativeTokenID, error) { par := dict.New() if fp.sch != nil { par.Set(accounts.ParamTokenScheme, codec.EncodeTokenScheme(fp.sch)) diff --git a/packages/testutil/run_heavy_tests_false.go b/packages/testutil/run_heavy_tests_false.go index 7f8f874219..e5680b6c8f 100644 --- a/packages/testutil/run_heavy_tests_false.go +++ b/packages/testutil/run_heavy_tests_false.go @@ -5,7 +5,6 @@ package testutil import "testing" -//nolint:gocritic // its not a test function, but gets called by other test functions func RunHeavy(t *testing.T) { t.Logf("skipping heavy test %s", t.Name()) t.SkipNow() diff --git a/packages/trie/trie_kvstore.go b/packages/trie/trie_kvstore.go index 8add223dbc..23a7f80ff3 100644 --- a/packages/trie/trie_kvstore.go +++ b/packages/trie/trie_kvstore.go @@ -202,7 +202,7 @@ func (tr *TrieUpdatable) delete(triePath []byte) { nodes[i-1].removeChild(nil, idxAsChild) } } - assertf(nodes[0] != nil, "please do not delete root") //nolint:gosec // false positive + assertf(nodes[0] != nil, "please do not delete root") } func (tr *TrieUpdatable) mergeNodeIfNeeded(node *bufferedNode) *bufferedNode { diff --git a/packages/vm/core/evm/emulator/emulator_test.go b/packages/vm/core/evm/emulator/emulator_test.go index 76722fba3c..e94ca60934 100644 --- a/packages/vm/core/evm/emulator/emulator_test.go +++ b/packages/vm/core/evm/emulator/emulator_test.go @@ -18,7 +18,6 @@ import ( "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/accounts/abi" "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/crypto" @@ -230,7 +229,7 @@ func TestBlockchain(t *testing.T) { faucetAddress := crypto.PubkeyToAddress(faucet.PublicKey) faucetSupply := new(big.Int).SetUint64(math.MaxUint64) - genesisAlloc := map[common.Address]core.GenesisAccount{} + genesisAlloc := map[common.Address]types.Account{} ctx := newContext(map[common.Address]*big.Int{ faucetAddress: faucetSupply, }) @@ -306,7 +305,7 @@ func TestBlockchainPersistence(t *testing.T) { faucet, err := crypto.GenerateKey() require.NoError(t, err) - genesisAlloc := map[common.Address]core.GenesisAccount{} + genesisAlloc := map[common.Address]types.Account{} ctx := newContext(map[common.Address]*big.Int{}) Init(ctx.State(), evm.DefaultChainID, ctx.GasLimits(), ctx.Timestamp(), genesisAlloc) @@ -435,7 +434,7 @@ func TestStorageContract(t *testing.T) { faucet, err := crypto.GenerateKey() require.NoError(t, err) - genesisAlloc := map[common.Address]core.GenesisAccount{} + genesisAlloc := map[common.Address]types.Account{} ctx := newContext(map[common.Address]*big.Int{}) Init(ctx.State(), evm.DefaultChainID, ctx.GasLimits(), ctx.Timestamp(), genesisAlloc) @@ -504,7 +503,7 @@ func TestStorageContract(t *testing.T) { } func TestERC20Contract(t *testing.T) { - genesisAlloc := map[common.Address]core.GenesisAccount{} + genesisAlloc := map[common.Address]types.Account{} ctx := newContext(map[common.Address]*big.Int{}) Init(ctx.State(), evm.DefaultChainID, ctx.GasLimits(), ctx.Timestamp(), genesisAlloc) @@ -631,7 +630,7 @@ func initBenchmark(b *testing.B) (*EVMEmulator, []*types.Transaction, *context) faucet, err := crypto.GenerateKey() require.NoError(b, err) - genesisAlloc := map[common.Address]core.GenesisAccount{} + genesisAlloc := map[common.Address]types.Account{} ctx := newContext(map[common.Address]*big.Int{}) Init(ctx.State(), evm.DefaultChainID, ctx.GasLimits(), ctx.Timestamp(), genesisAlloc) From 30ee802835d32839d13c298aa06adc948e670593 Mon Sep 17 00:00:00 2001 From: Jorge Silva Date: Mon, 1 Jul 2024 17:27:56 +0100 Subject: [PATCH 8/8] update linter version in github build workflow --- .github/workflows/build-test.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index c5a5133f08..0c63be3f5c 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -14,7 +14,7 @@ jobs: - name: Set up Go 1.x uses: actions/setup-go@v5 with: - go-version: "1.21" + go-version: "1.22" id: go - name: Check out code into the Go module directory @@ -44,7 +44,7 @@ jobs: - name: install golang uses: actions/setup-go@v5 with: - go-version: "1.21" + go-version: "1.22" - name: install rust-toolchain uses: actions-rs/toolchain@v1.0.7 @@ -88,7 +88,7 @@ jobs: steps: - uses: actions/setup-go@v5 with: - go-version: "1.21" + go-version: "1.22" id: go - name: Check out code into the Go module directory @@ -97,14 +97,14 @@ jobs: - name: Run global scope golangci-lint uses: golangci/golangci-lint-action@v6 with: - version: v1.54.2 + version: v1.56.1 args: --timeout 15m0s - skip-pkg-cache: true + skip-cache: true - name: Run golangci-lint on wasp-cli uses: golangci/golangci-lint-action@v6 with: working-directory: tools/wasp-cli - version: v1.54.2 + version: v1.56.1 args: --timeout 15m0s - skip-pkg-cache: true + skip-cache: true