diff --git a/README.md b/README.md index 6739426..75b1e99 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ There is no need to deploy them yourself. | ----------------- | -------------------- | | Emulator | `0xee82856bf20e2aa6` | | PreviewNet | `0xa0225e7000ac82a9` | -| Testnet/Crescendo | `0x9a0766d93b6608b7` | +| Testnet | `0x9a0766d93b6608b7` | | Sandboxnet | `0xe20612a0776ca4bf` | | Mainnet | `0xf233dcee88fe0abe` | diff --git a/contracts/ExampleToken.cdc b/contracts/ExampleToken.cdc index 9f619ab..f4b41e6 100644 --- a/contracts/ExampleToken.cdc +++ b/contracts/ExampleToken.cdc @@ -99,6 +99,8 @@ access(all) contract ExampleToken: FungibleToken { self.balance = 0.0 } + /// In fungible tokens, there are no specific views for specific vaults, + /// So we can route calls to view functions to the contract views functions access(all) view fun getViews(): [Type] { return ExampleToken.getContractViews(resourceType: nil) } @@ -150,7 +152,6 @@ access(all) contract ExampleToken: FungibleToken { access(all) fun deposit(from: @{FungibleToken.Vault}) { let vault <- from as! @ExampleToken.Vault self.balance = self.balance + vault.balance - vault.balance = 0.0 destroy vault } diff --git a/contracts/FungibleToken.cdc b/contracts/FungibleToken.cdc index db3fc10..eae6f21 100644 --- a/contracts/FungibleToken.cdc +++ b/contracts/FungibleToken.cdc @@ -29,11 +29,7 @@ Each fungible token resource type needs to implement the `Vault` resource interf These interfaces declare pre-conditions and post-conditions that restrict the execution of the functions in the Vault. -They are separate because it gives the user the ability to share -a reference to their Vault that only exposes the fields functions -in one or more of the interfaces. - -It also gives users the ability to make custom resources that implement +It gives users the ability to make custom resources that implement these interfaces to do various things with the tokens. For example, a faucet can be implemented by conforming to the Provider interface. @@ -52,19 +48,32 @@ access(all) contract interface FungibleToken: ViewResolver { // An entitlement for allowing the withdrawal of tokens from a Vault access(all) entitlement Withdraw - /// The event that is emitted when tokens are withdrawn from a Vault - access(all) event Withdrawn(type: String, amount: UFix64, from: Address?, fromUUID: UInt64, withdrawnUUID: UInt64, balanceAfter: UFix64) - - /// The event that is emitted when tokens are deposited to a Vault - access(all) event Deposited(type: String, amount: UFix64, to: Address?, toUUID: UInt64, depositedUUID: UInt64, balanceAfter: UFix64) - - /// Event that is emitted when the global burn method is called with a non-zero balance + /// The event that is emitted when tokens are withdrawn + /// from any Vault that implements the `Vault` interface + access(all) event Withdrawn(type: String, + amount: UFix64, + from: Address?, + fromUUID: UInt64, + withdrawnUUID: UInt64, + balanceAfter: UFix64) + + /// The event that is emitted when tokens are deposited to + /// any Vault that implements the `Vault` interface + access(all) event Deposited(type: String, + amount: UFix64, + to: Address?, + toUUID: UInt64, + depositedUUID: UInt64, + balanceAfter: UFix64) + + /// Event that is emitted when the global `Burner.burn()` method + /// is called with a non-zero balance access(all) event Burned(type: String, amount: UFix64, fromUUID: UInt64) /// Balance /// - /// The interface that provides standard functions\ - /// for getting balance information + /// The interface that provides a standard field + /// for representing balance /// access(all) resource interface Balance { access(all) var balance: UFix64 @@ -88,6 +97,9 @@ access(all) contract interface FungibleToken: ViewResolver { /// Additionally, if the provider is pulling from multiple vaults /// it only needs to check some of the vaults until the desired amount /// is reached, potentially helping with performance. + /// + /// @param amount the amount of tokens requested to potentially withdraw + /// @return Bool Whether or not this amount is available to withdraw /// access(all) view fun isAvailableToWithdraw(amount: UFix64): Bool @@ -98,6 +110,9 @@ access(all) contract interface FungibleToken: ViewResolver { /// So in order to access it, one would either need the object itself /// or an entitled reference with `Withdraw`. /// + /// @param amount the amount of tokens to withdraw from the resource + /// @return The Vault with the withdrawn tokens + /// access(Withdraw) fun withdraw(amount: UFix64): @{Vault} { post { // `result` refers to the return value @@ -121,21 +136,30 @@ access(all) contract interface FungibleToken: ViewResolver { /// deposit takes a Vault and deposits it into the implementing resource type /// + /// @param from the Vault that contains the tokens to deposit + /// access(all) fun deposit(from: @{Vault}) /// getSupportedVaultTypes returns a dictionary of Vault types /// and whether the type is currently supported by this Receiver + /// + /// @return {Type: Bool} A dictionary that indicates the supported types + /// If a type is not supported, it should be `nil`, not false + /// access(all) view fun getSupportedVaultTypes(): {Type: Bool} /// Returns whether or not the given type is accepted by the Receiver /// A vault that can accept any type should just return true by default + /// + /// @param type The type to query about + /// @return Bool Whether or not the vault type is supported + /// access(all) view fun isSupportedVaultType(type: Type): Bool } /// Vault - /// - /// Ideally, this interface would also conform to Receiver, Balance, Transferor, Provider, and Resolver - /// but that is not supported yet + /// Conforms to all other interfaces so that implementations + /// only have to conform to `Vault` /// access(all) resource interface Vault: Receiver, Provider, Balance, ViewResolver.Resolver, Burner.Burnable { @@ -159,10 +183,11 @@ access(all) contract interface FungibleToken: ViewResolver { self.balance = 0.0 } - /// getSupportedVaultTypes returns a dictionary of vault types and whether this receiver accepts the indexed type + /// getSupportedVaultTypes /// The default implementation is included here because vaults are expected /// to only accepted their own type, so they have no need to provide an implementation /// for this function + /// access(all) view fun getSupportedVaultTypes(): {Type: Bool} { // Below check is implemented to make sure that run-time type would // only get returned when the parent resource conforms with `FungibleToken.Vault`. @@ -231,6 +256,7 @@ access(all) contract interface FungibleToken: ViewResolver { /// createEmptyVault allows any user to create a new Vault that has a zero balance /// + /// @return A Vault of the same type that has a balance of zero access(all) fun createEmptyVault(): @{Vault} { post { result.balance == 0.0: "The newly created Vault must have zero balance" @@ -241,6 +267,7 @@ access(all) contract interface FungibleToken: ViewResolver { /// createEmptyVault allows any user to create a new Vault that has a zero balance /// + /// @return A Vault of the requested type that has a balance of zero access(all) fun createEmptyVault(vaultType: Type): @{FungibleToken.Vault} { post { result.getType() == vaultType: "The returned vault does not match the desired type" diff --git a/contracts/test/MaliciousToken.cdc b/contracts/test/MaliciousToken.cdc new file mode 100644 index 0000000..b0f0b9a --- /dev/null +++ b/contracts/test/MaliciousToken.cdc @@ -0,0 +1,212 @@ +import "FungibleToken" +import "MetadataViews" +import "FungibleTokenMetadataViews" +import "ExampleToken" + +/// This is a contract that returns metadata for a different token +/// type to try to get a user who is transferring tokens +/// via the generic transactions to transfer the wrong tokens + +access(all) contract MaliciousToken: FungibleToken { + + /// The event that is emitted when new tokens are minted + access(all) event TokensMinted(amount: UFix64, type: String) + + /// Total supply of MaliciousTokens in existence + access(all) var totalSupply: UFix64 + + /// Storage and Public Paths + access(all) let VaultStoragePath: StoragePath + access(all) let VaultPublicPath: PublicPath + access(all) let ReceiverPublicPath: PublicPath + access(all) let AdminStoragePath: StoragePath + + access(all) view fun getContractViews(resourceType: Type?): [Type] { + return [ + Type(), + Type(), + Type() + ] + } + + access(all) fun resolveContractView(resourceType: Type?, viewType: Type): AnyStruct? { + switch viewType { + case Type(): + return FungibleTokenMetadataViews.FTView( + ftDisplay: self.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTDisplay?, + ftVaultData: self.resolveContractView(resourceType: nil, viewType: Type()) as! FungibleTokenMetadataViews.FTVaultData? + ) + case Type(): + return FungibleTokenMetadataViews.FTVaultData( + storagePath: /storage/exampleTokenVault, + receiverPath: /public/exampleTokenReceiver, + metadataPath: /public/exampleTokenVault, + receiverLinkedType: Type<&ExampleToken.Vault>(), + metadataLinkedType: Type<&ExampleToken.Vault>(), + createEmptyVaultFunction: (fun(): @{FungibleToken.Vault} { + return <-MaliciousToken.createEmptyVault(vaultType: Type<@MaliciousToken.Vault>()) + }) + ) + case Type(): + return FungibleTokenMetadataViews.TotalSupply( + totalSupply: MaliciousToken.totalSupply + ) + } + return nil + } + + /// Vault + /// + /// Each user stores an instance of only the Vault in their storage + /// The functions in the Vault and governed by the pre and post conditions + /// in FungibleToken when they are called. + /// The checks happen at runtime whenever a function is called. + /// + /// Resources can only be created in the context of the contract that they + /// are defined in, so there is no way for a malicious user to create Vaults + /// out of thin air. A special Minter resource needs to be defined to mint + /// new tokens. + /// + access(all) resource Vault: FungibleToken.Vault { + + /// The total balance of this vault + access(all) var balance: UFix64 + + // initialize the balance at resource creation time + init(balance: UFix64) { + self.balance = balance + } + + /// Called when a fungible token is burned via the `Burner.burn()` method + access(contract) fun burnCallback() { + if self.balance > 0.0 { + MaliciousToken.totalSupply = MaliciousToken.totalSupply - self.balance + } + self.balance = 0.0 + } + + /// In fungible tokens, there are no specific views for specific vaults, + /// So we can route calls to view functions to the contract views functions + access(all) view fun getViews(): [Type] { + return MaliciousToken.getContractViews(resourceType: nil) + } + + access(all) fun resolveView(_ view: Type): AnyStruct? { + return MaliciousToken.resolveContractView(resourceType: nil, viewType: view) + } + + /// getSupportedVaultTypes optionally returns a list of vault types that this receiver accepts + access(all) view fun getSupportedVaultTypes(): {Type: Bool} { + let supportedTypes: {Type: Bool} = {} + supportedTypes[self.getType()] = true + return supportedTypes + } + + access(all) view fun isSupportedVaultType(type: Type): Bool { + return self.getSupportedVaultTypes()[type] ?? false + } + + /// Asks if the amount can be withdrawn from this vault + access(all) view fun isAvailableToWithdraw(amount: UFix64): Bool { + return amount <= self.balance + } + + /// withdraw + /// + /// Function that takes an amount as an argument + /// and withdraws that amount from the Vault. + /// + /// It creates a new temporary Vault that is used to hold + /// the tokens that are being transferred. It returns the newly + /// created Vault to the context that called so it can be deposited + /// elsewhere. + /// + access(FungibleToken.Withdraw) fun withdraw(amount: UFix64): @MaliciousToken.Vault { + self.balance = self.balance - amount + return <-create Vault(balance: amount) + } + + /// deposit + /// + /// Function that takes a Vault object as an argument and adds + /// its balance to the balance of the owners Vault. + /// + /// It is allowed to destroy the sent Vault because the Vault + /// was a temporary holder of the tokens. The Vault's balance has + /// been consumed and therefore can be destroyed. + /// + access(all) fun deposit(from: @{FungibleToken.Vault}) { + let vault <- from as! @MaliciousToken.Vault + self.balance = self.balance + vault.balance + destroy vault + } + + /// createEmptyVault + /// + /// Function that creates a new Vault with a balance of zero + /// and returns it to the calling context. A user must call this function + /// and store the returned Vault in their storage in order to allow their + /// account to be able to receive deposits of this token type. + /// + access(all) fun createEmptyVault(): @MaliciousToken.Vault { + return <-create Vault(balance: 0.0) + } + } + + /// Minter + /// + /// Resource object that token admin accounts can hold to mint new tokens. + /// + access(all) resource Minter { + /// mintTokens + /// + /// Function that mints new tokens, adds them to the total supply, + /// and returns them to the calling context. + /// + access(all) fun mintTokens(amount: UFix64): @MaliciousToken.Vault { + MaliciousToken.totalSupply = MaliciousToken.totalSupply + amount + let vault <-create Vault(balance: amount) + emit TokensMinted(amount: amount, type: vault.getType().identifier) + return <-vault + } + } + + /// createEmptyVault + /// + /// Function that creates a new Vault with a balance of zero + /// and returns it to the calling context. A user must call this function + /// and store the returned Vault in their storage in order to allow their + /// account to be able to receive deposits of this token type. + /// + access(all) fun createEmptyVault(vaultType: Type): @MaliciousToken.Vault { + return <- create Vault(balance: 0.0) + } + + init() { + self.totalSupply = 1000.0 + + self.VaultStoragePath = /storage/maliciousTokenVault + self.VaultPublicPath = /public/maliciousTokenVault + self.ReceiverPublicPath = /public/maliciousTokenReceiver + self.AdminStoragePath = /storage/maliciousTokenAdmin + + // Create the Vault with the total supply of tokens and save it in storage + // + let vault <- create Vault(balance: self.totalSupply) + emit TokensMinted(amount: vault.balance, type: vault.getType().identifier) + + // Create a public capability to the stored Vault that exposes + // the `deposit` method and getAcceptedTypes method through the `Receiver` interface + // and the `balance` method through the `Balance` interface + // + let maliciousTokenCap = self.account.capabilities.storage.issue<&MaliciousToken.Vault>(self.VaultStoragePath) + self.account.capabilities.publish(maliciousTokenCap, at: self.VaultPublicPath) + let receiverCap = self.account.capabilities.storage.issue<&MaliciousToken.Vault>(self.VaultStoragePath) + self.account.capabilities.publish(receiverCap, at: self.ReceiverPublicPath) + + self.account.storage.save(<-vault, to: /storage/maliciousTokenVault) + + let admin <- create Minter() + self.account.storage.save(<-admin, to: self.AdminStoragePath) + } +} diff --git a/flow.json b/flow.json index 79b80a1..97c48c7 100644 --- a/flow.json +++ b/flow.json @@ -37,6 +37,12 @@ "testing": "0x0000000000000007" } }, + "MaliciousToken": { + "source": "./contracts/test/MaliciousToken.cdc", + "aliases": { + "testing": "0x0000000000000007" + } + }, "PrivateReceiverForwarder": { "source": "./contracts/utility/PrivateReceiverForwarder.cdc", "aliases": { @@ -56,7 +62,7 @@ "source": "./contracts/utility/ViewResolver.cdc", "aliases": { "emulator": "0xf8d6e0586b0a20c7", - "testing": "0x0000000000000007", + "testing": "0x0000000000000001", "previewnet": "0xb6763b4399a888c8", "mainnet": "0x1d7e57aa55817448", "testnet": "0x631e88ae7f1d7c20" @@ -75,7 +81,7 @@ "source": "./contracts/utility/NonFungibleToken.cdc", "aliases": { "emulator": "0xf8d6e0586b0a20c7", - "testing": "0x0000000000000007", + "testing": "0x0000000000000001", "previewnet": "0xb6763b4399a888c8", "mainnet": "0x1d7e57aa55817448", "testnet": "0x631e88ae7f1d7c20" @@ -85,7 +91,7 @@ "source": "./contracts/utility/MetadataViews.cdc", "aliases": { "emulator": "0xf8d6e0586b0a20c7", - "testing": "0x0000000000000007", + "testing": "0x0000000000000001", "previewnet": "0xb6763b4399a888c8", "mainnet": "0x1d7e57aa55817448", "testnet": "0x631e88ae7f1d7c20" @@ -94,6 +100,7 @@ "FlowToken": { "source": "./contracts/utility/FlowToken.cdc", "aliases": { + "testing": "0x0000000000000003", "emulator": "0x0ae53cb6e3f42a79", "testnet": "0x7e60df042a9c0868", "mainnet": "0x1654653399040a61" diff --git a/lib/go/contracts/internal/assets/assets.go b/lib/go/contracts/internal/assets/assets.go index 9ba4c89..c6b840a 100644 --- a/lib/go/contracts/internal/assets/assets.go +++ b/lib/go/contracts/internal/assets/assets.go @@ -1,9 +1,10 @@ // Code generated by go-bindata. DO NOT EDIT. // sources: -// ../../../contracts/ExampleToken.cdc (9.718kB) -// ../../../contracts/FungibleToken.cdc (10.788kB) +// ../../../contracts/ExampleToken.cdc (9.851kB) +// ../../../contracts/FungibleToken.cdc (11.796kB) // ../../../contracts/FungibleTokenMetadataViews.cdc (6.596kB) // ../../../contracts/FungibleTokenSwitchboard.cdc (17.944kB) +// ../../../contracts/test/MaliciousToken.cdc (8.868kB) // ../../../contracts/utility/Burner.cdc (1.997kB) // ../../../contracts/utility/MetadataViews.cdc (25.493kB) // ../../../contracts/utility/NonFungibleToken.cdc (10.577kB) @@ -79,7 +80,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _exampletokenCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x5a\x5f\x6f\x1b\x37\x12\x7f\xf7\xa7\x98\xea\x80\x3b\x09\xb5\x65\xa7\x4d\x72\xad\x10\xc7\x75\xd2\x18\x77\x40\x03\x04\x89\x9b\x3e\x04\x41\x4c\xed\x8e\xb4\x3c\x73\xc9\x05\xc9\x95\xac\x1a\xf9\xee\x87\xe1\x9f\xd5\x72\xb5\x6b\xcb\x6e\x0e\x38\x3d\x34\xd6\x2e\x67\x38\x9c\xf9\xcd\x6f\x66\xa8\xf2\xb2\x52\xda\xc2\xe8\xa2\x96\x4b\x3e\x17\x78\xa9\xae\x51\x8e\x0e\xe2\xe3\xb7\x68\x59\xce\x2c\xfb\xc8\x71\x6d\xb6\x8f\x93\xd5\x9d\x35\x07\x2c\xcb\xd0\x98\x31\x13\x62\x02\x99\x92\x56\xb3\xcc\xc2\x9b\x1b\x56\x56\x41\x60\x06\x89\x3c\xdc\x1e\x1c\x00\x00\x1c\x1f\x1f\xc3\x65\x81\x80\x2b\x94\x16\x6c\xc1\x2c\x70\x03\x58\x72\x6b\x31\x87\x75\x81\x12\x24\xae\xc1\x92\x8c\x01\xa6\x11\x4a\x2e\x2d\xe6\x4e\xb8\xbd\xa9\x57\xe0\x74\x9b\xb7\x6e\xc9\x98\x95\xaa\x96\x76\x06\xbf\x5f\xf0\x9b\xe7\x4f\x0f\xc1\x6e\x2a\x9c\xc1\x07\xab\xb9\x5c\x4e\x5a\xdb\x2b\xcb\x04\x98\xba\xaa\xc4\x06\xd4\x22\xb1\xda\x00\x97\x80\x37\xdc\x58\x94\x19\xee\x6c\xba\x62\x1a\x2c\x89\x7f\x70\xd2\x71\xab\xad\xee\x0f\x56\x69\xb6\x44\x60\x32\x87\x77\xf5\x5c\xf0\x0c\xde\x31\x5b\x98\x1d\x4d\x02\x2d\x7c\x64\xb5\xb0\x41\x82\x56\xcd\xa0\xf5\x65\x58\xc2\xeb\xf5\x02\xdb\xbf\x7b\xd7\xbf\xc7\x0c\xf9\x0a\xf5\x03\x44\xce\xf3\x92\xcb\x41\xa3\x76\x3d\xc2\x71\x0d\x8b\x5a\xc2\x12\xed\xeb\x80\x03\x87\x91\xb1\x46\xa3\x6a\x9d\xe1\xa5\x8b\x02\xfd\xf7\x6c\x32\x83\x4f\xf4\xc7\x67\xb8\x75\x8a\xe8\xa3\xd1\xd6\x5a\xc2\xa7\xe6\x01\x7d\x68\xd1\x8b\x61\xfc\x4d\x2f\x2e\xe9\xdf\x97\xe3\xc9\xe1\x03\xc5\x7e\xe5\xa6\x12\x6c\xf3\x08\x49\xe7\xfa\x5f\x99\x65\x0f\x96\xbd\xdc\x02\xe6\xe5\x78\xd2\x88\x7e\x76\x7f\x7d\xdd\x75\x29\x79\x93\x9c\x27\x56\xd8\xf6\x68\x9f\x43\x0f\x9d\xff\xb7\x0f\x26\x33\x38\x97\x9b\x0f\x56\xd7\x99\x3d\x6b\x39\xd9\xac\xb9\xcd\x8a\x66\x71\xeb\x0d\x7d\x32\x66\x70\x7f\x97\xcf\x12\xd9\x56\x08\xef\x15\x1e\xef\x48\xd2\x67\x61\x43\x50\x66\x60\x50\x2c\xa6\xf7\x1f\x5d\x72\xd1\x3d\xf8\xbe\x51\x9f\x00\x33\xdf\xdd\x6d\x69\x58\x7c\x76\x38\x60\x6d\x03\x84\xff\x9d\xbd\x6d\xac\xed\x61\x71\xb3\xfc\x6c\xc7\xe4\xc9\x63\x02\xbd\x75\xd7\x6e\xac\x89\x22\x4a\xcc\x39\x83\x53\x48\xe5\xde\xd2\xd3\xfe\x10\x3b\xc7\x71\x81\xb3\x8e\xc8\xbf\x2e\x2f\xdf\x5d\x70\x81\xc3\x52\xb5\x16\x33\x18\x15\xd6\x56\x66\x76\x7c\xcc\x8c\x41\x6b\xa6\x6b\x9c\x1b\x6e\xf1\x88\x54\x9a\x69\xa6\xca\xe3\x67\x8b\xe7\x3f\xfc\xfc\x34\x3b\xc9\xfe\xc9\x7e\xca\xf2\xfc\xf9\xd3\x1f\xe7\x4f\xb2\x9f\x7e\x38\xe9\xbc\x60\xcf\x9e\x65\xf3\x27\xd9\xcf\x3f\x3e\xff\x72\x21\xd4\xfa\xcb\x1f\x4a\xe7\x25\xd3\xd7\x53\xb3\x5a\x8e\x7a\x6d\x98\xf4\xa3\xc0\x79\xc0\x47\x73\xc4\x4b\xb6\xc4\x63\xb3\x5a\x7e\x7f\x53\x8a\x5d\x2d\x93\x61\x17\x9a\x7e\x1f\x9a\xf1\x27\xf7\xfa\xf3\xae\xe8\x3e\x99\x16\xa2\xd7\xef\x53\xc9\x4a\xb2\x39\x94\xbc\x46\x91\xaf\xa3\xa3\xfe\xc3\x9a\x4d\x39\x57\x14\x86\x37\x17\x97\x03\x4b\x72\x34\x99\xe6\x95\xe5\x4a\xce\x60\x74\x59\x70\x43\x2c\xe6\x55\xbb\x52\x4e\x45\xbe\x36\x98\x03\x33\xc0\xa8\xc2\xfa\xfd\xad\x82\x02\x45\x05\x1b\x55\x43\x8e\x2b\x14\xca\xfd\xad\x41\xe2\x8d\x85\x8b\x4b\xf8\x9b\x92\x14\xa9\xe9\xc0\xbe\x78\x63\x51\x4b\x26\x7e\x7f\xff\x5b\x17\x5b\x6f\xb6\xaf\xc6\x0d\x80\xc2\xbe\x47\x0b\x3b\x55\x72\x41\x8a\x95\x5e\x8e\x06\x82\x2c\xd4\x52\x99\x59\x08\xd5\x80\x6b\x54\xc6\x99\x30\xb3\x0e\xa1\xb6\x3f\x23\xbb\xa6\xde\x46\x8f\xf6\x32\x30\x2c\x76\xa0\x26\xfb\xbe\xcc\x85\xca\xae\xb3\x82\x71\x39\xda\x85\x03\xb8\x02\xd2\x7d\xf2\xa8\x9c\x6f\x53\xce\x23\x19\x3e\x6a\xe8\x47\x9e\x69\xb7\x14\x8e\x38\xbb\xed\x4f\xbf\x8b\x75\x6c\x61\xb6\x82\xbb\x5d\xcd\x50\x96\x7a\x0b\xbb\x7b\xde\x27\x17\xb7\xfc\x8d\xcb\x6b\xcc\x5b\xa4\xfd\xf7\x76\xab\xe8\x75\xed\x74\x03\xdd\xcd\xff\x92\x92\x4c\x23\xb3\xf8\xa6\xac\xec\xc6\x2d\xbc\xa8\x65\xe6\x93\x6c\xbc\xa8\xe5\x78\x32\x83\x5f\x6e\x93\xa0\x78\x7d\x5f\xef\xc0\x63\x08\xe5\x8b\xa3\xc4\x8c\xee\x46\xe3\x15\xfd\xb7\x65\xf5\x2f\xbd\x56\x0f\x40\x72\xf7\xf1\x23\x30\x99\xb6\x4d\x8f\xc1\x64\x4b\x43\x3f\x26\x93\x56\x3e\x39\x60\xeb\xcd\x1d\x67\xf9\xda\xed\x62\x25\x17\xed\xae\x8e\x26\x02\xe7\xaa\xf8\xad\x79\xfa\x86\x65\x05\x11\xa2\x76\x79\x81\x8e\x14\xb9\x34\x96\xc9\x0c\x69\x26\x51\x52\x6c\xc0\x16\xe8\xc5\x69\x28\xb1\x05\x72\x1d\xb3\x28\x19\xa5\x16\x01\x14\x26\x2c\x0b\x32\x34\x82\x2c\xd5\x0a\xb5\xc4\x1c\xe6\x5e\x5b\xa5\xfd\x68\x52\x29\x63\x69\x6c\xcb\xb9\x13\x6c\xd4\xf1\x8e\x3f\xfd\x40\x66\x0b\xdc\xb8\x51\x2c\x63\x42\x60\x3e\x4d\x76\xcf\x0a\xcc\xae\x0d\x14\xac\xaa\x50\x02\xb3\xa0\x6b\x69\x79\x89\x4e\x14\x57\xa8\x81\x35\x16\x52\x15\xe8\xe8\x68\x74\xbd\x0f\x2d\x13\xad\x90\xfe\xfc\x73\x0c\x09\x90\xc7\x93\xd1\xa4\x49\x95\x41\x2d\x9a\xaf\x6e\xf0\x74\x73\x24\x99\xd9\xa8\x23\x73\x73\x5c\x70\xe9\x84\x0f\xc1\x28\x7a\xaf\x91\x4c\x90\x0a\xd6\x6c\x03\x0b\x45\xb6\x95\x4c\xf0\x8c\xab\xda\xf8\x70\x58\x15\xf6\xf4\x5e\xdc\xba\x46\xd5\x61\x5b\x2e\x81\x71\x3d\x85\x73\x30\x15\x12\xfd\x83\x1b\x3f\x35\xc4\xa6\x0f\x24\x62\x6e\x48\xd3\x7c\x6b\x83\x55\x6e\x90\x6d\xd4\x6d\x87\xdc\xd4\x15\xed\x41\xa0\x51\xe8\x4c\xe9\x0c\xd4\x3e\x07\xe3\x58\xdd\x8e\x88\xc3\x2e\xcc\x99\x88\x60\xb2\x54\x8f\x57\x0d\x0e\xbb\xdb\xd0\x50\x1b\x56\xa7\x03\xad\x57\x0a\x5c\x72\xcb\x99\xe0\x7f\xa2\x73\x7a\x54\x4c\xa1\x8e\x06\x3a\x97\x51\x80\x29\xf2\x8d\x2c\x09\x8e\x3b\x9a\x27\x1d\x6a\x72\xac\x1c\x55\x9e\x46\xe5\xad\x0c\x4b\x8e\xf7\xda\x81\xc7\xa3\x92\xf5\xb4\x18\xf3\xda\xa1\x7d\xc5\x99\x33\xf5\xea\x15\x7d\xd7\x53\x7a\x3c\x9e\x5c\x11\x27\x17\x2a\xef\x3a\x21\xa2\xc8\x4f\x5e\xb4\x96\xb6\x99\xb3\xec\x7a\xdc\xb5\x96\x2f\x52\x83\x5f\xc2\xc9\xf4\xa4\x87\x6c\x87\xb8\x04\x4e\x87\x5f\x1d\x25\xaa\x13\x95\x5f\xef\x72\xd9\xc9\xf4\xa4\xcf\x5d\x43\x43\xba\x1f\xce\xfb\x26\xf1\x16\x8f\x25\x46\xde\x33\xd9\x4b\x2e\x26\xf7\x19\xd0\x1a\x69\xdd\x7c\xf4\xc5\x99\x74\xf7\xcc\x3a\x64\xce\x83\xe7\x2d\xfa\xab\xd7\x42\x42\xd4\x12\x2d\xf9\x5f\x69\x8b\xf9\xc7\x58\xf3\x0c\x28\xd7\xcb\x32\x21\x36\xc1\x06\x03\x0c\x04\x37\x8e\x03\x5c\x2a\xb9\xdb\x25\x13\x99\x87\x9b\xa6\x6b\x70\x07\xaf\x02\x73\xdc\x15\x89\x9e\x7d\x29\x2e\xb7\xde\xea\x57\x4a\x89\x6e\x1d\xa7\xc9\xc1\x44\x29\x27\xd0\x59\x7e\x0a\xb7\x1d\xac\x24\xab\x3f\x39\xe8\x2c\xd1\x6d\x36\x9e\x7c\x86\x53\xb0\xba\xc6\x3e\x97\xa7\x82\x7b\x03\x8c\x9b\xdd\x53\x8d\x6d\xfb\x7e\x82\x0c\xed\x8f\x72\x34\xae\xd7\x2f\x9f\xac\x43\xeb\xd9\x19\x2c\x98\x30\x83\x04\x71\x6e\xae\x0d\x65\x29\x65\xbf\xbf\x0e\x74\xe5\x64\x8e\xb0\xe6\xb6\xc8\x35\x5b\x4b\x58\x68\x55\xde\xcb\x89\xdb\x03\x9d\xaf\x18\x17\xcc\xd1\xee\x1f\x41\x47\xe7\xa6\xf1\xce\x53\x05\x2b\x5e\x9c\xf6\xa7\x77\xc7\xfe\x68\x65\xfb\x61\xb2\x20\x76\x80\x01\x78\xec\xda\xf7\x0e\x61\x17\x3f\x5d\x31\xbd\xac\x4b\x94\x36\x11\xa4\xb2\x1f\xb5\x07\xd8\x06\xa1\xe0\x8f\x50\x66\xa6\x83\x5b\xff\xdb\x86\xd2\x48\xb9\xe0\xea\x17\x96\x95\xd2\x4c\x6f\x42\xc7\x11\x6f\x73\xdd\xa0\x47\xa3\x9d\x12\x79\xa2\xc1\x16\x18\x6f\x76\xbd\x01\x1a\x61\x8e\x5c\x2e\xc1\x6a\x26\xcd\x02\xb5\xc6\x7c\x4a\x1b\xc5\xa4\x23\x09\x89\xeb\x56\x17\x46\x7a\x62\x57\x10\xb6\x55\x49\x6f\xe0\x34\xfb\x2e\x83\xaa\x3e\x6f\x10\x90\x63\xa5\x0c\x8f\x77\xc9\x51\x17\x0a\x83\x6b\xea\x0c\xfa\x0f\x1e\x40\x91\x96\xde\x88\x03\x4f\x6c\xeb\x41\x54\xf4\x34\xcd\x77\x97\xbf\xe4\xeb\x51\x08\x50\x1f\xaa\x5e\x1c\xb5\xbb\x94\x6d\x91\xf5\x12\x83\x6c\x17\x5c\xf0\x30\x74\x05\x37\xab\xf9\x7f\x30\xeb\x42\xcc\xc1\x8a\xe5\xb9\x49\xd4\x70\x6b\x9a\x36\x21\x44\x27\x69\x47\x10\xd4\x5a\xa2\x36\x7b\x20\x8e\x1b\x60\x42\xa8\xb5\x47\x54\x8e\xc6\x6a\xe5\x7b\x59\x43\xdb\x7b\xd3\xe6\x98\xb1\xda\xe0\x16\xc4\x69\x4e\x91\xc9\x2d\xb0\x12\x2c\x51\x47\x4b\x42\x13\xe6\x3a\x27\x27\xfb\x8f\xad\xed\x05\x4b\xcf\x35\x47\x94\x84\x33\x53\x97\x98\xbb\xa3\xbb\x9e\x72\xa1\x5c\x6f\x1c\x40\xe6\x2c\x8c\x1d\xee\x00\x9c\x9a\xa2\x18\x02\x32\xa6\x1c\x1c\x1a\xe6\xba\x4d\x08\x55\x01\x5f\x82\x5e\x1c\xf9\xe4\x65\xe6\xbb\x3e\xac\xed\x8d\xb4\xef\xbd\xbe\xde\xde\x23\x79\xd3\x69\x37\xc0\x5f\xfd\xb8\x90\xa4\x5c\xda\xc1\x5d\x77\xbc\xdc\x13\x80\x29\xdd\xf8\x58\x53\xb6\x01\x6b\xe3\xe9\x4f\xd4\x6a\x87\xea\x22\x81\xf0\x2d\x3f\x30\x21\x88\x6a\x02\x4f\x50\x03\xef\x3a\xfe\xb2\x36\x9e\x2f\x7c\x4d\x88\xb3\xca\x8e\x46\x37\xa8\x39\x4d\x5e\x77\xc3\x3f\xdd\xe1\x8c\x1e\x28\x9d\xfb\x61\xc2\x81\xd7\xbf\x4f\x35\x66\x99\x23\x5f\x3f\x25\x30\xdf\xc5\xc6\x1e\x22\xc2\xc2\x34\xdd\xbb\xef\x70\xa9\x06\xee\x87\xab\x9d\x79\x7e\x2f\x36\xba\x87\x5c\x4e\xa6\x27\xdd\xd9\xb7\x35\xe8\xfa\x29\x68\x70\xae\x8b\xfc\xe1\x99\xc5\x1d\x87\xe5\x25\x0d\x53\xde\x13\x7e\xee\xa3\xdc\x8c\xb3\xd2\xc3\x66\xa4\x30\x84\xdd\x26\x5e\x26\x35\xfe\x77\xbd\x3d\x11\x47\x02\xa6\xb5\xf1\xa1\x23\x37\x8a\x5f\x19\x71\x64\x5b\x3f\x1f\x1e\x0e\xe2\xae\x2d\xd1\x45\xde\x5e\x11\xdc\x9a\xfe\x98\xba\xf2\x98\x01\xe4\xfb\xbe\x7a\xd3\x26\x9b\xfd\x4a\x0e\x7d\xb0\xe4\x03\xbf\xcd\xfa\x7f\xe3\x6f\xb3\x9e\x5c\x9a\x86\x74\xca\x73\x94\x96\x2f\x38\xea\x49\x3f\x30\xbb\x2c\xd3\xc1\x60\x2f\xcf\xb4\xd1\xf8\x97\xf8\xe5\xdb\x72\xcb\xb7\xe5\x95\x6f\xc0\x29\x7d\xe9\xd5\xcb\x25\x9d\xbb\xc1\x7b\x01\xd9\x44\x0f\xee\xe1\x95\x10\x49\x77\x6f\xd0\xae\x7a\xae\x58\xa5\x28\x7e\x72\x72\x42\x95\x28\x5d\xd2\xbd\x51\x86\x53\x38\x0e\xce\x8b\x57\xff\xce\xc2\xb4\x06\xf5\x5d\x0c\x93\x64\xe5\xbe\xdd\x27\xb8\x7b\x19\x3d\x20\x1b\x17\xa6\xe2\xdd\x9f\xdb\x87\x4c\x76\xeb\x20\xb9\x97\x79\xed\x9d\xb9\xbd\xf1\x73\xd0\xed\x52\x94\x0b\x77\xf8\xbf\x29\x08\x6d\x6c\x85\x04\x5c\x2e\x93\xbb\x44\xaf\xf2\xa0\x2f\xeb\x07\x82\xd6\x8d\xc9\x36\x61\x87\x93\x3f\xe9\x25\xf6\xe1\x80\x9e\xe3\x32\xf0\xbe\x85\x8c\x55\x6c\xce\x05\xb7\x9b\x98\x85\x2e\x93\xf2\xf6\x30\x82\x37\x95\x32\xd8\x26\x7f\x7f\x2f\x14\x72\x21\xde\x08\xf9\xbb\x52\xb4\xe7\x6e\x72\x0f\x33\x6f\x7c\x67\x0b\xad\xea\xa5\x77\xec\x55\x0c\xe2\x15\xb8\x72\xb3\x60\x59\xdb\x7f\xb1\x25\x84\xab\x70\xc6\xab\x5e\x25\xaf\xe2\xcb\x3e\x1d\x49\x0c\xda\x08\x78\xcd\xaa\xd8\xb7\x85\x44\x9f\x36\x2e\xe0\x68\xa6\x21\x9c\x53\x6e\x4c\x3d\xf0\x2b\x43\x6f\x92\x4c\x52\x40\xf6\xea\x76\x2e\x37\xc5\xb8\x63\xcf\x21\x30\xdb\xff\xc3\xca\x24\x39\x46\xbc\x1a\xf9\x7f\x38\x42\xcb\x96\x96\xf9\xbb\x59\x3c\x39\xe8\x57\x1a\x6d\xa4\x44\x1a\x87\x82\x74\x08\x56\xcd\xee\xa0\x9a\x96\x2e\x72\x87\xef\x7b\xb6\x99\xe5\x5b\x97\xf1\xc0\x29\x3a\x1b\x3a\x61\xbf\x61\x2f\x81\x44\x26\xfd\x7a\xf0\xdf\x00\x00\x00\xff\xff\x9d\x72\xd1\xe7\xf6\x25\x00\x00" +var _exampletokenCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x5a\x6f\x6f\x1b\x37\xd2\x7f\xef\x4f\x31\xf5\x03\x3c\x27\xa1\xb6\xec\xb4\x49\xae\x15\xe2\xb8\x4e\x1a\xe3\x0a\x34\x40\x90\xb8\xe9\x8b\x20\x88\xa9\xdd\x91\xc4\x33\x97\x5c\x90\x5c\xc9\xaa\x91\xef\x7e\x18\xfe\xd9\x5d\xae\x76\x2d\xd9\xcd\x01\xa7\x17\xb1\xc4\xe5\x0c\x87\x33\xbf\xf9\x71\x86\x1b\x5e\x94\x4a\x5b\x38\xbc\xac\xe4\x82\xcf\x04\x5e\xa9\x1b\x94\x87\x07\x71\xf8\x2d\x5a\x96\x33\xcb\x3e\x72\x5c\x9b\x66\x38\x99\xdd\x99\x73\xc0\xb2\x0c\x8d\x19\x31\x21\xc6\x90\x29\x69\x35\xcb\x2c\xbc\xb9\x65\x45\x19\x04\xa6\x90\xc8\xc3\xdd\xc1\x01\x00\xc0\xc9\xc9\x09\x5c\x2d\x11\x70\x85\xd2\x82\x5d\x32\x0b\xdc\x00\x16\xdc\x5a\xcc\x61\xbd\x44\x09\x12\xd7\x60\x49\xc6\x00\xd3\x08\x05\x97\x16\x73\x27\xdc\x5e\xd4\x2b\x70\xba\xcd\x5b\x37\x65\xc4\x0a\x55\x49\x3b\x85\x3f\x2e\xf9\xed\xf3\xa7\x47\x60\x37\x25\x4e\xe1\x83\xd5\x5c\x2e\xc6\xad\xe5\x95\x65\x02\x4c\x55\x96\x62\x03\x6a\x9e\x58\x6d\x80\x4b\xc0\x5b\x6e\x2c\xca\x0c\xb7\x16\x5d\x31\x0d\x96\xc4\x3f\x38\xe9\xb8\x54\xa3\xfb\x83\x55\x9a\x2d\x10\x98\xcc\xe1\x5d\x35\x13\x3c\x83\x77\xcc\x2e\xcd\x96\x26\x81\x16\x3e\xb2\x4a\xd8\x20\x41\xb3\xa6\xd0\xfa\x31\x2c\xe1\xf5\x7a\x81\xe6\x7b\xef\xfc\xf7\x98\x21\x5f\xa1\x7e\x80\xc8\x45\x5e\x70\x39\x68\xd4\xb6\x47\x38\xae\x61\x5e\x49\x58\xa0\x7d\x1d\x70\xe0\x30\x32\xd2\x68\x54\xa5\x33\xbc\x72\x51\xa0\x7f\xcf\xc7\x53\xf8\x44\x5f\x3e\xc3\x9d\x53\x44\x1f\x8d\xb6\xd2\x12\x3e\xd5\x03\xf4\xa1\x49\x2f\x86\xf1\x37\xb9\xbc\xa2\xbf\x2f\x47\xe3\xa3\x07\x8a\xfd\xca\x4d\x29\xd8\xe6\x11\x92\xce\xf5\xbf\x32\xcb\x1e\x2c\x7b\xd5\x00\xe6\xe5\x68\x5c\x8b\x7e\x76\xdf\xbe\x6e\xbb\x94\xbc\x49\xce\x13\x2b\x6c\x7b\xb4\xcf\xa1\x47\xce\xff\xcd\xc0\x78\x0a\x17\x72\xf3\xc1\xea\x2a\xb3\xe7\x2d\x27\x9b\x35\xb7\xd9\xb2\x9e\xdc\x7a\x42\x9f\x8c\x19\xdc\xdf\xe5\xd3\x44\xb6\x15\xc2\x9d\xc2\xa3\x2d\x49\xfa\xcc\x6d\x08\xca\x14\x0c\x8a\xf9\x64\xf7\xd6\x25\x17\xdd\x8d\xef\x1b\xf5\x31\x30\xf3\xdd\xfd\x96\x86\xc9\xe7\x47\x03\xd6\xd6\x40\xf8\xef\xd9\xdb\xc6\xda\x1e\x16\xd7\xd3\xcf\xb7\x4c\x1e\x3f\x26\xd0\x8d\xbb\xb6\x63\x4d\x14\x51\x60\xce\x19\x9c\x41\x2a\xf7\x96\x46\xfb\x43\xec\x1c\xc7\x05\x4e\x3b\x22\xff\xba\xba\x7a\x77\xc9\x05\x0e\x4b\x55\x5a\x4c\xe1\x70\x69\x6d\x69\xa6\x27\x27\xcc\x18\xb4\x66\xb2\xc6\x99\xe1\x16\x8f\x49\xa5\x99\x64\xaa\x38\x79\x36\x7f\xfe\xc3\xcf\x4f\xb3\xd3\xec\x9f\xec\xa7\x2c\xcf\x9f\x3f\xfd\x71\xf6\x24\xfb\xe9\x87\xd3\xce\x03\xf6\xec\x59\x36\x7b\x92\xfd\xfc\xe3\xf3\x2f\x97\x42\xad\xbf\xfc\xa9\x74\x5e\x30\x7d\x33\x31\xab\xc5\x61\xaf\x0d\xe3\x7e\x14\x38\x0f\xf8\x68\x1e\xf2\x82\x2d\xf0\xc4\xac\x16\xdf\xdf\x16\x62\x5b\xcb\x78\xd8\x85\xa6\xdf\x87\x66\xf4\xc9\x3d\xfe\xbc\x2d\xba\x4f\xa6\x85\xe8\xf5\xfb\x54\xb2\x82\x6c\x0e\x47\x5e\xad\xc8\x9f\xa3\x87\xfd\x9b\x35\x9b\x62\xa6\x28\x0c\x6f\x2e\xaf\x06\xa6\xe4\x68\x32\xcd\x4b\xcb\x95\x9c\xc2\xe1\xd5\x92\x1b\x62\x31\xaf\xda\x1d\xe5\x74\xc8\x57\x06\x73\x60\x06\x18\x9d\xb0\x7e\x7d\xab\x60\x89\xa2\x84\x8d\xaa\x20\xc7\x15\x0a\xe5\xbe\x6b\x90\x78\x6b\xe1\xf2\x0a\xfe\x4f\x49\x8a\xd4\x64\x60\x5d\xbc\xb5\xa8\x25\x13\x7f\xbc\xff\xbd\x8b\xad\x37\xcd\xa3\x51\x0d\xa0\xb0\xee\xf1\xdc\x4e\x94\x9c\x93\x62\xa5\x17\x87\x03\x41\x16\x6a\xa1\xcc\x34\x84\x6a\xc0\x35\x2a\xe3\x4c\x98\x69\x87\x50\xdb\x9f\x43\xbb\xa6\xda\x46\x1f\xee\x65\x60\x98\xec\x40\x4d\xf6\x7d\x99\x09\x95\xdd\x64\x4b\xc6\xe5\xe1\x36\x1c\xc0\x1d\x20\xdd\x91\x47\xe5\x7c\x9b\x72\x1e\xc9\xf0\x51\x43\x3f\xf2\x4c\xbb\xa4\x70\xc4\xd9\x2d\x7f\xfa\x5d\xac\x63\x09\xd3\x08\x6e\x57\x35\x43\x59\xea\x2d\xec\xae\xb9\x4b\x2e\x2e\xf9\x3b\x97\x37\x98\xb7\x48\xfb\xff\xdb\xa5\xa2\xd7\xb5\x55\x0d\x74\x17\xff\x5b\x4a\x32\x8d\xcc\xe2\x9b\xa2\xb4\x1b\x37\xf1\xb2\x92\x99\x4f\xb2\xd1\xbc\x92\xa3\xf1\x14\x7e\xb9\x4b\x82\xe2\xf5\x7d\xbd\x07\x8f\x21\x94\x2f\x8e\x13\x33\xba\x0b\x8d\x56\xf4\x6f\xcb\xea\x5f\x7a\xad\x1e\x80\xe4\xf6\xf0\x23\x30\x99\x96\x4d\x8f\xc1\x64\x4b\x43\x3f\x26\x93\x52\x3e\xd9\x60\xeb\xc9\x3d\x7b\xf9\xda\xad\x62\x25\x17\xed\xaa\x8e\x3a\x02\xe7\xaa\xf8\xab\x1e\x7d\xc3\xb2\x25\x11\xa2\x76\x79\x81\x8e\x14\xb9\x34\x96\xc9\x0c\xa9\x27\x51\x52\x6c\xc0\x2e\xd1\x8b\x53\x53\x62\x97\xc8\x75\xcc\xa2\xa4\x95\x9a\x07\x50\x98\x30\x2d\xc8\x50\x0b\xb2\x50\x2b\xd4\x12\x73\x98\x79\x6d\xa5\xf6\xad\x49\xa9\x8c\xa5\xb6\x2d\xe7\x4e\xb0\x56\xc7\x3b\xfe\xf4\x0d\x99\x5d\xe2\xc6\xb5\x62\x19\x13\x02\xf3\x49\xb2\x7a\xb6\xc4\xec\xc6\xc0\x92\x95\x25\x4a\x60\x16\x74\x25\x2d\x2f\xd0\x89\xe2\x0a\x35\xb0\xda\x42\x3a\x05\x3a\x3a\x6a\x5d\xef\x43\xc9\x44\x33\xa4\xdf\xff\x0c\x43\x02\xe4\x71\x67\xd4\x69\xd2\xc9\xa0\xe6\xf5\x4f\xd7\x78\xba\x3e\x92\xcc\xac\xd5\x91\xb9\x39\xce\xb9\x74\xc2\x47\x60\x14\x3d\xd7\x48\x26\x48\x05\x6b\xb6\x81\xb9\x22\xdb\x0a\x26\x78\xc6\x55\x65\x7c\x38\xac\x0a\x6b\x7a\x2f\x36\xae\x51\x55\x58\x96\x4b\x60\x5c\x4f\xe0\x02\x4c\x89\x44\xff\xe0\xda\x4f\x0d\xb1\xe8\x03\x89\x98\x1b\xd2\x34\x6b\x6c\xb0\xca\x35\xb2\xb5\xba\xa6\xc9\x4d\x5d\xd1\x6e\x04\x6a\x85\xce\x94\x4e\x43\xed\x73\x30\xb6\xd5\xed\x88\x38\xec\xc2\x8c\x89\x08\x26\x4b\xe7\xf1\xaa\xc6\x61\x77\x19\x6a\x6a\xc3\xec\xb4\xa1\xf5\x4a\x81\x4b\x6e\x39\x13\xfc\x2f\x74\x4e\x8f\x8a\x29\xd4\xd1\x40\xe7\x32\x0a\x30\x45\xbe\x96\x25\xc1\x51\x47\xf3\xb8\x43\x4d\x8e\x95\xa3\xca\xb3\xa8\xbc\x95\x61\xc9\xf6\x5e\x3b\xf0\x78\x54\xb2\x9e\x12\x63\x56\x39\xb4\xaf\x38\x73\xa6\x5e\xbf\xa2\xdf\x7a\x42\xc3\xa3\xf1\x35\x71\xf2\x52\xe5\x5d\x27\x44\x14\xf9\xce\x8b\xe6\xd2\x32\x33\x96\xdd\x8c\xba\xd6\xf2\x79\x6a\xf0\x4b\x38\x9d\x9c\xf6\x90\xed\x10\x97\xc0\xd9\xf0\xa3\xe3\x44\x75\xa2\xf2\xeb\x7d\x2e\x3b\x9d\x9c\x0e\xb9\xeb\x37\xd9\xf1\x91\x39\x0a\x59\x40\xe9\x21\x95\x47\xf0\x9c\x67\xae\x3b\x31\x2e\x23\x9a\x21\x87\xff\xa3\x44\xe1\x07\x05\x6b\x74\x09\xaa\x55\x65\x3d\x21\x38\xa4\xc7\x6b\x80\x40\x44\x56\xa5\xf9\x19\xd4\xc7\xe7\xfd\x30\x6c\xdd\x24\xf8\x1b\x84\xbe\xeb\x82\x16\xd9\x26\x9e\xdc\x71\xfd\x20\xb9\x18\xf7\x79\x69\xa0\xef\x76\x4d\xdc\x17\x67\xd2\xfd\x8d\xf5\x90\x39\x0f\x6e\x0a\xe9\x5b\xaf\x85\xe4\xf6\x05\x5a\x02\x89\xd2\x16\xf3\x8f\xf1\x60\x36\xa0\x5c\xc1\xcd\x84\xd8\x04\x1b\x0c\x30\x10\xdc\x38\xa2\x72\xe1\x73\x57\x60\x26\xd2\x23\x37\x75\x69\xe3\x36\x5e\xda\xdd\x91\xe8\x59\x97\xe2\x72\xe7\xad\x7e\xa5\x94\xe8\x16\x1b\xd4\xde\x98\x28\xe5\x04\x3a\xd3\xcf\xe0\xae\x03\xe8\x64\xf6\x27\x87\xef\x05\xba\xc5\x46\xe3\xcf\x70\x06\x56\x57\xd8\xe7\xf2\x54\x70\x57\x7c\xeb\x6d\x71\xb3\xbd\xab\x91\x6d\x5f\xa2\x90\xa1\xfd\x51\x8e\xc6\xf5\xfa\xe5\x93\x75\x68\x3d\x3f\x87\x39\x13\x66\x90\xc5\x2e\xcc\x8d\x21\x2a\xa1\x14\xf1\x77\x96\x2e\xa5\x66\x08\x6b\x6e\x97\xb9\x66\x6b\x09\x73\xad\x8a\x9d\xc4\xdd\x6c\xe8\x62\xc5\xb8\x60\xee\x6c\xf8\x33\xe8\xe8\x5c\x87\xde\xbb\xab\x60\xc5\x8b\xb3\x7e\x0e\xea\xd8\x1f\xad\x6c\x0f\x26\x13\x62\x99\x1a\x80\xc7\x6e\x7c\x81\x13\x56\xf1\x2d\x20\xd3\x8b\xaa\x40\x69\x13\x41\xaa\x4d\xa2\xf6\x00\xdb\x20\x14\xfc\x11\xce\xc2\xc9\xe0\xd2\xbf\xd9\x70\x7e\x53\x2e\xb8\x43\x16\x8b\x52\x69\xa6\x37\xa1\x2c\x8a\x57\xce\xae\x1b\xa5\xfe\x53\x89\x3c\xd1\x60\x97\x91\x2c\x83\x01\x1a\x61\x86\x5c\x2e\xc0\x6a\x26\xcd\x1c\xb5\xc6\x7c\x42\x0b\xc5\xa4\x23\x09\x89\xeb\x56\xa9\x48\x7a\x62\xe9\x12\x96\x55\x49\x01\xe3\x34\xfb\x52\x88\x4a\x13\x5e\x23\x20\xc7\x52\x19\x1e\x2f\xbc\xa3\x2e\x14\x06\xd7\x44\xdc\xfd\x1b\x0f\xa0\x48\xeb\x83\x88\x03\x4f\x6c\xeb\x41\x54\xf4\x54\xf6\xf7\x9f\xd1\xc9\xcf\xe3\x10\xa0\x3e\x54\xbd\x38\x6e\x97\x52\x4d\x25\xe0\x25\x06\xd9\x2e\xb8\xe0\x61\xe8\x0a\x6e\x56\xb3\x7f\x63\xd6\x85\x98\x83\x15\xcb\x73\x93\xa8\xe1\xd6\xd4\xb5\x4c\x88\x4e\x52\x33\x21\xa8\xb5\x44\x6d\xf6\x40\x1c\x37\xc0\x84\x50\x6b\x8f\xa8\x1c\x8d\xd5\xca\x17\xdc\x86\x96\xf7\xa6\xcd\x30\x63\x95\xc1\x06\xc4\x69\x4e\x91\xc9\x2d\xb0\x12\x2c\x51\x47\x4b\x42\xa5\xe8\xca\x3b\x27\xfb\x8f\xc6\xf6\x25\x4b\xf7\x35\x43\x94\x84\x33\x53\x15\x98\xbb\xad\xbb\x23\x7f\xae\x34\x36\x20\x73\x16\xc6\x32\x7c\x00\x4e\xf5\xa1\x18\x02\x32\xa2\x1c\x1c\xea\x38\xbb\x95\x12\x9d\x02\xfe\x08\x7a\x71\xec\x93\x97\x99\xef\xfa\xb0\xb6\x37\xd2\xbe\xf7\xfa\x7a\x0b\xa4\xe8\xf2\x94\x2b\x3b\xb8\xea\xf6\xb8\x7b\x02\x2c\xa5\x13\x1f\x4b\xca\x26\x60\x6d\xbc\xfc\x85\x5a\x6d\x51\x59\x24\x08\xde\xe4\x3f\x13\x82\xa8\x24\xf0\x00\x75\x11\xae\xed\x28\x2a\xe3\xf9\xc0\x73\x7e\xac\x94\xb6\x34\xba\x6e\xd1\x69\xf2\xba\x6b\x7e\xe9\x76\x88\x34\xa0\x74\xee\x3b\x1a\x07\x4e\xff\x3c\xd5\x98\x65\x8e\x5c\x7d\xab\xc2\x7c\x99\x18\x6b\x84\x18\x76\x53\xb7\x10\xbe\xcc\xa6\x33\x6e\x3f\xdc\x6c\x5d\x2a\xec\xc5\x36\x3b\xc8\xe3\x74\x72\xda\x6d\xc0\x5b\xdd\xb6\x6f\xc5\x06\x9b\xcb\xc8\x0f\x9e\x39\xdc\x76\x58\x5e\x50\x47\xe7\x3d\xe1\x9b\x4f\xca\xbd\xd8\xb0\x3d\xac\x51\x0b\x9d\xe0\x5d\xe2\x65\x52\xe3\x5f\x2e\xee\x89\x38\x12\x30\xad\x85\x8f\x1c\x79\x51\xfc\x8a\x88\x23\xdb\x7a\x87\x79\x34\x88\xbb\xb6\x44\x17\x79\x7b\x45\xb0\x31\xfd\x31\xe7\xc6\x63\xba\xa0\xef\xfb\xce\x93\x36\x99\xec\x77\xa4\xd0\x07\x0b\x3e\xf0\x82\xd8\xff\x8d\x2f\x88\x3d\xad\xd4\x05\xe7\x84\xe7\x28\x2d\x9f\x73\xd4\xe3\x7e\x60\x76\x59\xa6\x83\xc1\x5e\x9e\x69\xa3\xf1\x6f\xf1\xcb\xb7\xe5\x96\x6f\xcb\x2b\xdf\x80\x53\xfa\xd2\xab\x97\x4b\x3a\x17\x94\x3b\x01\x59\x47\x0f\x76\xf0\x4a\x88\xa4\xbb\xbc\x68\x9f\x6a\xee\x30\x4a\x51\xfc\xe4\xf4\x94\xba\xef\x74\x4a\xf7\x5a\x1b\xce\xe0\x24\x38\x2f\xbe\x7f\x70\x16\xa6\x67\x50\xdf\xed\x34\x49\x96\xee\xd7\x2e\xc1\xed\x1b\xf1\x01\xd9\x38\x31\x15\xef\xbe\xf3\x1f\x32\xd9\xcd\x83\xe4\x72\xe8\xb5\x77\x66\x73\xed\xe8\xa0\xdb\xa5\x28\x17\xee\xf0\x5f\x3a\x08\x6d\x6c\x85\x04\x5c\x2e\x93\x0b\x4d\xaf\xf2\xa0\x2f\xeb\x07\x82\xd6\x8d\x49\x93\xb0\xc3\xc9\x9f\x54\x11\xfb\x70\x40\xcf\x76\x19\x78\xdf\x42\xc6\x4a\x36\xe3\x82\xdb\x4d\xcc\x42\x97\x49\x79\xbb\xd9\xc0\xdb\x52\x19\x6c\x93\xbf\xbf\x9c\x0a\xb9\x10\xaf\xa5\xfc\x85\x2d\xda\x0b\xd7\x99\x87\x9e\x36\x3e\xb3\x4b\xad\xaa\x85\x77\xec\x75\x0c\xe2\x35\xb8\xe3\x66\xce\xb2\xb6\xff\x62\xc9\x07\xd7\x61\x8f\xd7\xbd\x4a\x5e\xc5\x87\x7d\x3a\x92\x18\xb4\x11\xf0\x9a\x95\xb1\x2e\x0b\x89\x3e\xa9\x5d\xc0\xd1\x4c\x42\x38\x27\xdc\x98\x6a\xe0\x55\x47\x6f\x92\x8c\x53\x40\xf6\xea\x76\x2e\x37\xcb\x51\xc7\x9e\x23\x60\xb6\xff\xed\xce\x38\xd9\x46\xbc\xfa\xf8\x5f\xd8\x42\xcb\x96\x96\xf9\xdb\x59\x3c\x3e\xe8\x57\x1a\x6d\xa4\x44\x1a\x85\x03\xe9\x08\xac\x9a\xde\x43\x35\x2d\x5d\xe4\x0e\x5f\xf7\x34\x99\xe5\x4b\x97\xd1\xc0\x2e\x3a\x0b\x3a\x61\xbf\x60\x2f\x81\x44\x26\xfd\x7a\xf0\x9f\x00\x00\x00\xff\xff\xa1\x46\xd5\x44\x7b\x26\x00\x00" func exampletokenCdcBytes() ([]byte, error) { return bindataRead( @@ -95,11 +96,11 @@ func exampletokenCdc() (*asset, error) { } info := bindataFileInfo{name: "ExampleToken.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe0, 0xbe, 0x3b, 0x6f, 0xd2, 0xd0, 0xf5, 0x35, 0x49, 0x8b, 0xda, 0x6b, 0xd4, 0x13, 0x3, 0x5e, 0x67, 0xf0, 0xb9, 0x32, 0x81, 0xc, 0xec, 0xff, 0x14, 0xe8, 0xa6, 0x75, 0x9b, 0x8d, 0xe7, 0x6d}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb, 0xc7, 0x1a, 0xf8, 0x70, 0x8f, 0xea, 0x8, 0xb3, 0x5, 0x87, 0xd1, 0xc5, 0x1b, 0x83, 0x5b, 0x0, 0x54, 0x34, 0x3e, 0x4b, 0x2b, 0x1b, 0x22, 0xa9, 0x72, 0x48, 0xf, 0x69, 0x65, 0x53, 0x4a}} return a, nil } -var _fungibletokenCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x5a\x5f\x93\x1b\xb7\x0d\x7f\xd7\xa7\x40\x9d\x07\x9f\x52\x59\xca\x4c\x3b\xed\x8c\xa6\x89\x63\x27\x76\xeb\x66\xd2\xe9\xd8\xe7\xe4\xa1\xed\x44\xd4\x2e\x56\x4b\x1f\x45\x6e\x48\xae\x64\xc5\x73\xdf\xac\x6f\xfd\x62\x1d\x80\x7f\xf6\x8f\x56\x77\xe7\xfc\xb9\x87\xe4\x4e\x22\x40\x00\x04\x7e\xf8\x81\xf4\xea\xd3\x4f\x67\xb3\x4f\xe0\xba\x46\x78\xa9\xcc\x11\x5e\xb6\x7a\x27\xb7\x0a\xe1\xda\xdc\xa0\x06\xe7\x85\x2e\x85\x2d\x67\xb3\x4f\x3e\x81\x4d\xfa\x92\xbf\xdb\x40\x61\xb4\xb7\xa2\xf0\xb3\xd9\xab\x0a\x04\xb4\x0e\xad\x83\xa3\xd0\xde\x81\x37\x50\x62\xa3\xcc\x09\x04\x68\x3c\x82\x67\x6d\x49\x60\x01\xbe\x46\x69\x3b\x05\x1a\xb1\x64\x21\xb9\x6f\x14\xee\x51\x7b\x5a\x01\x83\xfd\x40\x6a\x8f\xb6\x12\x05\x82\xd0\x65\xd4\xc0\x7a\x1d\xcb\x9f\x8b\x67\x01\x07\x25\x56\x52\x63\x09\x52\x83\xaf\xa5\xcb\x3b\x2f\x67\xb3\xd5\x6a\x05\x5f\xd1\x9f\x72\xdb\x7a\x63\x1d\x5c\x35\x0a\x85\x43\x10\x25\xeb\xe4\xf5\x4a\x3a\x0f\xb2\x82\x93\x69\x83\x2c\x2d\xc6\xdf\xcd\xd7\x2c\xfe\x04\xfe\x6e\x5c\xdd\x0a\xf8\x9b\xd0\x5a\x68\x78\x02\xb5\xf7\x8d\x5b\xaf\x56\x3b\xe9\xeb\x76\xbb\x2c\xcc\x7e\xf5\x8e\x97\xd4\xbc\x22\x4a\x3d\x17\xce\x4b\xa1\xe1\xdb\xff\xfd\x57\x29\xb4\x3d\x39\x7f\x94\xde\xa3\x65\x41\xdf\xda\xad\x51\xa8\x7d\x94\xfa\x1a\x3d\xc2\x9b\x5a\x5a\x85\xa7\x0b\x22\x25\x7a\xfc\xf3\x1f\xd2\x2e\xef\x84\xf5\x08\xdf\x08\xab\x1c\xea\x0b\x12\x9f\xbd\x0f\xcb\x6e\xa2\xd0\xb3\xd6\x79\xa9\xe1\x1b\x25\x35\x5e\x10\x11\xbc\xe4\x87\x4a\x99\xa3\x3f\x45\xb1\xbf\x4a\x73\x10\x5a\x4b\x78\x23\x74\x51\xe3\x4f\x17\x44\x77\xd2\xfc\x20\x75\x61\x76\x5a\x7a\x93\xdd\xd2\xf2\x27\x78\x51\x4a\x5d\xc8\x9b\x0b\x72\x5b\xd5\xa2\x93\x3b\x9d\xa3\xae\xf5\x69\x3a\xda\xa5\x3d\xd9\x56\xa3\xa5\x95\xbc\xfa\x35\x36\x06\x2c\x56\x68\x51\x17\xb8\x9e\x92\x31\x9a\x7c\x59\xd1\x7f\x9e\x54\x3e\xa4\xfc\x77\xa2\x55\x7e\x03\x16\x9d\x69\x6d\xd1\xcb\xa9\xd9\xec\x85\x28\x6a\xa8\x52\xbd\x84\x0c\xcf\xeb\xfc\xa9\x41\xb8\x90\xd6\x97\x95\x2e\xc3\xa6\xff\xb4\xe6\x20\x4b\xb4\x9b\x05\x6c\x5e\x63\x81\xf2\xc0\xbf\x53\xda\x6f\x9e\x0b\x25\x74\x81\x53\xd2\x6e\x36\xbb\xae\xd1\x8d\x12\xbf\x50\xc2\x22\x34\x16\x9f\x14\x46\x97\xd2\x4b\xa3\x1d\xab\x6a\x8c\xf3\xfd\xcf\x7c\x2d\x3c\x69\xf5\x56\x16\x7e\x46\x86\xe2\x7b\x2c\x5a\xfa\x12\x4c\xc5\x96\x57\xad\x2e\xc2\x62\x2e\x24\x04\xf6\x64\xc9\xfb\x9e\x80\xf6\x71\xd8\x08\x2b\x3c\xc2\x16\x0b\xd1\x92\x2d\x1e\x76\xf2\x80\x8e\x97\x13\x44\xf0\x2f\x62\x2b\x95\xf4\x27\x8a\x8d\xab\x85\xc5\x99\xe8\xce\x26\x14\x1d\x55\x37\x6b\x0f\x76\x19\xad\x4e\x80\xef\x1b\xe3\xa2\xaa\x4a\xa2\x2a\x5d\x67\xd1\x4c\x6a\x30\x1a\xc1\x58\xd8\x1b\x8b\xc9\xe2\x2e\x14\xcb\xd9\xec\x95\x07\xa1\x9c\x89\x06\x05\xbc\x1a\x59\xb3\x17\x37\x08\x45\xeb\xbc\xd9\xe7\x08\xc7\xd0\xe4\x43\xa4\xd8\x0c\xa3\x4c\x70\x67\xe0\x20\xac\x34\x2d\xad\x96\x7a\xe7\xe0\x28\x7d\xcd\xea\x03\x48\x2d\x67\x2f\x8d\x05\x7c\x2f\x48\xcd\x02\x04\x54\xa2\x2d\xd0\x43\x21\x34\x6c\xb1\xd3\x8e\x25\x6c\x4f\x04\x32\x95\xb1\x7b\xa9\x77\xb3\x10\x0e\x48\x49\x31\xc8\x96\x4f\x57\xb3\x99\xdc\x37\xc6\x7a\x78\xf4\x9d\xc4\xe3\x6b\x74\x46\x1d\xd0\x3e\xca\x9f\x3e\x6f\xad\xa6\xbf\xb9\x08\x06\x80\x9a\x4b\x63\x84\xf9\xd9\x12\x11\x8e\xda\xd5\xa6\x55\xe5\x28\x87\x87\x79\xcf\x6a\x7a\x76\x89\xa2\x40\xe7\xae\x84\x52\xf3\x0c\xb5\x3d\xfc\x1e\x98\xb1\x86\xbe\xe1\xf0\x61\x36\x03\x00\x58\xad\xe0\x99\x06\xd4\x5e\xfa\xb8\x6b\x65\x2c\x08\xa5\xcc\x51\xea\x1d\x9b\x40\xf1\x2d\xad\x38\x0a\xc5\x87\xcd\x41\x86\xca\x9a\x3d\x88\x90\x39\xac\xa8\x6f\x4a\x5f\xdd\xf7\x51\x3a\x6d\xb7\xe2\x1e\x88\x87\xe0\x20\x1d\xb7\x03\xdc\x13\xf4\x94\x70\xac\x51\xa7\x0d\x28\xc9\xd3\xce\xfa\x9e\xed\x0e\xfd\x8d\xf4\x15\x61\xc2\x1a\xde\x78\x2b\xf5\x6e\x01\x62\x6f\x5a\xed\xd7\xf0\xf6\xa5\x7c\xff\xa7\x3f\x2e\x58\xd5\x1a\x9e\x95\xa5\x45\xe7\x9e\x86\xbf\xdf\xbe\x7d\xf5\xf5\x1a\xde\xbe\xd2\x9e\x56\xe4\x6d\x87\x1f\x6f\x03\x22\x3c\xab\x3c\xda\xa4\x6e\xfe\x73\xdc\x2a\xb1\x31\x4e\xfa\xd0\x4a\xef\x76\xea\xeb\xb4\xf4\x1e\xa7\xbc\xe9\xbb\xe4\xcd\xd0\xf2\xbc\xe1\x47\x39\xf4\xe2\x0e\x67\x6a\x84\x9d\x32\x5b\xa1\x60\xdb\x5a\x0d\x7b\xf4\xb5\x29\x69\x59\x21\x94\xa2\x55\x54\x93\x02\xb4\xd1\x4f\x7e\x42\x6b\xd2\x56\x17\xbc\xe4\xda\xb9\xcf\xc5\xf1\x39\xf5\x2c\x7d\xde\xd3\x4e\xc5\xd6\x3f\x92\xae\x1a\xd8\x93\x26\x54\xb7\xcb\x8c\xab\x43\xb6\x7f\x67\x39\x2a\x81\x1d\x7a\x4f\x15\x10\x2d\x07\xc9\x38\xc1\xa5\x3a\xd8\xa7\xef\xcd\x79\xab\x48\xa6\xc1\x07\x5e\x3c\x16\x38\x08\x9b\x36\x48\x8e\xf2\xba\xdb\xce\xb7\x04\x47\x0f\x71\x0e\xc9\xc6\x22\x02\xb7\xc5\x1f\x5b\x69\xb9\x08\x1d\x7b\x94\xd2\x9a\xb0\x2e\x29\xe9\x57\x33\xc3\x78\x02\x1f\x2e\xfe\x53\x83\xcb\xb3\x7d\x5f\x79\x28\x0d\x3a\xd0\x26\x6f\x38\xdc\xcb\x68\xd8\x6c\x53\xf7\xac\xd1\xe2\x22\xcb\xf6\x9a\x95\x42\x41\xcd\xc1\x34\x31\x9d\x1a\xe3\x9c\x8c\xfd\xc1\x54\x50\x58\x14\x6c\x44\xec\x11\xf1\xdc\xac\xeb\x4c\x27\x8f\x4b\xc3\x76\x68\xa4\x98\x0a\x2b\xd5\x09\x02\x47\xe5\xbe\x66\x8e\x3a\x85\x77\xf9\x31\x87\x96\x5b\x40\x04\xc9\xb4\xe5\xcb\x98\x2a\x5c\xb7\xee\x06\x44\x36\x8b\x38\xab\x00\xd7\x60\x21\x2b\x59\xc4\xdc\xed\xe0\x72\xa0\x45\x3a\x10\x07\x21\x95\x08\xb0\x4e\x4d\x29\x23\xce\x60\xe1\x75\x60\xd0\xd4\x14\xb6\xdc\xd3\xab\x56\xf1\xd6\x07\x23\x4b\x68\x84\x96\x05\x45\x88\x2b\x92\xea\x8e\xff\x48\x70\xdb\x57\x94\x6b\x36\x27\xb3\x83\x56\xdf\x68\x33\xda\xf0\x59\x19\x38\x8a\x50\xea\xb4\x20\x97\xf8\x60\xb2\x8b\x0e\x9a\x36\xec\xc2\xf9\xb2\x6f\x95\x97\x8d\x42\x38\x10\x80\x8d\x7c\x8c\x4c\x22\x33\xb3\xa2\xc6\xe2\x06\x9c\xd9\x67\xc6\x10\xa4\xa0\xd5\x5e\x2a\xfe\xa0\x44\x27\x2d\x96\x31\x78\xe3\x90\x59\x14\x45\x8d\xe5\x02\x1a\xe3\x29\x3f\xc9\x46\xa8\x51\x35\xc9\x6b\x68\xd0\x72\x89\xe6\xd3\x4e\xd2\xd3\xa5\x27\xf1\x48\xb5\x0f\xd2\x3d\x4b\xa7\x71\x6d\x52\x13\xb9\x1a\xa2\xcf\x7c\x0d\xcf\x8d\x51\xc3\x6c\x48\xa1\x06\xd7\x6e\xb9\xf3\xba\xbb\xcb\x29\x25\xda\x40\x09\x11\x44\x8b\xbe\xb5\xd4\x1b\x22\x11\xcb\x84\xc6\xe2\xde\x1c\xb8\x4d\x04\x62\xd3\x13\x1c\x25\x4a\x47\x19\x1f\xbb\xe8\x26\x28\x3c\xa0\xa2\xd0\x6d\xa2\xdf\xc9\xb9\xf9\x66\x20\xfd\xc6\x10\xcb\x34\x96\xce\x98\xb2\x2b\x48\x4b\xbf\x60\x9e\x77\xe4\xfc\x43\xe9\x6b\xb4\xb9\xb6\xc0\x6c\xdf\x21\x51\x0d\xef\x50\x55\x03\x6d\xc4\x1e\x32\xa1\x28\x7b\x6c\x93\xbd\xda\x24\x1b\x36\xd3\xde\x8c\x2d\xe5\x13\x3a\x5e\x3c\x94\x2f\x3f\x70\xc4\x6e\x7b\xf0\x4a\x3f\xc4\xb8\x47\x1f\x85\x8d\x60\x63\xd1\xc5\x99\xa0\x62\x56\x6a\x62\xa0\xe9\x04\xe0\x20\x54\x8b\x67\x62\x41\x64\x99\x6a\xe7\xf3\xcf\x53\x6b\x3a\x5b\x49\x3f\x8f\xbe\xef\xe8\x52\x84\x81\x7d\xeb\x3c\x55\x30\xed\xe4\xc4\x1e\x41\xb8\x41\x35\xc6\x82\xe8\xd8\x0e\x3b\xf5\x68\xa0\xfe\x76\x36\xfc\xad\xd7\x21\xd2\xe4\xf2\xcb\x3b\x44\xe4\x09\x13\x0d\x42\xea\x18\xa9\x07\x34\x88\xef\x31\xc1\xb2\xd4\x85\x6a\x4b\x04\x01\x79\xfc\x09\x66\x30\x1a\x0c\x83\x10\x5b\x43\xd6\x72\x44\xbe\xe2\xa0\x13\xa2\x31\xe2\x21\x53\x44\x08\x43\x98\x22\xb2\x1e\xa2\xfd\xa5\x49\x8b\xa6\x47\x86\x05\x28\x79\x83\xe0\x1a\x25\x99\x75\xef\xa1\x6d\xa8\x32\xb3\x12\x87\xe1\x26\x64\xcf\x13\x88\xac\x38\xa7\x3d\x34\x2a\x0c\x3c\xf0\xf0\xd6\x92\x0e\x6b\xdc\x5a\x62\xe8\xc1\x8b\x1b\xec\x90\x80\xd0\x21\x7e\x43\x15\x79\xe1\x18\x06\xc3\xf0\x5d\x65\xc5\x46\x51\x45\x45\x9d\x57\x81\x0b\xa7\x2a\x9a\x0f\x4d\xda\xa1\x7f\xd3\x36\x34\xdd\x60\xc9\x0b\xae\x4f\x0d\xba\x1e\x5a\x95\x92\x11\x47\x58\xee\xd8\x71\x88\xa4\x35\x67\x08\x77\xac\x91\xf1\x83\x43\x4e\x13\x3b\x35\xb6\xd6\x52\x10\xd5\x09\x5c\xda\x85\x06\x32\xbe\x06\x1a\xa4\xf4\xd8\x81\x8c\xdc\xd3\x06\x5e\xcd\xd7\xf0\xe1\x9a\xa9\x24\x61\xf6\xed\xd0\xa9\xd7\xd1\xfa\x64\x91\xb1\x9c\xa9\x4c\x68\xe5\x81\xda\x64\x34\x8f\x76\x6c\xb2\x4d\x78\x6e\x12\x37\xcc\xd0\xc5\x62\x52\x0b\x1d\xa5\x40\xe8\x53\x50\x14\x67\xba\x77\x84\x00\x11\x64\xbc\x6d\x91\x94\x96\x58\x65\xe2\x7f\xd1\x45\xe9\xce\x3d\x8c\x3c\x99\x7e\x4d\x7d\x69\x84\x08\xdd\x44\x31\x20\x6e\x25\x86\xc6\xce\x21\xee\x52\x32\x20\x3c\x0f\xec\x71\x1a\xa6\x2c\x4f\xfe\x2e\x12\x85\x5d\xc0\xb5\x15\xda\x55\x68\x8d\x5d\x64\x8a\x14\x6e\x4b\xd2\x54\xd9\x11\xbd\xb6\x9b\x1c\x28\xbe\xdd\x11\x9f\xd0\x7f\x4c\xbd\xb0\x2b\xeb\x9e\x35\xdd\xc6\xd9\xae\xfe\x5c\xbb\x4c\xbf\x2c\xc2\x54\x61\x97\xf4\x3f\xa6\x5a\x63\x32\x27\x51\x95\xc1\x48\xea\xde\x37\x67\x98\x2c\xc2\xe1\x3e\x98\xb8\x0f\xb4\x7f\x15\xe7\x20\x62\x5e\x62\x7c\x7b\x25\x1d\x8f\x4d\x58\xc2\x41\x8a\x70\x55\x15\x8d\xa5\x8f\xaf\xe6\x9b\x38\x50\x0d\x34\xbe\x1a\x5d\x17\x44\x60\xa3\x54\xdb\x1a\x73\x73\x83\xc8\x54\xc8\x58\x1e\xd5\xf8\x73\x9e\xae\x86\xd5\xc8\xfe\xc6\xac\xdc\xe2\x70\xaa\x8b\x0e\x93\x79\x25\x3a\x6f\xcd\x09\xcb\x21\x93\xfa\x96\xb4\x8e\xef\x2d\x8e\x52\xa9\x8c\xd5\x6d\x53\x0a\x8f\x1d\xb6\x3e\xa6\x1e\xeb\x85\xe2\x0c\x50\xa7\xa1\x2d\x7c\x51\xa8\x88\x48\x84\x63\xc8\x80\x0c\xb5\x38\x50\x4b\x40\x9d\x02\x15\x78\x52\xa0\x43\x99\x5e\x05\x9d\xcb\x3b\xc3\xc4\x79\x9d\xee\xad\x1d\xfa\xc1\x29\x7b\x03\x61\x3c\xc5\xca\xd8\x60\x35\x21\xfd\xe8\x16\xee\x9c\x94\x4b\x66\x0e\x8d\x0d\xe3\x6b\x88\x9a\x39\x6a\x6a\x3e\x6c\x9c\x6b\xc4\x7e\xcf\x44\x99\x1a\x54\x18\x6f\xe3\x69\x2c\xc7\xf9\x94\xee\x6d\x02\x32\x93\xbb\x94\x3b\x5b\x51\xdc\x5c\xcd\xc7\xbc\xc6\xe2\x04\xad\xe1\xe3\x1e\x8c\xd0\x44\xca\x96\x3b\x0c\x68\x31\x5f\xca\x92\x1a\x45\x25\xb9\x5a\x23\x85\xe2\x25\xdb\x54\x41\xdd\x6c\xcd\x9f\xb7\xad\x2c\xe7\x17\xe8\x07\x5c\xe6\x57\x7d\x9d\x44\x93\x3e\x5b\x7e\xb6\x86\x47\xd7\xbd\x78\x27\x26\xc4\xe7\x10\x63\x5f\xb6\x36\xdd\x34\xf5\x9d\x4f\x77\x0a\xce\x44\x20\x61\x80\x25\x2c\x21\x79\x8a\x2f\x96\x97\x28\xd2\xb9\x31\x64\x4b\x8f\x41\xfd\x92\x3e\x77\xe8\xfa\xdc\xa8\xb7\xf1\x94\x12\xdb\x7b\x68\x04\x2e\xde\x8d\x96\xf8\x9e\x12\x70\xd4\x9e\x99\xa0\xc5\x36\x30\xaa\x2a\x60\x84\x66\xf6\x54\xf2\x0c\x9d\x47\xe7\x38\x36\x09\x8b\x80\xef\x1b\x2c\x3c\x96\xe3\xa2\xe2\xc9\x2b\xf7\xaf\x6e\x14\xa6\xfd\x17\x21\xa0\x78\x0a\x25\xa6\xbb\xda\x88\x73\x1e\xb1\xf7\xa1\x2d\x03\xf5\x44\x13\xd9\xd3\xb3\xe2\xf8\x05\x2d\x7a\x94\x4b\xab\x15\x3c\x47\x65\x8e\x71\x68\xa4\x50\xf4\x2e\x6d\x13\xed\x73\xad\x8d\xa4\xd6\xb6\xfa\x89\x97\xfb\x48\x2d\xb8\x9d\x8d\xf5\x71\x48\x76\x98\x9a\x70\xff\x1e\xab\x11\xcc\xe5\x72\xef\x89\x3d\x30\x92\xc4\xe1\x5b\xdc\x32\xbc\x28\x2c\x61\xa0\x5f\x56\x67\x15\xe7\xde\xb4\x5b\xb2\xe6\xca\x54\xa1\x53\xff\xe5\xcb\x0f\x13\x9a\x6e\xbf\xb8\x9a\x8f\x8b\x1c\x78\xe4\x60\xaa\xf0\x61\xa8\x76\xcd\xdc\x61\x98\xe6\xb7\x80\xca\x4d\xa1\x42\xe6\x3a\x3c\x8e\xed\x1b\x7f\xea\xe7\x71\x9c\x40\x52\xf2\xf1\xe0\xc3\x67\x9b\xc3\x70\xac\x0d\x94\x46\x3f\xf6\x53\x9a\xbb\x3b\xea\xc9\xf8\x2c\xc0\xb5\x45\x4d\x9b\x0c\xbf\x7e\x73\x94\xbe\xa8\xb7\x46\xd8\x72\xb3\x80\x0d\x7f\xf6\xd2\xd8\xa3\xa0\xd9\x73\x03\xe8\x8b\xe5\xc5\x50\xdc\x5e\x1c\x87\x86\x7d\x37\x4c\x16\xf1\xee\x62\x48\xe9\xce\x79\xe6\x77\xbf\x16\x03\x1b\x1d\x40\x34\x3a\x1d\xdf\x64\x09\xfc\x8b\x94\xfc\x07\x9e\x3e\x85\x4a\x28\x87\x97\x1c\x9a\xb8\x65\xd8\x04\x10\xdf\x74\x8d\x90\xf5\x3e\x76\x83\x6b\x56\x98\xbc\x61\xd0\x78\x1c\xdf\x32\x24\xc5\x14\x97\x73\xf9\x5f\x7b\x34\x9f\x6c\x61\x03\xb0\xfe\xe2\x9e\x01\xfb\x59\x98\xaa\xbb\x71\x39\x75\x15\x85\x8e\x87\x3f\xcd\x24\xe8\xc7\x56\xa8\xf0\xd7\xc4\xac\x7d\xe7\x84\x0d\x97\x5b\x5c\xbc\x0b\xc8\x25\x49\x6d\x6e\x5c\xa4\x8f\xbe\xed\xb3\xfd\x34\xf3\x77\x6d\x83\xea\x82\x64\x1e\x4d\x55\x16\x41\x3c\xcb\x34\x58\x48\xa1\x32\xcc\xc2\x26\x70\x94\x0d\x0f\xc4\x91\xc6\x84\xb2\x8d\x2e\x75\x77\xae\xfc\x64\x37\xa5\x3c\x72\xac\x2d\xee\xa4\xd6\x4c\x16\x87\x44\xa7\x7b\x88\x9c\x90\xbe\xb7\xdd\x07\x03\xaf\xfa\x1f\xcf\xe1\xc9\xdd\x67\xf9\x8f\x9c\x8e\x63\x8a\xc0\xf0\x14\x27\xed\xee\xdc\x88\x72\xf1\xdb\x5f\x5a\x1e\xff\x89\xc2\xf8\xf2\x24\x7d\x7f\x1e\x63\x66\x4b\xdd\x5b\xd1\xa4\x59\xf4\x13\x4a\x7c\x7c\xde\x7d\x2e\x75\x51\x34\xd5\x42\xf8\xff\xe5\x75\x61\xfa\xe6\x78\x31\x79\x7c\xba\x14\xe1\x09\xe7\x6e\x91\x11\x51\xbb\xbc\x78\xf4\x8e\x15\x7d\xb9\x5b\x66\xf8\x26\xd4\x3f\xcb\x33\x91\x4b\x0c\xf1\xf6\xa1\x37\x1b\xa2\x2c\x1d\x48\xef\xfa\x74\xfc\xac\x56\xcf\x50\xfa\x63\xee\x35\xa6\x5a\xee\xb8\xdf\xd2\x18\xef\x1c\xda\xde\x10\x52\x18\x5d\x58\xf4\x91\x50\xc4\xd4\xeb\x5e\xed\xf2\x94\x94\x8a\x7b\xac\x2f\x76\xd7\xde\xdd\x40\xbe\x50\x48\x54\x37\x6a\x7b\x00\x36\x92\x2f\x4b\xe9\x5e\x69\xe7\x29\x2a\x57\x43\xb8\x99\xaf\x61\xba\xb2\xbe\x0a\x64\x39\x45\x9f\x58\x9d\x2e\xcc\xbe\x11\xbe\x37\x88\x92\x7f\x3f\x03\x05\xb9\x86\xba\xa7\xc9\x7b\x6a\x28\xe2\x02\xfb\x31\x55\x48\xf3\xfb\x2b\xa9\xaf\x22\x41\xcb\x65\x29\x6f\x3e\xb2\xaa\xd2\x7b\xe9\x03\x6a\x6a\xf4\x94\xda\x37\x8c\xa7\xa6\xdf\xa0\xb2\xe0\xa1\x58\xfb\xfb\xc9\x38\xfd\x2c\xe4\x75\xed\xfe\x5e\xc8\xed\x0a\xe2\x9e\xfb\xea\x01\x1c\xf0\xc3\x1e\xbe\x20\x42\x1a\x91\x40\x29\x73\x74\x7c\x5f\x11\xfe\xd9\x8a\x89\x6b\x06\x6c\x85\xab\xa8\x16\x04\x20\x67\x0f\xca\x70\x0f\x2a\x8c\xb7\xbc\xfa\xe8\x97\x83\xf3\x27\x80\x6e\xb6\xd5\x78\x54\xa7\xb8\x47\x0c\x45\x08\x25\x0f\x58\x7d\x63\xcf\x9b\xd1\x83\xe8\xc4\xfd\x9b\x64\x92\x91\xe8\x05\x83\x58\x7a\x41\x3d\x7c\xd4\x6b\xc2\x6f\x70\x3e\x53\x57\x7d\x93\xe7\x72\x48\xf4\x38\x73\xeb\x69\x08\xef\x9d\xd0\xc4\x81\x4d\x05\xb5\xa7\x99\xe3\x99\xc7\xc0\x80\xd1\xf9\x41\x7b\x2f\x7c\x51\x0f\x5e\x23\xcf\x21\xf2\xd7\x4e\x86\x74\x04\xb7\xff\x0f\x00\x00\xff\xff\xca\x8f\x0b\x28\x24\x2a\x00\x00" +var _fungibletokenCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x5a\xdb\x8e\x1b\xc7\xd1\xbe\xe7\x53\xd4\x2f\x5f\x68\xe9\x9f\xe2\x1a\x48\x90\x00\x8b\xd8\xd2\xca\x96\x12\xc5\x70\x10\x68\x57\xd6\x45\x10\x98\xcd\x99\x1a\x4e\x6b\x9b\xdd\xe3\xee\x1e\x52\xb4\xb0\x6f\x96\xbb\xbc\x58\x50\xd5\x87\x39\x70\xb8\x07\x5b\xd6\x85\xbd\x4b\x76\x55\xd7\xb9\xbe\xaa\xde\xf3\x2f\xbf\x9c\xcd\xbe\x80\xeb\x1a\xe1\xb5\x32\x7b\x78\xdd\xea\x8d\x5c\x2b\x84\x6b\x73\x83\x1a\x9c\x17\xba\x14\xb6\x9c\xcd\xbe\xf8\x02\x56\xe9\x4b\xfe\x6e\x05\x85\xd1\xde\x8a\xc2\xcf\x66\x6f\x2a\x10\xd0\x3a\xb4\x0e\xf6\x42\x7b\x07\xde\x40\x89\x8d\x32\x07\x10\xa0\x71\x0f\x9e\xb9\x25\x82\x05\xf8\x1a\xa5\xed\x18\x68\xc4\x92\x89\xe4\xb6\x51\xb8\x45\xed\xe9\x04\x0c\xee\x03\xa9\x3d\xda\x4a\x14\x08\x42\x97\x91\x03\xf3\x75\x4c\x7f\x4c\x9e\x09\x1c\x94\x58\x49\x8d\x25\x48\x0d\xbe\x96\x2e\xdf\xbc\x9c\xcd\xce\xcf\xcf\xe1\x5b\xfa\x55\xae\x5b\x6f\xac\x83\xb3\x46\xa1\x70\x08\xa2\x64\x9e\x7c\x5e\x49\xe7\x41\x56\x70\x30\x6d\xa0\xa5\xc3\xf8\x7f\xf3\x0b\x26\x7f\x06\x7f\x37\xae\x6e\x05\xfc\x4d\x68\x2d\x34\x3c\x83\xda\xfb\xc6\x5d\x9c\x9f\x6f\xa4\xaf\xdb\xf5\xb2\x30\xdb\xf3\x0f\x7c\xa4\xe6\x13\x91\xea\xa5\x70\x5e\x0a\x0d\x3f\xfc\xf7\x3f\x4a\xa1\xed\xd1\xf9\xbd\xf4\x1e\x2d\x13\xfa\xd6\xae\x8d\x42\xed\x23\xd5\x77\xe8\x11\xae\x6a\x69\x15\x1e\x4e\x90\x94\xe8\xf1\xcf\x7f\x48\xb7\x7c\x10\xd6\x23\x7c\x2f\xac\x72\xa8\x4f\x50\x7c\xf5\x31\x1c\xbb\x89\x44\x97\xad\xf3\x52\xc3\xf7\x4a\x6a\x3c\x41\x22\xf8\xc8\x4f\x95\x32\x7b\x7f\x88\x64\x7f\x95\x66\x27\xb4\x96\x70\x25\x74\x51\xe3\x2f\x27\x48\x37\xd2\xfc\x24\x75\x61\x36\x5a\x7a\x93\xd5\xd2\xf2\x17\x78\x55\x4a\x5d\xc8\x9b\x13\x74\x6b\xd5\xa2\x93\x1b\x9d\xad\xae\xf5\x61\xda\xda\xa5\x3d\xd8\x56\xa3\xa5\x93\x7c\xfa\x2d\x36\x06\x2c\x56\x68\x51\x17\x78\x31\x45\x63\x34\xe9\x72\x4e\xff\x79\x56\xf9\x10\xf2\x3f\x8a\x56\xf9\x15\x58\x74\xa6\xb5\x45\x2f\xa6\x66\xb3\x57\xa2\xa8\xa1\x4a\xf9\x12\x22\x3c\x9f\xf3\x87\x06\xe1\x44\x58\x9f\x66\xba\x0c\x97\xfe\xd3\x9a\x9d\x2c\xd1\xae\x16\xb0\x7a\x8b\x05\xca\x1d\xff\x4c\x61\xbf\x7a\x29\x94\xd0\x05\x4e\x51\xbb\xd9\xec\xba\x46\x37\x0a\xfc\x42\x09\x8b\xd0\x58\x7c\x56\x18\x5d\x4a\x2f\x8d\x76\xcc\xaa\x31\xce\xf7\x3f\xf3\xb5\xf0\xc4\xd5\x5b\x59\xf8\x19\x09\x8a\x1f\xb1\x68\xe9\x4b\x30\x15\x4b\x5e\xb5\xba\x08\x87\x39\x91\x10\x58\x93\xe5\x6c\xf6\xc6\xc3\x46\xee\xd0\xc5\x22\x40\x5f\x89\xb5\x54\xd2\x1f\x48\xfd\xad\xb8\x41\x28\x5a\xe7\xcd\x36\x8b\x1d\xef\xcb\x96\xa1\x0b\x87\xa2\x53\x0d\x31\xb0\x13\x56\x9a\x96\x4e\x4b\xbd\x71\xb0\x97\xbe\x66\xf6\x21\xf3\x97\xb3\xd7\xc6\x02\x7e\x14\xc4\x66\x01\x02\x2a\xd1\x16\xe8\xa1\x10\x1a\xd6\xd8\x71\xc7\x12\xd6\x07\xca\xdc\xca\xd8\xad\xd4\x9b\x19\x27\x36\x42\xb2\xf4\xc0\x05\x5f\x9e\xcf\x66\x72\xdb\x18\xeb\xe1\xc9\x8f\x12\xf7\x6f\xd1\x19\xb5\x43\xfb\x24\x7f\xfa\xb2\xb5\x9a\x7e\xe7\xc8\x1a\x54\xa9\x1c\x6f\xa3\x42\x9a\x25\x11\xc1\x7e\xae\x36\xad\x2a\x47\x81\x31\x0c\x26\x66\xd3\x93\x4b\x14\x05\x3a\x77\x26\x94\x9a\xe7\xfa\xd5\x2b\x8a\x03\x31\x2e\xa0\x2f\x38\x7c\x9a\xcd\x00\x00\xce\xcf\xe1\x52\x03\x6a\x2f\x7d\xbc\xb5\x32\x16\x84\x52\x66\x2f\xf5\x86\x45\x20\xfb\x96\x56\xec\x85\x62\x9f\xb3\x91\xa1\xb2\x66\x0b\x22\x38\x9b\x19\xf5\x45\xe9\xb3\x7b\x1f\xa9\xd3\x75\xe7\xdc\x58\x70\x17\x14\x24\x77\x3b\xc0\x2d\xe5\x73\x09\xfb\x1a\x75\xba\x80\x22\x34\xdd\xac\x33\x6d\xb8\x56\x1f\xc2\xc5\xa3\x78\x71\x83\x54\xea\xd2\xf2\x48\xbc\x5d\x5f\x30\x7d\x46\x89\x79\x01\x57\xde\x4a\xbd\x59\xf0\xe9\xbb\xfe\x89\xad\x69\xb5\xbf\x80\x77\xaf\xe5\xc7\x3f\xfd\xf1\xfe\xf3\x24\xf2\x05\x5c\x96\xa5\x45\xe7\x9e\x3f\xec\xfc\xbb\x77\x6f\xbe\xbb\x80\x77\x6f\xb4\x7f\xc8\x0d\xd9\x4c\x8f\x23\x5b\x87\xb2\x71\x59\x79\xb4\x49\x9d\xf9\xaf\x71\x53\x89\x8d\x71\xd2\x73\xbf\xcd\xe4\x9f\xc7\x49\xdf\x25\xd6\xbf\xb3\x93\xbc\x79\x8c\x8b\xbc\x79\x9c\xa5\xb3\x81\x3e\xab\x83\x5e\xdd\xe1\x9c\x1a\x61\xa3\xcc\x5a\x28\x58\x85\xc2\xb4\x5c\xb7\x56\x9f\xcd\x57\xb0\x45\x5f\x9b\x32\x33\x21\xe0\x23\x94\x22\x42\x2a\xa3\x02\xb4\xd1\xcf\x7e\x41\x6b\xd2\xed\x27\x1c\xc3\x5c\x47\x5e\x19\x5b\xfd\x28\x94\x7b\xc2\xbf\xec\x71\xa7\xfa\x08\xbd\xa8\xeb\x0a\x18\x2b\xd7\x84\x82\xec\x40\x64\xec\x09\x95\x44\xd5\x29\x41\x25\xcb\x62\x63\xd1\x51\xe5\xd1\x9b\x81\xec\x89\x7b\x5f\x87\xe3\x46\x99\x04\x82\x4f\xd9\x2d\x7d\x82\x9d\xb0\x89\x69\x52\x8f\xcf\xdd\x76\x1a\xa5\xbe\xf1\x10\x95\x90\x9a\x4e\x68\x78\x08\x16\x7f\x6e\xa5\x8d\xc9\x41\xaa\xa4\x7c\xa6\xa6\x94\x98\xf4\xcb\x2e\x03\xd9\x94\x4f\x5c\xa5\x0f\x0d\x2e\x8f\xee\x7d\xe3\xa1\x34\xe8\x40\x9b\x7c\xe1\xf0\x2e\xa3\x61\xb5\x4e\xd8\xa1\x46\x8b\x8b\x4c\xbb\xc6\x42\xb4\xd4\x7b\x3d\x28\x14\xd4\xc5\x4d\x13\xe3\xaa\x31\xce\xc9\xd8\xc8\x4d\x05\x85\x45\xc1\x42\xc4\x66\x1e\xbd\x65\x5d\x27\x3a\x69\x5c\x1a\x96\x43\x23\xd9\x54\x58\xa9\x0e\x10\x10\x3a\x63\x76\xb3\xd7\xc9\xbc\xcb\xc7\x38\x2d\xf7\xea\xd8\xcd\xd2\x95\xaf\x23\x28\x21\xc0\x20\xdc\x0d\x88\x2c\x16\x21\x76\x01\xae\xc1\x42\x56\xb2\x88\x11\xdb\xf5\xb5\x01\x17\xe9\x40\xec\x84\x54\x22\xf4\x5f\x42\x0f\xc3\x8e\xd4\x79\x98\xe7\x07\xea\xde\x6b\x24\xbc\x53\xb5\x8a\xaf\xde\x19\x59\x42\x23\xb4\x2c\xc8\x42\x9c\x9a\x94\x6d\xfc\x4b\xea\x8b\x7d\x46\x39\x79\xa3\x31\x48\x84\x56\xdf\x68\x33\xba\xf0\xb2\x0c\x08\x4d\x28\x75\x58\x90\x4a\xec\x98\xac\xa2\x83\xa6\x0d\xb7\x70\xbc\x6c\x5b\xe5\x65\xa3\x10\x76\x54\x74\x47\x3a\x7a\x30\x3a\x3a\x83\xf1\x55\x51\x63\x71\x03\xce\x6c\x31\x21\xbc\x40\x05\xad\xf6\x52\xf1\x07\x25\x3a\x69\xb1\x8c\xc6\x1b\x9b\xcc\xa2\x28\x6a\x2c\x17\xd0\x18\x4f\xf1\x49\x32\x42\x8d\xaa\x49\x5a\x43\x83\x96\x30\x57\xe7\xed\xbe\xc7\x13\xa7\x17\x8d\xb0\x62\x9b\x1c\xc4\xe8\x71\xe4\x2b\x0e\x66\x74\xa1\xef\x0c\x6e\x9b\xb4\xed\x0b\x8b\xbe\xb5\x1a\x5e\x1a\xa3\xe0\x7d\x8d\xbe\x46\x0b\xc6\x72\x58\xf2\x40\x17\xf9\x8f\xbd\x3e\xc9\x6c\xba\x48\x48\xdc\x13\x60\x03\xe9\x2e\x13\x87\x6b\x93\x70\xc6\xd9\xb0\x3a\xce\x2f\x58\x92\x61\xdc\xa6\xbb\xc0\xb5\x6b\x06\x73\xee\xee\xc4\x4f\x29\x31\x60\x42\x40\x3e\xe8\xea\x12\x42\xeb\x30\xb2\xc5\xad\xd9\xb1\xc5\x02\x56\x3e\x65\xfe\xeb\x1e\xb4\x7f\xea\xa2\x9a\xa0\x70\x87\x8a\x2c\xb4\x8a\x7a\x27\xe5\xe6\xab\x01\xf5\x95\xa1\x69\xc0\x58\x8a\x46\xca\x83\x40\x2d\xfd\x02\x8c\x46\xd8\x73\xa6\xa0\x64\x0f\xa4\x2a\x00\x66\xfd\x01\x09\xbd\x7a\x87\xaa\x1a\x70\x23\x40\x9a\x31\x6a\xd9\x4d\x6c\x41\xab\x55\x92\x61\xf5\x9b\x82\xa9\xe7\xe9\xce\xd8\x93\xf6\x4d\x81\x74\x9d\x86\x9d\xce\xba\xb9\x3c\x4c\x94\x93\x71\xc8\x64\xd3\x71\xc8\xec\x4f\x46\xc9\x8b\x4f\x7c\xc9\x6d\xaf\x33\xd1\x3f\x1a\xd5\x46\x1f\x85\x8b\x60\x65\xd1\xc5\x61\xb2\xe2\xc9\xcb\x44\x5d\x58\xea\x9d\x50\x2d\x1e\x91\x05\x92\x65\x2a\x3b\x5f\x7f\x9d\x7a\xf9\x24\x48\x79\xf2\xbe\x1b\x09\xa2\x21\xb7\xad\xf3\x54\xfc\xe8\x26\x27\xb6\x08\xc2\x0d\x0a\x59\xac\x25\x9d\x81\x58\xa9\x27\x03\xf6\xb7\xb3\xe1\x4f\xbd\xe6\x9a\x46\xde\xdf\xde\x5c\x23\x16\x9b\xe8\xad\x52\x47\x4b\x3d\xa0\xb7\xbe\xc7\xd4\xd1\xa4\x2e\x54\x5b\x22\x08\xc8\x73\x73\x10\x83\x0b\xe9\xd0\x08\xb1\xab\x66\x2e\x7b\xe4\xdd\x18\x79\x88\x46\xe5\x87\x4c\xca\xc1\x0c\x61\x52\xce\x7c\x68\xb4\x2d\x4d\x3a\x34\x3d\x16\x2f\x40\xc9\x1b\x04\xd7\x28\xc9\x19\xb0\x85\xb6\xa1\x52\x91\x99\x38\x0c\x2b\xb4\x2d\x4f\xd9\xb2\xe2\x24\xf3\xd0\x28\x9a\xbc\x1f\xd5\x95\x93\xb3\xc6\x5d\x39\x9a\x1e\xbc\xb8\xc1\xae\x34\x51\xb9\x8a\xdf\x50\x89\x38\xe1\x86\xc1\x16\xe5\xbe\x3c\xcf\xf9\xdb\x1b\x40\x68\x3c\x16\x52\xbb\x9e\x49\xe2\x4a\x92\x6e\xbe\x2b\x51\x59\x4d\xca\xd1\x78\xf6\x2c\x4c\x74\x29\x2f\xe7\x43\x25\x37\xe8\xaf\xda\xa6\x31\xd6\x63\xc9\x07\xae\x0f\x0d\xba\x5e\x41\x2e\x25\x17\x55\x61\x19\x3e\x45\x09\xe9\xcc\x51\x11\xdf\xc7\x26\xc5\x12\x1f\x1a\x46\x03\x45\x6b\xc9\x2d\xea\x00\x2e\xdd\x02\xeb\x43\x68\x60\x83\x24\x99\x34\x4f\xac\x01\x9f\xae\x19\xb6\x53\xff\xb9\x85\xcb\xbe\x44\x61\x9a\xd0\xa5\x2c\x84\x8f\x19\xd4\xdd\x73\x2c\xe5\xe4\x3f\xde\xfc\x26\x79\x29\x45\x32\x87\x05\xf9\x37\xae\x39\xd6\x08\x2b\x2d\xd5\x6a\xc1\x47\x2a\xa1\xdc\xb4\x5b\x27\x1b\xec\xb4\x91\xcf\xe6\x17\x03\xd5\x86\x8e\x79\x1b\x3d\xb0\x1f\xb7\x7e\xe4\xe4\xd3\x59\x64\xba\xb1\xc9\x76\xc5\x49\xb3\xc2\x65\x80\x45\x31\xb6\x84\x8e\x54\x3c\xf6\x32\xa3\xa8\xe6\x07\xaa\x8b\xd1\xec\xde\xb6\x48\x4c\x4b\xac\xf2\xda\xe4\x8e\x28\x66\x36\xd7\xc9\xf7\xde\xc0\xcf\x2d\xda\x03\x88\xb5\x69\xfd\x23\x90\x0d\x26\x49\xa3\x7a\xd9\x1b\x0f\x37\xb7\x74\xc7\xd6\x8e\xa3\x1f\xfd\x98\xa0\xcc\xa8\x66\x77\xbb\xa1\xb8\x4f\x27\xd0\xc7\x49\x27\x94\x02\xc3\x52\xf6\x76\x7b\xce\x8c\x36\x05\x61\x2d\x96\x19\x30\x4c\xad\xc5\x8e\x4d\x11\xd7\x76\xf4\x63\x5c\x25\x3c\xa6\x40\x31\xc5\x45\x76\xec\x22\xcf\x11\x8b\x34\x06\x2e\x06\xcb\xb2\x65\xfa\x61\x01\x71\x9a\xa6\xff\x31\x40\x1c\x0f\x1e\x34\x97\x06\x3d\x08\xbf\xdd\x1c\x35\x41\x11\xbc\xf1\xe0\x21\x73\xc0\xfd\xdb\x38\xa9\xd3\x94\x20\xc6\x7b\x66\xe9\x60\xcd\x43\x39\xec\xa4\x08\x4b\x96\xd3\xa3\x7f\xe2\xf8\x66\xb4\x83\x8c\x9d\x84\xa2\x78\x6d\xcc\xcd\x0d\x22\xc3\x76\x63\x79\xbf\xc0\x9f\xf3\xfc\x3f\x2c\x03\xac\x6f\x97\xd7\x83\x55\x44\x54\x98\xc4\x2b\xd1\x79\x6b\x0e\x58\x0e\x80\x1a\xfc\x40\x5c\xc7\xcb\xd0\xbd\x54\x2a\x37\xc7\xb6\x29\x85\xc7\xae\x72\x3f\xa5\x28\xf2\x42\x71\x2c\xab\xc3\x50\x16\x5e\xe9\x2b\x82\x92\xc1\x0d\x5d\xb9\xe7\xe0\x59\x23\xea\x64\xa8\x80\x94\x03\x20\xce\x3d\x23\xf0\x5c\xde\x69\x26\xa1\x9c\x81\xf4\xc2\xe4\xd0\x0f\xbc\xec\x0d\x84\x05\x0a\x56\xc6\x06\xa9\xa9\xb5\x8e\xf6\xe5\xc7\x03\xa4\xe4\xdc\x68\x6c\x58\xb0\x04\xab\x99\xbd\xa6\x6e\xcf\xc2\xb9\x46\x6c\xb7\x3c\xd4\x11\x22\x08\x0b\x98\xe8\x8d\xe5\x38\x9e\xd2\x32\x38\x34\x2e\x52\x97\x62\x67\x2d\x8a\x9b\xb3\xf9\x18\x48\x5a\x9c\xc0\x91\xec\xee\xc1\x92\x87\x60\xf9\x72\x83\x21\xf9\xe7\x4b\x59\x52\x67\xae\x24\x25\x45\xc2\xac\x7c\x64\x9d\x32\xa8\xdb\xfe\xf0\xe7\x6d\x2b\xcb\xf9\x09\xbc\x07\xa7\x01\x6d\x9f\x27\xe1\xd2\xaf\x96\x5f\x5d\xc0\x93\xeb\x9e\xbd\x13\xf4\x64\x3f\x44\xdb\x97\xad\x4d\xeb\xeb\xbe\xf2\x31\x05\xba\x5a\xc3\xb5\x9b\xea\x24\xd1\x93\x7d\xb1\x3c\x85\x49\x8f\x85\x21\x59\x7a\x90\xf5\x01\x30\xe0\x68\xc4\x8a\xad\x60\x14\xfe\x14\x0a\x11\x57\x96\xbc\x98\xc9\xfb\x98\x38\x8b\x0b\x8b\x80\x1f\x1b\x2c\x46\x65\x9c\xf4\xe7\x3a\x99\x7b\x58\xb7\x5f\x21\x2f\x2e\x82\xe6\x18\x0b\xa9\xee\x82\x38\x2e\x0f\x68\xd0\x1a\xca\x32\x60\x4f\x00\x9a\xa1\xc6\x54\x14\x7f\x8e\x96\x3d\x0a\x80\xf3\x73\x78\x89\xca\xec\xe3\x56\x82\xcc\xd2\x7b\xbe\x49\xe0\xd8\xb5\x36\x42\x7f\xdb\xea\x67\x5e\x6e\x63\xcb\xe4\x39\x73\xcc\x8f\xcd\xb3\xc1\xd4\x94\xfb\x1b\xd3\x46\x30\xe2\xcd\x0d\xa3\x48\x2d\x2b\xcc\x99\x83\xd7\x94\x65\xe8\x3a\x4b\x18\xf0\x97\xd5\x51\x9a\xb8\xab\x76\x4d\xd2\x9c\x99\x2a\x74\xcb\xbf\xbc\xf8\x34\xc1\xe9\xf6\x9b\xb3\xf9\x38\x33\x81\x07\xb3\x80\xd8\x86\x6c\x2f\x18\x4b\x0c\x63\xf3\x16\x50\xb9\xa9\x54\xce\xd8\x87\xa7\xe8\x6d\xe3\x0f\x7d\xc4\x17\xe7\xb4\x14\x88\x3c\x1e\xc6\x85\x6a\x34\xc3\xbe\x36\x50\x1a\xfd\xd4\x4f\x71\xee\x5e\xab\x26\xed\xb3\x00\xd7\x16\x35\x5d\x32\xfc\xfa\x6a\x2f\x7d\x51\xaf\x8d\xb0\xe5\x6a\x01\x2b\xfe\xec\xb5\xb1\x7b\x61\x4b\xb4\x2b\x40\x5f\x2c\x4f\x9a\xe2\xf6\xe4\xd0\x38\x6c\x96\x61\xfe\x8a\xcb\xb1\x21\xc4\x3b\xc6\xce\x3f\x9e\xee\xca\x8f\x43\x41\x23\x07\x44\xa1\x93\xfb\x26\x53\xe0\x5f\xc4\xe4\xdf\xf0\xfc\xf9\x08\x06\xdf\xde\xbb\x1c\x5a\x85\xca\xbb\x1a\x4d\x3c\x4f\xdd\x60\x03\x0e\x93\x8b\x21\x8d\xfb\xf1\xfa\x22\x31\x26\xbb\x1c\xd3\x7f\xee\x05\xc6\x64\xdf\x19\x54\xd8\x6f\xee\x59\x43\x5c\x86\xdd\x43\xb7\x54\x48\xad\x40\xa1\xe3\x11\x59\x33\x72\xf9\xb9\x15\x2a\xfc\x36\xb1\x91\xb8\x73\x0f\x01\xa7\xfb\x52\xdc\x98\xe4\x94\xa4\xde\x34\x4e\xd2\x27\x3f\xf4\xd1\x7f\xda\x8c\xf4\xe0\xb8\x70\x4c\xf3\x64\x2a\xb3\xa8\xdc\x33\x4d\x83\x85\x14\x2a\x97\x5c\x58\x05\x60\xb1\xe2\xb5\x01\x26\x88\x4f\x69\x1b\x55\xea\x96\xfa\xdd\x33\xc9\x88\x79\x04\x46\x6b\xdc\x48\xad\x19\xe1\x0d\xd1\x49\xf7\xce\x3f\x41\x7d\x6f\x8f\x0e\x02\x9e\xf5\x3f\x9e\xc3\xb3\xbb\x7d\xf9\x8f\x1c\x8e\xe3\xbe\xce\xe5\x29\xee\x23\x3a\xbf\x11\x4e\xe2\xbf\x02\x48\xc7\xe3\x5f\x00\x8d\x57\x4c\xe9\xfb\x63\x1b\x33\xc4\xe9\x5e\x81\x27\xc5\xa2\x7f\x21\xc5\xc7\xfe\xee\x03\xa0\x93\xa4\x29\x17\xc2\xff\x4f\x9f\x0b\x1b\x05\xb6\x17\x23\xbe\xe7\x4b\x11\x1e\x23\xef\x26\x19\xa1\xab\xd3\x87\x47\x2f\xc4\x51\x97\xbb\x69\x86\xaf\x8f\x7d\x5f\x1e\x91\x9c\x82\x75\xb7\x0f\xdd\xff\x88\xb2\x74\x20\xbd\xeb\x63\xe8\xa3\x5c\x3d\xaa\xd2\x8f\xd9\xd5\x4c\xb5\xdc\x71\xbf\xa5\xb1\xde\x39\xb4\xbd\xc9\xa1\x30\xba\xb0\xe8\x23\xa0\x88\xa1\xd7\xbd\x77\xe7\xd1\x26\x25\xf7\x98\x5f\xec\xae\xbd\x5d\x41\x5e\x30\x24\x7c\x3a\xde\x40\xc1\xc9\xda\x48\xba\x2c\xa5\x7b\xa3\x9d\x27\xab\x9c\x0d\xcb\xcd\xfc\x02\xa6\x33\xeb\xdb\x80\x70\x93\xf5\x09\xe1\xe9\xc2\x6c\x1b\xe1\x7b\xd3\x23\xe9\xf7\x2b\xaa\x20\xe7\x50\xf7\x48\x7f\x4f\x0e\xc5\xba\xc0\x7a\x4c\x25\xd2\xfc\xfe\x4c\xea\xb3\x48\xa5\xe5\x34\x95\x37\x8f\xcc\xaa\xf4\xb2\xff\x80\x9c\x1a\x3d\xea\xf7\x05\xe3\x51\xe7\x77\xc8\x2c\x78\x68\xad\xfd\xff\x49\x3b\xfd\xaa\xca\xeb\xda\xed\xbd\x25\xb7\x4b\x88\x7b\xb6\xfa\x83\x72\xc0\x2f\xc7\xf8\x8a\x00\x69\xac\x04\x4a\x99\xbd\xe3\x25\x43\xeb\xc2\xcb\x51\x38\x33\x40\x2b\x9c\x45\xb5\xa0\x02\x72\xf4\x77\x0a\x70\xc7\xd2\xf3\x32\xd2\x47\x65\xb8\x15\x87\xcd\x5a\xc7\xb0\x57\x6f\x88\xf7\xc9\xea\x32\x16\xfd\xec\xd1\xef\x34\xc7\x0f\x2e\xdd\x60\xab\x71\xaf\x0e\xf1\x8e\x68\xd2\xe0\x12\x1e\xda\xfa\x4a\x1f\x37\xb5\x07\xc1\x92\xfb\x2f\x19\x5a\x28\x56\xb1\xfc\xd4\xbf\x7b\xd4\xdb\xcd\xef\xe0\xe7\xfe\x53\xcc\x09\xff\xf6\x1e\x87\x1f\xe0\xe4\x7b\x1d\xbc\x4b\x78\x3d\x83\xfd\xe9\x9e\xd2\x73\xf5\x84\xe7\xa7\xbc\xd3\xe3\xcc\x8e\xc9\x73\x69\x68\x1a\xf9\x4f\x38\xb6\xc2\x17\xf5\xe0\xfd\xfd\xb8\x66\x7f\xee\xa8\x4a\xbe\xbc\xfd\x5f\x00\x00\x00\xff\xff\xc3\xc3\x69\x0d\x14\x2e\x00\x00" func fungibletokenCdcBytes() ([]byte, error) { return bindataRead( @@ -115,7 +116,7 @@ func fungibletokenCdc() (*asset, error) { } info := bindataFileInfo{name: "FungibleToken.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x93, 0x42, 0xa3, 0xd6, 0xa2, 0x11, 0x9, 0x98, 0xdb, 0x97, 0xc5, 0x3c, 0x7a, 0xfa, 0x32, 0xcc, 0xf2, 0x24, 0xd2, 0x35, 0x85, 0x60, 0x61, 0x1a, 0x62, 0xb2, 0x9, 0xcd, 0x42, 0xd2, 0x4e, 0x6c}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd7, 0xcc, 0xfa, 0x73, 0x93, 0xb5, 0xb2, 0x13, 0x49, 0x0, 0x55, 0x8, 0xf1, 0x2b, 0xad, 0x48, 0x81, 0x77, 0x27, 0x75, 0xef, 0x5b, 0x84, 0x8, 0x87, 0xd0, 0x96, 0xb3, 0x2e, 0x9f, 0xa, 0x16}} return a, nil } @@ -159,6 +160,26 @@ func fungibletokenswitchboardCdc() (*asset, error) { return a, nil } +var _testMalicioustokenCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x59\x5f\x6f\x23\xb7\x11\x7f\xf7\xa7\x98\xe4\x21\x95\x10\x59\x76\x81\xa2\x0f\x82\x7d\x8e\x73\xb9\x03\x02\xf4\x80\x20\x76\xaf\x0f\x87\x43\x4d\xed\x8e\x24\xd6\xbb\xe4\x82\xe4\x4a\x56\x0c\x7f\xf7\x62\xf8\x67\x97\x5c\x71\x6d\xd9\xb9\x02\xd5\xc3\x9d\xb5\xe2\x0c\x87\x33\xbf\x99\xf9\x0d\x97\xd7\x8d\x54\x06\xbe\xff\xd8\x8a\x35\x5f\x56\x78\x2b\xef\x51\x7c\x7f\x12\x1e\x7f\x42\xc3\x4a\x66\xd8\x67\x8e\x3b\xdd\x3f\x4e\x56\x8f\xac\xf9\xf0\xc0\xea\xa6\x53\x78\xc2\x8a\x02\xb5\x9e\xb0\xaa\x9a\x42\x21\x85\x51\xac\x30\xf0\x89\x55\xbc\xe0\xb2\xd5\x76\xd5\x02\x12\xbd\xf0\x78\x72\x02\x00\x70\x76\x76\x06\xb7\x1b\x04\xdc\xa2\x30\x60\x36\xcc\x00\xd7\x80\x35\x37\x06\x4b\xd8\x6d\x50\x80\xc0\x1d\x18\x92\xd1\xc0\x14\x42\xcd\x85\xc1\xd2\x0a\xc7\xdb\x3a\x05\x56\xb7\xfe\x64\x97\x4c\x58\x2d\x5b\x61\x16\xf0\xcf\x8f\xfc\xe1\xef\x7f\x9b\x81\xd9\x37\xb8\x80\x1b\xa3\xb8\x58\x4f\xa3\xed\xa5\x61\x15\xe8\xb6\x69\xaa\x3d\xc8\xd5\xc0\x6e\x0d\x5c\x00\x3e\x70\x6d\x50\x14\x78\xb0\xed\x96\x29\x30\xa4\xe0\xc6\xca\x87\xcd\x7a\xed\x37\x46\x2a\xb6\x46\x60\xa2\x84\xdf\xda\x65\xc5\x0b\xf8\x8d\x99\x8d\x3e\xd0\x54\xa1\x81\xcf\xac\xad\x8c\x97\xa0\x55\x0b\x88\xbe\x8c\x4b\x38\xbd\x4e\xa0\xff\x3b\xbb\xfe\x77\x2c\x90\x6f\x51\xbd\x42\xe4\xba\xac\xb9\x18\x35\xea\xd0\x23\x1c\x77\xb0\x6a\x05\xac\xd1\xbc\xf7\x58\xb0\xe8\x99\x28\xd4\xb2\x55\x05\xde\xda\x38\xd0\xbf\x57\xd3\x05\x7c\xa1\x3f\xbe\xc2\xa3\x55\x44\x1f\x85\xa6\x55\x02\xbe\x74\x0f\xe8\x43\x8b\x2e\xc6\x91\x39\xff\x78\x4b\xff\xbf\x9b\x4c\x67\xaf\x15\x23\x07\xfe\xc2\x0c\x7b\xb5\xec\x6d\x1f\xf6\x77\x93\x69\x27\xfa\xd5\xfe\xf5\x74\xe8\x18\xf2\x09\xb9\xa0\xda\x62\xec\x97\x9c\x5b\x66\xd6\x8b\xfd\x83\xe9\x02\xae\xc5\xfe\xc6\xa8\xb6\x30\x57\x91\xab\xf4\x8e\x9b\x62\xd3\x2d\x8e\x7e\xa1\x4f\xc1\x34\x1e\xef\xb8\x45\x22\x1b\x05\xe2\x45\xe1\xc9\x81\x24\x7d\x56\xe6\x17\xae\x9b\x8a\xed\x17\xa0\xb1\x5a\xcd\x5f\x3e\xba\xe0\xd5\xf0\xe0\xcf\x5b\xee\x37\x78\x37\x99\x4e\x81\xe9\xef\x9e\xb7\xd4\x2f\xbe\x9a\x8d\x58\xdb\x01\xe1\x7f\x67\x6f\x8c\xb5\x23\x2c\xee\x96\x5f\x1d\x98\x3c\x7d\x53\xa0\xa3\xed\xdf\x18\xed\xa0\x21\x1f\x72\x1d\x17\x89\x33\xff\xed\x0c\xa3\x5e\x61\x15\xe4\x23\xa0\x42\x65\x72\xd2\x8d\x2d\x4a\x89\x70\xa8\x5d\x79\xf9\xda\xdb\x3a\x2e\x7f\xc4\xe6\xff\xe0\xe2\x1e\xcb\x28\x9e\x3f\xc4\x9d\x6e\x6e\x35\x1c\x14\x8a\xa1\x05\x7f\x4a\x49\xa1\x90\x19\xfc\x50\x37\x66\x6f\x17\x7e\x6c\x45\x61\xb8\x14\x0b\x98\xac\x5a\x31\x99\x2e\xe0\xa7\xc7\x24\x46\x4e\xdf\xd3\x20\xf7\x33\x91\xbd\x38\x4d\x3b\xdb\x7c\xb8\xd5\x64\x4b\xff\x46\x76\xff\x34\x10\x08\x96\x4f\xb3\x5b\x3d\x1d\x3e\x7e\x03\x4c\xd3\xaa\xfa\x16\x98\x46\x1a\xf2\x30\x4d\xfa\xf5\xe0\x88\xd1\x6f\xcf\x9c\xe6\x69\xd8\xac\x04\xaf\xe2\xb2\x4f\x8d\xdf\x3a\x2b\x7c\xeb\x9e\x7e\x60\xc5\x06\x5a\x8d\xca\x26\x0b\x6a\x60\x02\xb8\xd0\x86\x89\x02\x89\x7c\x48\x51\xed\xc1\x6c\xd0\x89\x13\xf7\x30\x1b\xe4\x2a\xa4\x56\xc2\x99\x56\x1e\x1a\xda\x2f\xf3\x32\xc4\x34\xd6\x72\x8b\x4a\x60\x09\x4b\xa7\xad\x51\x8e\x81\x34\x52\x1b\x62\x68\x25\xb7\x82\x9d\x3a\x3e\xf0\xa8\x63\x5e\x66\x83\x7b\xcb\xb9\x0a\x56\x55\x58\xce\x93\xdd\x8b\x0d\x16\xf7\x1a\x36\xac\x69\x50\x00\x33\xa0\x5a\x61\x78\x8d\x56\x14\xb7\xa8\x80\x75\x16\x12\xa7\x1b\xe8\xe8\x74\xfd\xee\x6b\x2a\xad\x10\xee\xfc\x4b\xf4\x69\x50\x86\x93\x11\xa9\xc4\x07\x43\x1e\x0a\x5f\x2d\xc7\xb4\x84\x91\xcc\xec\xd4\x91\xb9\x25\xae\xb8\xb0\xc2\x33\xd0\x92\x7e\x57\x48\x26\x08\x09\x3b\xb6\x87\x95\x24\xdb\xea\x10\x78\x17\x0e\x23\xfd\x9e\xce\x8b\xbd\x6b\x64\xeb\xb7\xe5\x02\x18\x57\x73\xb8\x06\xdd\x60\xc1\x59\x05\x96\x67\x2a\x08\x5d\x01\x04\x62\xa9\x49\xd3\xb2\xb7\xc1\x48\xcb\x58\x3b\x75\x3d\x9b\x4d\x5d\x11\x33\x85\x4e\xa1\x35\x65\xc0\x9c\x5d\x16\x06\xfe\x1c\x47\xc4\x62\x17\x96\xac\x0a\x60\x32\x1b\xae\x61\xdb\xe1\x70\xb8\x0d\x71\x57\xbf\x3a\xe5\xad\x4e\x29\x70\xc1\x0d\x67\x15\xff\x03\xad\xd3\x83\x62\x0a\x75\x30\xd0\xba\x8c\x02\x4c\x91\xef\x64\x49\x70\x32\xd0\x3c\x1d\x14\x28\xdb\x63\x83\xca\xcb\xa0\x3c\xca\xb0\xe4\x78\xef\x2d\x78\x1c\x2a\x2d\xac\xac\x3f\x9c\x23\x29\xb2\xcb\xd6\xa2\x7d\xcb\x99\x35\xf5\xee\x67\xfa\xae\xe6\xf4\x78\x32\xbd\xa3\xca\xbc\x91\xe5\xd0\x09\x01\x45\x8e\x9a\xd1\x5a\xda\x66\xc9\x8a\xfb\xc9\xd0\x5a\xbe\x4a\x0d\x7e\x07\xe7\xf3\xf3\x4c\xc9\x1d\xaf\x26\x70\xf9\xdc\x8f\xa7\x89\xfa\x44\xed\xd3\x73\x6e\x3b\x9f\x9f\x8f\xb9\xec\x57\x31\xf0\x93\x9e\xf9\x4c\xa0\x14\x11\xd2\xa1\x78\xc5\x0b\x4b\x61\xb4\xcd\x8a\xfe\x91\xcd\x81\x59\xa2\xf0\x46\xc2\x0e\x6d\x92\x2a\xd9\x1a\x57\x14\x2c\xda\x03\xe3\xf7\xc5\xc8\xc8\x34\x47\xbd\xfa\xf0\x7b\x1e\x8a\xd1\xd0\xe0\x86\x85\xdc\x64\x10\x15\xdc\x81\x2f\x5f\x98\x35\x04\xaf\xa6\x39\x3f\x8d\xd0\x73\xcb\xf5\xfe\x6d\x8d\x7a\x9e\x7f\x8f\x1b\xf4\x6a\xf6\x48\x7f\x65\x6d\x24\xd7\xaf\xd1\x10\x50\xa4\x32\x58\x7e\x0e\x4d\x5a\x83\x6c\xc8\xa3\xac\xaa\xf6\xde\x0a\x0d\x0c\x2a\xae\x6d\xc1\xb2\x21\xb4\x33\xaf\x0e\x65\x92\xeb\x8e\xe8\xd8\xa3\x37\xe6\xe5\x68\x64\xf6\xa5\xd8\x3c\x3a\xab\x7f\x96\xb2\x1a\x52\x0f\x9a\x19\x75\x90\xb2\x02\x83\xe5\x97\xf0\x38\x00\x75\xb2\xfa\x8b\xc5\xf8\x1a\xed\x66\x93\xe9\x57\xb8\x04\xa3\x5a\xcc\x39\x3d\x15\x7c\x29\xc2\xdd\xb1\xb8\x3e\x3c\xd5\xc4\xc4\xd3\x16\x19\x9a\x8f\x73\x30\x2e\xeb\x97\x2f\xc6\x22\xf6\xea\x0a\x56\xac\xd2\xa3\xd5\xec\x5a\xdf\x6b\x2a\x29\x94\x26\xee\x92\xc2\xa6\xd5\x12\x61\xc7\xcd\xa6\x54\x6c\x27\x60\xa5\x64\xfd\x62\x01\xef\x0f\x74\xbd\x65\xbc\x62\xb6\x47\xfc\xcb\xeb\x18\xdc\x7f\x3c\x7b\x2a\x6f\xc5\xc5\x65\xbe\x0e\x0d\xec\x0f\x56\xc6\x0f\x93\x05\x81\xb4\x7a\xe0\xb1\x7b\x47\x74\xfc\x2e\xcc\x7d\x51\xeb\xb6\x46\x61\x12\x41\xe2\x28\x41\xbb\x87\xad\x17\xf2\xfe\xf0\x3d\x71\x3e\xba\xf5\xaf\xc6\xf7\x71\xca\x05\xdb\x6c\xb1\x6e\xa4\x62\x6a\xef\xe9\x51\xb8\x63\x6a\xb5\xeb\xce\x1b\x59\x95\x89\x06\xb3\x09\x05\xd3\x1b\xa0\x10\x96\xc8\xc5\x1a\x8c\x62\x42\xaf\x50\x29\x2c\xe7\xb4\x51\x48\x3a\x92\x10\xb8\x8b\x28\x23\xe9\x09\x14\xc6\x6f\x2b\x13\x22\x63\x35\x3b\x4a\x44\x14\x85\x77\x08\x28\xb1\x91\x9a\x87\x1b\xae\xa0\x0b\x2b\x8d\x3b\x2a\xde\xf9\x83\x7b\x50\xa4\x3c\x21\xe0\xc0\x95\xb6\xdd\x28\x2a\xb2\x2c\xff\xf9\x6e\x9d\x7c\x3d\xf5\x21\xca\xe1\xea\xe2\x34\x26\x55\x3d\x27\x70\x12\xa3\xf5\xce\x3b\xe1\x75\xf8\xf2\x8e\x96\xcb\xff\x60\x31\x04\x99\x05\x16\x2b\x4b\x9d\xa8\xe1\x46\x77\xac\xc6\xc7\x27\x61\x4f\x08\x72\x27\x50\xe9\x23\x30\xc7\x35\xb0\xaa\x92\x3b\x87\xa9\x12\xb5\x51\xd2\x51\x6f\x4d\xdb\x3b\xd3\x96\x58\xb0\x56\x63\x0f\xe3\x34\xab\xc8\xe4\x08\xae\x04\x4c\x54\xc1\x12\xcf\x19\x2d\xd1\xb3\xb2\x7f\xe9\x6d\xdf\xb0\xf4\x5c\x4b\x44\x41\x48\xd3\x6d\x8d\xa5\x3d\xba\x6d\xfc\x2b\xa9\xb0\x87\x99\xb5\x30\x10\xf2\x11\x40\x75\x8d\xd1\x07\x64\x42\x59\x38\x36\x81\x0e\x39\x13\xf5\x01\xd7\x84\x2e\x4e\x5d\xfa\x32\xfd\x5d\x1e\x6d\x47\x63\xed\x47\xa7\x31\x4b\x94\x82\xd3\xd3\x7a\x39\x40\xd6\x70\xe6\x3d\x12\x62\x69\x49\x71\xd1\xa4\x8c\x02\x16\x23\xe6\x0f\x54\xf2\xa0\x9c\x85\x22\xc1\xfb\x1a\xc0\xaa\x8a\xca\x89\xaf\x05\x34\x51\xd8\x11\xa4\x6e\xb5\xab\x09\xae\xee\x07\xc6\x74\xa0\xd1\x4e\x8e\x56\x93\xd3\xdd\xd5\x98\xe1\xb4\x48\x0f\xa4\x2a\xdd\x74\x63\xe1\xe9\x7e\x4f\x35\x16\x85\x2d\xb0\x6e\x6c\x61\x8e\x2e\x06\x9e\x10\x02\xaf\xbb\x71\xc2\x51\x6e\xea\x73\xc7\x21\xe7\xe0\x92\xe1\xc8\x8a\xf3\x42\x01\x39\x9f\x9f\x0f\xc7\xf1\x68\xf6\x76\x83\xd9\xe8\xa8\x19\x6a\x84\xab\x1e\xf6\x40\xac\xac\x69\xbe\x73\xbe\x70\xa3\x28\xe5\x5f\x18\xdf\x5e\x37\xb6\xf9\xb9\xf0\x31\xf1\x33\xa9\x71\x6f\x14\x8e\xc4\x1c\x09\xe8\x68\xe3\x99\x2d\x60\x14\xc1\x3a\x20\xc9\x44\xaf\x2e\x66\xa3\xc8\x8b\x25\x86\xd8\x3b\x2a\x86\xbd\xe9\x6f\xeb\x1e\x6f\x9d\x8a\x7e\xcc\x75\x96\xb8\xac\x1c\xd7\x5c\xe8\x83\x35\x1f\x79\x3b\xe4\xfe\x0f\x6f\x87\x5c\x79\xe9\xc8\xe7\x9c\x97\x28\x0c\x5f\x71\x54\xd3\x3c\x3c\x87\xd5\x66\x80\xc4\x6c\xbd\x89\x31\xf9\xa7\xea\xcc\xb7\xad\x31\xdf\xb6\xbe\x7c\x83\xda\x92\x4b\xb2\x6c\x4d\x19\x5c\x5c\x1e\x01\xcb\x2e\x7e\xf0\x42\x7d\xf1\xb1\xb4\x57\x1a\x71\x87\xb3\x6d\x29\x45\xf2\x5f\xcf\xcf\x69\x1e\x4f\x97\x0c\x5f\xe9\xc1\x65\x7f\x33\x5e\x27\x36\xa6\xfd\xa8\x17\xee\x5f\xcf\x91\xac\xbf\xd7\x7e\x51\xf4\xf0\x45\xdf\xa8\x74\x58\x9a\x2a\x18\xbe\xf6\x1b\x37\xdc\xae\x84\xe4\xea\xe8\xbd\x73\x6a\x7f\x29\x69\x41\x3c\x2c\x59\x36\xf0\xfe\xcd\x2e\xe1\x8e\x6d\x91\x20\xcc\x45\x72\xdd\xe9\x54\x9e\xe4\xf2\x7f\x24\x78\xc3\xd8\xf4\xa9\x3b\x5e\x06\x12\x5e\x71\x4c\x35\xc8\x1c\x97\x81\xf3\x2f\x14\xac\x61\x4b\x5e\x71\xb3\x0f\xf9\x68\x73\xaa\x8c\x47\x10\x7c\x68\xa4\xc6\xb8\x19\xb8\xab\x2b\x9f\x15\xe1\xd2\xca\x5d\xe7\xa2\xb9\xb6\xf3\xba\x9f\x74\xc3\x6f\x66\xa3\x64\xbb\x76\x8e\xbd\x0b\x61\xbc\x03\xdb\x7e\x56\xac\x88\xfd\x17\x68\x20\xdc\xf9\x33\xde\x65\x95\xfc\x1c\x7e\xcc\xe9\x48\x62\x90\x62\xe0\x3d\x6b\x02\x57\xf3\x49\x3f\xef\x9c\xc0\x51\xcf\x7d\x40\xe7\x5c\xeb\x16\x2f\x7e\xc8\xbf\x58\xc8\x26\xcc\x34\x85\x65\x56\xbb\x75\xbb\xde\x4c\x0e\x6c\x9a\x01\x33\x8b\x6c\x2e\x4d\x93\xc3\x84\x6b\x91\xff\x8f\x63\x44\xd6\x44\x07\x38\xcc\xe8\xe9\x49\x5e\x69\xb0\x92\x12\x6a\xe2\x5b\xd4\x0c\x8c\x5c\x3c\x5b\x7a\x22\x6d\xe4\x12\xc7\x88\xfa\x1c\x73\xa4\x66\x32\x72\x8e\xc1\x96\x56\xd8\x6d\x99\x2d\x26\xa1\xb6\x3e\x9d\xfc\x37\x00\x00\xff\xff\x11\xb6\x2e\x32\xa4\x22\x00\x00" + +func testMalicioustokenCdcBytes() ([]byte, error) { + return bindataRead( + _testMalicioustokenCdc, + "test/MaliciousToken.cdc", + ) +} + +func testMalicioustokenCdc() (*asset, error) { + bytes, err := testMalicioustokenCdcBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "test/MaliciousToken.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd5, 0xb8, 0x7, 0x7e, 0x6f, 0x93, 0x4f, 0x93, 0x5c, 0xdf, 0x2c, 0xe7, 0x12, 0xde, 0x8a, 0xb4, 0x92, 0x3, 0x8e, 0x82, 0x26, 0x13, 0x7, 0x5b, 0xe4, 0xe9, 0x9b, 0xc9, 0x12, 0x32, 0xa3, 0xc0}} + return a, nil +} + var _utilityBurnerCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\x54\x41\x8b\xe3\x46\x13\xbd\xfb\x57\xbc\xbd\xd9\xc3\x8c\xbd\xdf\xd5\xec\x7c\xbb\xb3\xce\x2e\x09\x21\x09\x24\x03\x39\x84\xb0\xb4\x5a\x25\xab\x71\xab\xda\x74\x97\x46\x28\x8b\xff\x59\x6e\xf9\x63\xa1\x5a\x96\xac\x71\x66\x20\x87\x0c\x0c\x98\xee\x57\xf5\x5e\xbd\x7a\xad\xcd\x66\x83\x8f\x6d\x64\x8a\x70\x09\x06\x36\xb0\x44\x63\x05\x52\x1b\x81\x35\x8c\xca\x58\xe7\x9d\x18\x21\x48\x4d\x28\x29\x49\x6c\xad\xb8\xc0\x08\x15\x0c\xf7\x88\x94\x42\x1b\x2d\x21\x30\x2a\x1f\xba\xf5\x62\xb3\xd9\xe8\x3f\x76\xda\xcd\x15\xad\x84\x98\xf2\xc1\x1d\x1e\xda\x24\x8e\xf1\xbd\x77\x4c\xb8\x43\x2d\x72\x4c\xdb\xcd\x46\x3a\x27\x42\x71\x6d\x43\xb3\x31\x19\xf2\x45\x5b\x49\x7f\x2e\xfb\x86\xd8\xfd\x81\x4f\xa5\x63\xeb\x0e\xaf\xd4\x15\xbe\xa5\xe4\xf6\x7c\x2e\xf9\x68\x92\x38\xc3\xf8\xe1\xaf\x3f\xbd\xa7\xf8\x4a\x91\xb4\xb1\x08\x9e\x58\x16\xc6\x5a\x4a\x69\x69\xbc\x5f\x5d\x6c\x38\x7b\xf3\x75\x01\x00\xda\xf7\xd7\x9a\x18\xbb\x48\xc9\x12\x97\x01\xcb\x9d\x29\x89\x2d\xe1\x7f\xeb\xb7\x2b\xb5\x30\x92\x27\x93\xa8\xbc\x85\x6d\x93\x84\x66\x32\x2c\xc4\x84\xce\x79\x8f\x82\x10\xa9\x09\x4f\x54\xa2\x8a\xa1\x81\x35\x25\x59\x5a\x4f\x0c\x4a\x69\x0a\x4f\x79\x21\x0c\xc7\x42\xb1\x32\x96\xd0\x90\x61\x81\x04\x44\x3a\x7a\x3d\x90\xda\x25\xf8\x90\x04\x15\x19\x69\x23\xdd\xc2\x78\x1f\x3a\xc7\x7b\x5d\x4c\x60\x52\xb4\x29\x4b\x5d\xac\xf1\xbe\x30\xf6\x30\xd1\x34\x24\x75\x28\x15\x40\x9c\xda\x98\xb7\xdb\xa3\x0c\xe0\x20\x83\xe8\xd0\x23\x05\x85\x69\xbf\xae\x76\xb6\x56\x49\x7a\x3d\x29\x29\xe8\x76\x6a\x18\xe2\xc8\xe6\xc3\xde\x59\x14\x6a\x83\x66\x62\x1e\x99\xd4\xda\x1a\x26\x41\xdd\x3d\x68\x5f\xcd\x54\x6a\x8f\x47\xdf\xe7\x38\xe1\xf3\x23\x76\xc1\x7b\xca\xf0\xb1\xf7\xc4\xf1\xe3\x4f\x8f\x9f\xb6\x78\xac\x35\x6b\xbe\x47\x67\x7a\xe5\x4c\x44\x28\x88\xa9\x72\x32\x58\x9a\x8d\x99\x8c\x9b\xaa\x5d\xca\x0a\x7d\x67\xfa\x84\x36\x0d\x81\x2e\xda\xc8\xa3\x19\x8e\x87\xd2\x71\xfd\x6b\x3c\x0c\x36\x76\x75\x40\xe8\x58\x5f\xc8\x94\x76\x7d\x1c\xe7\x5e\xa4\x7a\x71\x73\xc3\x41\x6e\x6e\x26\x3a\x09\x93\x8f\xb3\xb2\x4c\xd0\x99\x3e\xc3\xe6\x99\x9b\x10\x97\x8d\x4f\x51\x18\xf2\x37\xab\x18\x15\xae\x50\xb5\x9c\x67\xd8\x9d\x17\xbc\x5c\x65\xec\x69\x31\xe9\xc8\x13\xe6\xd7\xbd\xf7\xa1\x30\x7e\x9c\x76\x58\x69\xce\xe4\xa4\x73\xfe\x9c\x9d\x68\xd5\xde\x3d\x11\x5f\xd2\xf9\x5d\x95\x5d\x3b\xc6\xf0\xe4\x4a\x2a\x67\xe8\xe6\xe8\xa9\x21\x96\x94\x01\x97\x14\x8f\xd3\x5c\x92\xe2\x64\x60\xd5\x4c\x4e\x3b\x18\xf5\x8f\xea\x0c\x97\x7a\xc7\x17\x6d\x95\x50\xec\x4c\x2c\xd3\xfa\x1f\xde\x8d\x26\x2c\xbf\x40\x82\x52\x6f\xf1\xe1\x81\xfb\x9f\xcf\xe2\xde\xaf\x66\x0e\xba\xea\x8c\xc1\xfd\x3d\xd8\xf9\xd9\x95\xfe\x8d\x74\x03\xe6\xd9\x55\x24\x99\x1f\x9d\xa6\x5f\x9e\x04\x11\xef\xee\xce\x45\x6f\x16\x73\x32\xbd\x4c\x7a\x19\x61\xd2\x7b\x7c\xf8\x3a\x5a\x73\xba\x62\x4e\xeb\x17\xf6\x78\x2d\x2b\x5d\xe8\x41\x3e\xd1\xc8\x60\x62\x9c\x71\xfc\x36\x1b\xfe\xf7\x2b\x9a\xae\x76\x9e\x14\xbf\xf6\xc4\x7b\xa9\xf1\x7f\xbc\xbd\x82\x8c\x33\x39\xa1\x46\xbb\x2a\x78\xf8\x66\x7d\x76\x31\xc9\x95\xb4\xac\x9d\x7c\x95\xe5\x2f\xdf\xdd\x69\xd5\x73\xc4\xe9\xc5\x51\x4c\x8c\xaf\x0c\x53\x3a\x2b\x73\xc7\xbe\x35\xa9\x56\xc7\x7e\xc9\xdf\x91\x2d\x66\xd3\x5d\x9b\xa8\xe5\x07\xea\x13\xee\x73\x97\xb5\xfe\x7e\x61\x7c\x3d\xfe\xf7\xf3\xe7\x4e\x83\x01\xcb\x03\xf5\xdb\xa1\xfc\x99\x23\xab\x37\xff\x89\x27\xca\x74\x6d\xca\xcb\xf9\x8c\x57\x39\x3c\x2d\x4e\x7f\x07\x00\x00\xff\xff\x5f\x32\xec\xc3\xcd\x07\x00\x00" func utilityBurnerCdcBytes() ([]byte, error) { @@ -374,6 +395,7 @@ var _bindata = map[string]func() (*asset, error){ "FungibleToken.cdc": fungibletokenCdc, "FungibleTokenMetadataViews.cdc": fungibletokenmetadataviewsCdc, "FungibleTokenSwitchboard.cdc": fungibletokenswitchboardCdc, + "test/MaliciousToken.cdc": testMalicioustokenCdc, "utility/Burner.cdc": utilityBurnerCdc, "utility/MetadataViews.cdc": utilityMetadataviewsCdc, "utility/NonFungibleToken.cdc": utilityNonfungibletokenCdc, @@ -430,6 +452,9 @@ var _bintree = &bintree{nil, map[string]*bintree{ "FungibleToken.cdc": {fungibletokenCdc, map[string]*bintree{}}, "FungibleTokenMetadataViews.cdc": {fungibletokenmetadataviewsCdc, map[string]*bintree{}}, "FungibleTokenSwitchboard.cdc": {fungibletokenswitchboardCdc, map[string]*bintree{}}, + "test": {nil, map[string]*bintree{ + "MaliciousToken.cdc": {testMalicioustokenCdc, map[string]*bintree{}}, + }}, "utility": {nil, map[string]*bintree{ "Burner.cdc": {utilityBurnerCdc, map[string]*bintree{}}, "MetadataViews.cdc": {utilityMetadataviewsCdc, map[string]*bintree{}}, diff --git a/lib/go/templates/internal/assets/assets.go b/lib/go/templates/internal/assets/assets.go index 9cfda9a..f0545f7 100644 --- a/lib/go/templates/internal/assets/assets.go +++ b/lib/go/templates/internal/assets/assets.go @@ -1,14 +1,14 @@ // Code generated by go-bindata. DO NOT EDIT. // sources: // burn_tokens.cdc (1.637kB) -// generic_transfer_with_address.cdc (2.072kB) -// generic_transfer_with_paths.cdc (1.678kB) +// generic_transfer_with_address.cdc (3.378kB) +// generic_transfer_with_paths.cdc (2.424kB) // metadata/scripts/get_token_metadata.cdc (724B) // metadata/scripts/get_vault_data.cdc (788B) // metadata/scripts/get_vault_display.cdc (782B) // metadata/scripts/get_vault_supply_view.cdc (865B) // metadata/scripts/get_views.cdc (752B) -// metadata/setup_account_from_address.cdc (1.857kB) +// metadata/setup_account_from_address.cdc (2.29kB) // metadata/setup_account_from_vault_reference.cdc (1.84kB) // mint_tokens.cdc (1.758kB) // privateForwarder/create_account_private_forwarder.cdc (1.926kB) @@ -127,7 +127,7 @@ func burn_tokensCdc() (*asset, error) { return a, nil } -var _generic_transfer_with_addressCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x55\x4d\x6f\xdb\x46\x10\x3d\x5b\xbf\xe2\x59\x87\x84\x04\x1c\xfa\x52\xf4\x20\x38\x76\x5d\x17\xee\xa9\x45\x90\x2a\xee\x79\x44\x8e\xc4\x85\xa9\x5d\x62\x77\x28\xc5\x30\xf4\xdf\x8b\xfd\xe0\x56\x54\x6c\xc7\x3e\x58\xd2\x70\xe7\xcd\xcc\x7b\x6f\x96\x6a\xdb\x1b\x2b\x98\xdf\x0f\x7a\xa3\x56\x1d\x2f\xcd\x23\xeb\xf9\xec\xc5\xf0\x5f\x2c\xd4\x90\xd0\x83\xe2\xbd\x9b\xcf\x66\x97\x97\x97\xb8\x23\x8d\x9e\x9c\x83\xd2\x20\xfd\x84\xda\x68\xb1\x54\x0b\xa8\x69\x2c\x3b\x07\xd2\x0d\x34\x6d\x19\x62\x20\x96\xb4\x5b\xb3\x05\x41\x3c\x20\xd6\xd6\x6c\x21\x2d\x49\xce\x0b\xa0\xcb\x56\x39\x74\x2c\x0e\x4f\x66\x40\xdd\x1a\xe3\x18\xd2\x72\xca\xf2\xc1\x3d\x69\xf1\x90\x8e\x75\xe3\x73\x42\xde\xed\x71\x03\x35\x69\xac\xd8\x67\x3b\xd6\x68\xd9\xf2\x05\x9c\xc1\x9e\xba\x80\xec\x5a\x33\x74\x0d\xea\x96\xeb\x47\x90\xdd\x0c\x5b\xd6\x82\x1d\x75\x03\xbb\x00\x26\x06\x5b\x7a\x64\xb8\xc1\xc6\xe2\x4a\x0b\xeb\x86\x9b\xd4\x45\x2e\x14\xa6\xf3\x63\x8e\x23\x2b\x17\x28\xe1\x06\x4a\x87\xde\xc2\xdc\x54\x8b\x32\xba\xa0\xad\x19\xb4\x2c\xf0\xed\x5e\x7d\xff\xf5\x97\x0b\x88\x59\xe0\x36\x26\x5e\x64\xcc\x14\x78\xe1\xc9\xdf\xb4\xe5\x05\xfe\x11\xab\xf4\xa6\xc4\xf3\x6c\x06\x00\x81\x32\xc6\x03\x0d\x9d\xc0\xb2\x33\x83\xad\x39\xf2\xda\x9a\xae\x71\xff\x73\xe7\x62\x94\x2c\x63\xc5\x4a\x6f\xb2\x24\x96\x9b\x00\xd5\xb1\x40\x78\xdb\x07\xac\x05\x7e\x7b\x9e\x38\xa0\x0a\xe1\x43\xae\x7a\xbf\x0c\x81\x3f\x48\x08\x4e\xec\x50\x07\x4d\x36\x2c\xe8\x49\x5a\x17\xf4\xcd\xb0\xbb\xf1\xe8\x02\xaf\xdb\xaa\x3a\x82\x8c\x65\x7a\xcb\x3d\x59\x2e\x9c\xda\x68\xb6\x0b\xd0\x20\x6d\xf1\xbb\xb1\xd6\xec\x1f\xbc\x5a\x25\x3e\xdc\xd6\xb5\x27\x35\xf3\x91\xba\x8b\x87\x40\xb0\xbc\x66\xcb\xba\x8e\x26\x6c\x39\xb6\x02\x27\xc6\x72\x03\xa3\x43\x2c\x49\x46\x11\x0b\x24\xc7\xd1\x7e\x58\x75\xaa\xfe\x42\xd2\xe6\x02\x7e\x24\xcf\x75\xb7\x63\xfb\x95\xd7\xf8\xec\xe7\x4e\x9d\x14\x27\x42\x96\x39\xcb\xff\x55\xe3\x53\x57\xad\x42\x8b\x57\x1f\xa6\x34\x1f\xae\x0b\x1d\x74\x3e\x56\x7d\x8a\x71\x73\x83\x9e\xb4\xaa\x8b\xf9\x5d\xf0\xb1\x36\x82\xd5\xab\xf3\xae\x13\xfa\x89\x75\xe7\xe5\x84\xaf\x6f\x2e\x99\x66\x92\x6f\x59\xac\xe2\x5d\xdc\x81\xfb\xa5\x57\x09\x39\xcb\x71\xb7\xae\xb2\xb0\xf8\x7c\xcc\x48\x95\xbe\xdf\xa5\x6a\x3e\xb3\x18\xdd\xb9\x7c\xea\x79\x01\xad\xba\x0b\xec\x14\xef\xe3\x4f\xff\xff\xea\x7d\xde\xb8\x2e\xca\x12\xe4\xce\xdf\x69\xa5\x9b\x9f\x92\x97\x9a\x1d\xa7\xcc\x23\xf9\xee\xb0\x36\x36\x3c\xd8\xa8\x1d\xeb\x5c\xf2\x6d\x36\xff\x64\x79\x49\x8a\x68\xe3\x8f\x6e\x74\x5f\x20\x6f\x62\xaa\x10\x89\x8e\x8a\x87\x2b\x7f\x94\x36\x3c\xba\x25\x6c\xc0\x74\x2f\xff\x55\xd2\x36\x96\xf6\x25\x4e\xac\x54\x7d\xb1\x66\xa7\x1a\xb6\x87\xeb\xc2\x6f\xe3\xe2\x44\xb2\x11\xdb\x5b\xbb\x9c\x9d\x9d\x9d\xbd\x61\xac\x1f\x66\x31\xfb\x38\x4a\x60\xeb\xfc\x78\xfe\x50\x24\xdf\x23\xb8\xfa\x94\xa7\xaa\xf6\xa9\xd5\x7c\x13\xc6\xcf\x68\xef\x74\xb5\xf0\x77\xae\x07\x61\x3c\x9f\x6c\x5b\xad\x7a\xe5\xaf\xe9\xc9\xae\x89\x29\x4f\x8f\xb1\xca\x4b\x99\x93\xaa\x9a\x7a\x5a\xa9\x4e\x89\xe2\xd7\x16\xaf\xfa\x9a\x72\x0f\xd7\xc5\x09\x4f\x23\x6a\x24\xea\x9d\xab\xf8\x03\x63\xb9\x9b\x8f\x0e\x63\xad\xf3\x13\xe3\x2c\xc7\xb7\x64\xba\xb1\xd3\x4b\xf2\x15\xeb\x1c\x21\x07\x34\xe4\x31\x9f\x32\xe8\x11\x23\x55\xc3\xbd\x71\x4a\x92\x19\xae\x3e\x4d\x95\x1a\x55\x38\xfc\x17\x00\x00\xff\xff\xb0\x78\xc6\x50\x18\x08\x00\x00" +var _generic_transfer_with_addressCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x57\x51\x6f\xdb\x36\x10\x7e\x8e\x7f\xc5\x59\x03\x5a\x09\x70\x94\x64\x18\x86\xc2\x88\x93\x66\xd9\xd2\xa7\x0d\x45\xeb\x64\xcf\xb4\x74\x96\x88\x48\xa4\x46\x9e\xac\x18\x81\xff\xfb\x40\x52\xa2\x45\x3b\xee\xba\xe6\x21\x76\x48\xde\x77\xdf\xdd\x7d\x77\x64\x78\xdd\x48\x45\x10\x3d\xb4\xa2\xe0\xab\x0a\x97\xf2\x19\x45\x34\x79\x73\xf9\x4f\x24\x96\x33\x62\x4f\x1c\x3b\x1d\x4d\x26\x3f\x71\x41\xa8\x58\x46\x5c\x0a\x88\x27\x00\x1b\x54\x9a\x4b\x31\x87\xe8\x2a\xbd\x4c\x2f\xa3\xd9\xe4\x8c\x38\x55\x38\x87\xe8\x13\x0a\x54\x3c\x83\x87\x25\x2c\x15\x13\x7a\x8d\x0a\x3a\x4e\x25\xdc\x4b\x41\x06\x03\xee\xf2\x5c\xa1\xd6\xc0\x44\x0e\x7f\xb1\x1a\x8d\x75\x8e\x3a\x53\xbc\x21\x07\xea\x0d\x99\xd8\xc2\xc0\x0c\x2c\x35\x58\x6d\xa1\x51\x72\xc3\x73\x2e\x0a\xa0\x12\x21\x1b\x70\xd9\x08\x57\xf4\xb8\x15\x13\x45\xcb\x0a\x43\x0c\xc5\xf9\xe3\xd7\x68\x36\x49\x26\x93\x8b\x8b\x0b\xb8\x67\x02\x1a\xa6\x35\x70\x61\xdd\x9c\x84\x01\x92\x40\x9e\x10\x90\x65\xb1\x56\xb2\x06\x2a\x19\x79\x3b\x0b\xba\x2c\xb9\x86\x0a\x49\xc3\x56\xb6\x90\x95\x52\x6a\xb4\x24\x9d\x95\x59\xec\x98\x20\x03\xa9\x51\xe4\xc6\xc6\xda\xdd\x8d\x09\x64\x4c\xc0\x0a\x8d\xb5\x46\x01\x25\x2a\x9c\x81\x96\xd0\xb1\xca\x22\xeb\x52\xb6\x55\x0e\x59\x89\xd9\x33\x30\x55\xb4\x35\x0a\x82\x0d\xab\x5a\xd4\x16\x8c\x24\xd4\xec\x19\x41\xb7\xca\x39\x37\xd5\x13\x39\xe6\x3d\x0b\xef\xc8\x46\x67\xc2\x1c\x42\xe6\xda\xa6\x04\x73\xe0\xc2\x25\xa9\x3f\xaa\x5d\xac\x4c\x21\xb4\x66\xbb\x6e\x35\x01\xaf\x9b\x0a\xad\x73\xe3\xe4\x61\xf9\xc4\xda\x8a\x7e\x67\xc4\x60\xd0\x0f\x18\x01\xf9\x20\x3f\x36\x4c\xb1\x1a\x58\x2d\x5b\x41\x73\x58\x96\xd8\x7f\x07\xb9\x76\xd4\xf4\x38\xd7\x63\x1b\x92\xfd\xf9\x9e\xe8\xb8\x24\x3e\xbd\x66\x79\x6c\x34\xc4\xd9\xeb\x2d\x44\x30\x2e\xc7\xe2\xb1\xf1\xe5\xb8\xe6\x02\xf5\x18\x72\x85\x56\x67\xbd\x33\x85\xf9\x5b\x1e\x8c\x8a\x1d\xbc\x4d\xe9\x0f\x63\xa7\xf0\xc7\xcb\x1c\xa2\x87\x4a\x76\x7d\x7b\x9a\xdc\xd9\x03\xae\xf9\xe2\x21\x79\x8f\x0f\xfc\xe5\xd7\x5f\x66\x36\x31\x7d\x7c\xb3\xe3\x80\x8f\x76\x1c\xd1\xaf\xa4\xb8\x28\x12\x78\x9d\x4c\x00\x00\xac\x6e\x11\x6c\xf9\x40\xa1\x96\xad\xca\xd0\x91\x2e\x65\x95\x07\x94\xbd\x0c\x8e\xf3\x62\xa0\x2a\x24\x20\xac\x1b\x8b\x35\x87\x8f\xaf\xc1\x58\x49\xed\xf2\xce\x7b\x1d\x4b\x46\x93\x6a\x33\xdb\x18\x05\x12\x34\x8c\x4a\x6d\x9b\xcc\xc3\x6e\x86\xa3\x73\x38\x3d\xab\xd2\x11\xa4\x73\xd3\x28\x6c\x98\xc2\x58\xf3\x42\xa0\x9a\x03\x6b\xa9\x8c\x7f\x93\x4a\xc9\xee\xc9\xb4\x4c\x02\xef\xee\xb2\xcc\x24\xd5\xe7\xa3\x67\xe7\x0e\x01\x03\x85\x6b\x54\x28\x32\x37\x09\x4a\x74\x54\x40\x93\x54\x98\x83\x14\x76\xad\xef\x1b\xe6\xb0\x80\xd1\x78\xb5\x69\x57\x15\xcf\x3e\x33\x2a\xbd\x03\x13\x92\xc9\x75\xb5\x41\xf5\x05\xd7\xb0\x30\x71\xf7\x4c\xe2\x83\x42\x26\xde\xca\xfc\xa4\xc3\xae\x4e\x57\x96\xe2\xf5\xbb\x30\xcd\xbb\x9b\x58\xd8\x3a\x8f\xab\x1e\x62\xdc\xde\x42\xc3\x04\xcf\xe2\xe8\xde\x0e\x13\x21\x09\x56\x27\xe3\x5d\x0f\x13\x38\x9c\x1f\x51\x12\xe4\xeb\x51\xf7\xa2\x09\xec\x15\x92\xe2\xb8\xc1\x61\x46\x70\xec\xc0\x5b\x69\xac\xd6\xa9\x2f\x2c\x2c\xc6\x19\x49\xfb\xef\xc3\x08\x32\x96\xf1\xa0\xce\xe5\xb6\xc1\x39\x08\x5e\xcd\x60\xc3\xb1\x73\x7f\x9a\xdf\xd7\xdf\xa7\x8d\x9b\x38\x49\x80\xe9\xe9\x77\x4a\xe9\xf6\x3f\x93\xd7\x93\x3d\x9a\x84\x86\x1d\xac\xa5\x9b\x52\x05\xdf\xa0\xd8\xdf\x67\xdf\xcc\xe6\x27\xa4\xb7\x4a\xe1\x64\xfc\x5e\x0f\xea\xb3\xc9\x0b\x44\x65\x57\x9c\xa2\xdc\xe1\xd4\x1c\x65\x05\x0e\x6a\xb1\x1d\x10\xf6\xe5\xdf\x9c\xca\x5c\xb1\x2e\x81\x03\x29\xa5\x9f\xed\x55\x8b\x6a\x77\x13\x9b\x6e\x9c\x1f\x94\x6c\xc0\x36\xd2\x4e\x26\x67\x67\x67\xdf\x10\xd6\x51\x2c\xb2\x73\xa1\xd8\x6c\x4d\xc7\xf1\x5b\x27\x7e\x8e\xc0\xf5\xb9\x8f\x2a\xed\x7a\xaa\x7e\x12\xba\xcf\xe3\xe4\xd9\x6c\xd9\x41\x07\x0a\x1b\x85\x1a\x05\x31\xfb\x80\xe9\xc7\xf3\x70\x13\x18\x44\xd9\x3a\x83\xcb\x17\x0f\xb3\x61\x6a\x38\xe2\xe6\x25\x2c\x0e\x07\x6c\x4a\xd2\x6d\xc5\xfb\xee\xe2\xeb\xd0\x2a\xad\x50\x14\x54\xc2\x62\x01\x57\x1f\xe0\x35\x10\xd2\x21\x7c\x68\xa8\x2b\x9e\x61\x9f\xf5\x9f\x67\xd0\x36\x4b\x39\x87\xab\x0f\x7b\x57\xbb\xa0\xee\xb4\x6d\xd0\x59\x0e\x03\x1e\x16\x10\xdd\xa5\x91\x99\x17\x19\xa3\x38\x40\x4f\x86\xd5\x28\x8d\xfc\xf7\x60\x5e\xec\x0f\xd8\x22\x44\xc9\x91\x37\x58\xc0\xbd\xac\x1b\xa9\x39\xd9\x86\x8c\xf7\x14\xf6\x87\xcd\x00\x54\x14\x07\x71\x5b\xe3\xe9\xc2\xf6\x6f\xb0\x51\xa3\xd6\xee\xb1\xb6\x57\x4f\xa6\x90\x11\x9a\x87\x97\xb1\x32\x85\x3a\xbc\x5e\x0f\x9f\x31\xd3\xc8\x83\x8e\x64\xf1\x16\x91\x50\x67\x69\x81\x64\xe3\x48\x4c\xb5\x8c\xbb\xe9\x29\x7a\xfb\xfb\xd2\x4e\xbc\x8e\x39\x19\x19\x61\x8a\xe0\x71\xc2\xb5\x0d\xc2\xde\xa0\x86\xbf\x3f\xae\xf0\x9f\x16\x35\x61\x1e\xb0\x75\x65\xb5\x1f\xf8\x82\x59\x4b\x38\x92\x8c\xbb\x32\x32\xde\x70\xf3\xe6\x0a\x2e\x0c\x92\xc9\xe1\x31\xe4\xfe\x66\xf1\x46\x69\xc6\x1a\xb6\xe2\x15\x27\x8e\xa7\x6e\x8f\xf4\x4b\x6f\xbb\xbb\x89\x0f\x9a\x7d\x40\x75\xdd\x3e\xce\xcc\xff\x69\x7b\xcf\xe6\xbd\x86\xc1\xd7\xf4\x60\xfa\xf9\x7f\x00\xfa\x67\x47\xff\xdc\x3e\x31\xff\x46\xc8\x16\x0d\x7c\x98\x5b\x0f\x3a\xca\x48\x9a\xa3\x15\x6d\xdf\x5b\xd7\xe7\xa1\x0c\x86\x2a\xec\xfe\x0d\x00\x00\xff\xff\x17\x0e\x79\x31\x32\x0d\x00\x00" func generic_transfer_with_addressCdcBytes() ([]byte, error) { return bindataRead( @@ -143,11 +143,11 @@ func generic_transfer_with_addressCdc() (*asset, error) { } info := bindataFileInfo{name: "generic_transfer_with_address.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x50, 0xe3, 0x8f, 0x2b, 0xb4, 0xff, 0xf8, 0x64, 0xaf, 0xe5, 0x57, 0xf, 0x46, 0xc6, 0x47, 0xae, 0xd8, 0x1c, 0x23, 0x52, 0x67, 0xa5, 0x96, 0xdd, 0xdc, 0x5d, 0x39, 0x26, 0x21, 0x75, 0xb8, 0x7}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xeb, 0x35, 0xf9, 0xf4, 0x21, 0x3d, 0x76, 0xc0, 0x33, 0x55, 0x82, 0x5c, 0x8c, 0xb8, 0x9d, 0x85, 0xfe, 0x2a, 0x34, 0x25, 0xb0, 0xc9, 0xb4, 0x9f, 0x12, 0xbb, 0x8c, 0x3b, 0x53, 0xd3, 0x18, 0x47}} return a, nil } -var _generic_transfer_with_pathsCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x55\x4b\x4f\xeb\x38\x14\x5e\xd3\x5f\xf1\xd1\x05\xa4\x52\x49\x37\xa3\x59\x54\x3c\x86\x41\x62\x34\x3b\x04\x0c\xb3\x76\xed\x93\xc6\x97\xd4\x8e\x7c\x4e\x5a\x2a\xd4\xff\x7e\x65\x27\x4d\x1f\xf4\xea\xea\x5e\x36\x24\xae\x7d\xbe\x67\x5d\xbb\xa8\x7d\x10\x0c\x1f\x1b\x37\xb7\xb3\x8a\x5e\xfd\x3b\xb9\xe1\x60\x30\x99\x4c\xf0\xa0\x1c\x6a\xc5\x0c\xeb\xa0\xdc\x1a\x2c\x3e\xa8\x39\xa1\x56\x52\x42\x39\x83\x40\x9a\xec\x92\x42\xbb\x62\x0d\x39\xb1\x85\xa5\x00\xeb\x58\x48\x19\xf8\x02\xdf\x1a\x16\x48\x49\x30\x54\xa8\xa6\x92\x3c\x8d\x7e\x2d\x2d\xa3\x22\x61\xac\x7d\x03\x5d\x7a\xcf\x94\x76\x49\xc4\x4f\x8b\x2b\xe5\x04\xe2\xc1\xe4\x0c\x14\x63\x45\x55\x95\xb6\x68\x55\xab\x99\xad\xac\xac\xbf\xee\xb3\xf1\x31\x41\x24\x98\x7b\xb7\xee\x26\x26\x86\x5a\x39\xcc\x28\x69\xa2\x34\x53\x39\xa8\x30\x6f\x16\xe4\x04\x25\x05\x1a\x83\x3d\x56\xaa\x4a\xcc\xb8\xf4\x4d\x65\xd2\x9c\xf6\x11\xba\x24\xfd\xbe\x3b\xb1\x54\x55\x43\x1c\xb1\x17\xea\x9d\xc0\x4d\x68\x35\x58\x27\xe4\x0c\x99\x7d\x68\xcb\x5b\x58\xeb\x12\x3d\x09\xca\xb1\xd2\x62\xbd\xcb\xd4\xc2\x37\x4e\xa6\xf8\xef\xd1\x7e\xfc\xf9\xc7\x18\xe2\xa7\xb8\x37\x26\x10\xf3\x38\xe9\xa2\xf0\xa4\xa4\xfc\xb7\x37\x78\x8a\x17\x09\xd6\xcd\xc7\x7d\x04\xa7\x3f\x1f\xe1\x73\x30\x00\x80\x64\x39\xe1\x2d\x26\x80\x40\xec\x9b\xa0\x23\x59\x25\x28\x7d\x65\x78\xe7\x3d\xb7\xab\x2a\x10\x66\x64\xdd\x1c\x89\x68\x41\x21\x90\x49\xa3\x2a\x12\x08\x2d\xea\x34\x6b\x8a\xbf\x3e\x0f\xaa\x93\xa7\xe5\x4d\x8b\x5a\x07\xaa\x55\xa0\x8c\xed\xdc\x45\x52\xaa\x91\x32\xfb\xdb\x87\xe0\x57\x6f\xd1\xbb\x11\x2e\xee\xb5\x8e\xda\x7b\xa2\x5b\x84\xae\x6b\x51\x16\x6e\xf0\xb2\x7b\xcb\xec\x9e\xca\x53\xde\x8c\xfa\x39\xf1\xef\xee\x0e\xb5\x72\x56\x67\xc3\x87\x14\xa1\xf3\x02\xed\x1d\x4b\x68\xb4\x40\x1d\x76\xba\x08\x7e\x91\x9c\xa8\x83\x5f\xda\x98\xe0\x71\xb1\x39\xd9\x3a\x1c\xed\xc8\x4e\x26\xf8\x87\xe2\xa4\x40\x05\x05\x72\xd1\x56\x9f\x86\xb4\xaa\x2f\x39\x61\x90\xc1\x32\x3a\x73\x20\x32\xad\x3c\x53\x81\x9b\x6e\x73\xde\xd1\xc9\x67\xc9\xa4\xeb\x64\xd8\xa1\xbf\xff\x5b\x29\x4d\x50\xab\x11\x2e\x8e\x9c\x7f\x6a\x49\x87\xcd\x6d\x16\x85\x4c\xf7\x3d\x1c\x0d\xce\xce\xce\x4e\x79\xd1\x02\x7d\x25\xef\x57\x2d\xf7\x14\xe7\xf9\xbe\x60\xa6\xaa\xc8\xfb\x02\xe0\xfa\xaa\x97\x91\xaf\x3a\x6e\x7d\xa1\xdb\xff\x6d\x22\x5d\x27\xe8\x83\x74\x23\x84\xcf\x03\x27\xea\x66\x56\x59\xdd\xa5\xfd\xd4\xbf\x1c\x84\x7d\xba\xea\xbf\x16\x77\x8b\xf3\xfb\x69\x47\xae\x81\xb4\xad\x6d\xbc\x00\x6e\x30\x27\xe9\x1a\x9c\x89\x1f\x1d\x6f\x4b\x74\xdb\x7c\xfb\x43\x79\x7f\x7d\x59\xe2\x6d\xce\xc7\x51\x3e\x77\x67\x37\xb7\xd9\xce\x99\x9f\x2b\xfd\x51\x98\x3d\xf8\x25\x63\x3b\xfa\xfc\xa8\xc4\xaf\xdd\xd7\x7c\x7b\x0b\xf4\xee\x9c\xac\xf1\xde\xe4\xf6\x17\x60\x77\x29\xf7\x43\xf7\x0c\xc8\x0d\xd5\x9e\xad\x74\xc5\xbc\xbe\x3a\x2c\xd1\xb6\x20\x9b\xef\x01\x00\x00\xff\xff\xa3\xb6\x2f\xc4\x8e\x06\x00\x00" +var _generic_transfer_with_pathsCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x56\xdf\x6f\xdb\x36\x10\x7e\x8e\xfe\x8a\x8b\x07\xb4\x32\xe0\xc8\x1d\x30\xec\xc1\x88\xdb\x66\xc5\x52\xec\x2d\x68\xdc\xee\x99\x16\xcf\x16\x17\x99\xd4\x8e\x27\x3b\x46\x90\xff\x7d\xe0\x91\x92\xa5\xfc\xc0\x90\xfa\xc5\x12\x7d\xbc\xef\xbb\xef\xbe\x23\x6d\x76\x8d\x23\x86\xc9\x75\x6b\xb7\x66\x5d\xe3\xca\xdd\xa1\x9d\x64\xd9\x2f\xc6\x32\x92\x2a\xd9\x38\x0b\x79\x06\xb0\x47\xf2\xc6\xd9\x05\x4c\x7e\x2d\x3e\x14\x1f\x26\xb3\xec\x8c\x0d\xd7\xb8\x80\xc9\x57\xb4\x48\xa6\x84\xeb\x15\xac\x48\x59\xbf\x41\x82\x83\xe1\x0a\x6e\x14\x57\x3e\x44\x6a\xf4\x25\x99\x86\x63\x82\x3e\x48\xd9\x23\x74\xc0\x20\xc8\xb0\x3e\x42\x43\x6e\x6f\xb4\xb1\x5b\xe0\x0a\xa1\x09\x39\x60\xe3\x48\xde\xbc\x6b\xa9\x44\xf8\xa1\xda\x9a\x41\x59\x0d\x1a\x3d\x1b\xab\x84\xa6\xac\x06\xb8\x5a\xd9\x6d\xab\xb6\x81\x1b\xda\x8b\xef\xb7\x93\x59\x36\xcd\xb2\xf9\x7c\x0e\x5f\x94\x85\x46\x79\x0f\xc6\x0a\xba\x67\x47\x6a\x1b\x51\x24\x1f\x61\x89\x66\x8f\x14\x57\x8c\x46\xcb\x66\x63\x90\xc0\x58\xcf\xa8\x34\xb8\x0d\xfc\xd3\x7a\x16\x36\x1a\x37\x01\xb2\x90\xd4\xab\xca\x78\xa8\x91\x3d\x1c\x5d\x0b\x65\xe5\x9c\x47\x89\x62\x29\x2c\x2c\x1e\x94\x65\x60\x07\x1e\xad\x06\xe5\xe1\x80\x75\x2d\x21\xa5\x6a\xd4\xda\xd4\x86\x8f\xcf\xe3\x4c\x78\x14\x08\x81\xb9\xb2\xc7\x94\x51\x18\x96\xca\xc2\x1a\xa5\x26\x94\x9c\xca\x82\xa2\x6d\xbb\x43\xcb\x50\x21\xe1\x0c\xbc\x83\x83\xaa\x85\x99\xaf\x5c\x5b\x6b\xc9\x13\x1f\xa1\xac\xb0\xbc\x3b\xed\xd8\xab\xba\x45\x1f\xb0\x77\xea\x0e\xc1\xb7\x14\x6b\x08\x6e\xb0\x1a\xf5\x10\xda\xf8\x0e\xd6\xd8\x9e\xde\xe7\x46\x91\xda\x81\xda\xb9\xd6\xf2\x02\x56\x15\xa6\xe7\x20\x9c\x6c\x96\xec\x9c\x2c\x30\xdc\xc3\x2e\xc5\x6b\x4d\xe8\x47\x61\x27\x1d\xc3\xf2\x70\x53\x90\x08\x29\x18\xed\xaf\xbe\x57\x31\x8d\x67\x0a\x1e\x1a\xb4\x30\x30\x90\x1f\x4e\x3d\x97\x54\xe9\x73\x08\x72\x0d\x91\x92\x44\x6b\x14\x37\x6b\x52\x07\x0b\x1b\x72\xbb\x21\x7e\xe7\x97\x37\x31\x68\xda\x75\x6d\xca\xb7\x10\xd0\xd8\x38\x6f\x58\x1a\x20\x5a\x8b\x32\x71\x3c\xf3\x4e\xec\xef\xd7\xe6\xfe\xf7\xdf\x66\x22\xe4\x55\x14\x71\xf6\x8a\x40\xb7\x42\x6d\xf6\x2a\xfd\xf8\xfb\x14\x1e\xb2\x2c\x30\x13\x7b\x77\x63\x47\x98\xa6\x90\x2b\xc5\x50\xb9\x5a\xfb\x51\x7f\xc2\xaa\x22\x84\x35\xca\x0c\xa7\x16\x12\x6a\x49\x55\x23\x03\xe3\xae\x91\x5c\x0b\xf8\xfc\x30\x3a\x79\x0a\x59\x7e\x8c\xa8\x0d\x61\xa3\x08\x73\x6f\xb6\x36\x90\x52\x2d\x57\xf9\x1f\x8e\xc8\x1d\x7e\x04\x9f\x4e\xe1\xdd\x55\x59\x86\xda\x7b\xa2\x1d\x42\xea\x71\x28\x0b\x96\x70\x7b\x7a\xcb\xcd\xa0\xca\x97\xb4\x99\xf6\x79\xc2\xe7\xd3\x27\x68\x94\x35\x65\x3e\xf9\x22\xad\xb0\x8e\xa1\x74\xd6\x33\xb5\x25\x83\x1a\x9f\x1f\xc1\x1b\xb1\xbf\x72\x82\xa1\x7e\x76\x88\x44\x47\x4c\xa6\x27\xb2\xf3\x39\x7c\xc5\x90\x89\x70\x83\x84\x36\xc8\xea\xa2\x4d\xa5\xea\xf7\x5e\x30\x50\xc3\x3e\x28\x33\x2a\x52\x56\xbe\xe1\x06\x96\x29\xb8\x48\x74\x8a\xb5\x88\x74\x29\x82\x8d\xf5\xfd\x3b\x39\x79\x0a\xef\x9e\x28\x7f\x13\x49\xd3\xe3\xc7\x3c\x14\xb2\x18\x6a\x38\xcd\xce\xce\xce\x5e\xd2\x22\x02\x3d\x27\xef\x0e\x91\xbb\xb4\xf3\x7c\x58\xb0\xc7\x7a\x53\xf4\x06\x80\xcb\x8b\xbe\x8c\xa2\x9b\xb2\xde\xd0\xf1\x7b\xb0\x39\x1c\x37\xc4\xf9\xa8\x45\xe3\x84\xc5\x5a\xd5\x2a\x10\x59\x2e\xd3\xf6\xd9\x28\x7a\x87\xde\xc7\x9b\xe1\x4f\x22\x97\x06\x35\x52\x19\x9e\x37\xda\xa1\x97\x02\x2b\xb5\x8f\x23\xd9\xe5\x15\x7b\x1f\x94\x07\xc2\x7f\x5b\xf4\x8c\xfa\x7c\xd2\x23\x44\xf3\x24\xfb\xe2\x3d\x96\x2d\x23\x3c\x8c\x9a\x16\x67\x3f\x19\xf3\xa6\x7f\x19\xf9\xf2\xe5\xa9\x7c\x9b\x33\x07\x67\xcc\x4f\x19\x33\x70\x25\x2c\x4d\x63\xc2\xbd\xb0\x84\x2d\x72\x1a\xb6\x9c\xdd\xf4\x69\x98\xd0\x8d\x56\xec\x37\x15\xfd\xad\x66\xd0\x77\x96\x7c\xea\xba\x6f\x69\xef\xe3\xc7\xfc\xa4\xcc\xff\x57\xfa\x9a\xef\x7a\xf0\xf7\x1e\xba\xd4\xe7\x4f\xe6\xad\xff\xfb\x91\x0e\xac\x5e\x9d\x17\x27\x6e\x90\x39\xfe\x31\x38\xdd\xd5\x7d\xd2\x81\x00\x45\x3a\xa9\xd3\x0c\x5d\x5e\x8c\xed\xd9\x19\xe4\xf1\xbf\x00\x00\x00\xff\xff\x11\x88\x40\x1e\x78\x09\x00\x00" func generic_transfer_with_pathsCdcBytes() ([]byte, error) { return bindataRead( @@ -163,7 +163,7 @@ func generic_transfer_with_pathsCdc() (*asset, error) { } info := bindataFileInfo{name: "generic_transfer_with_paths.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x76, 0xb6, 0xe6, 0xe, 0x4f, 0x9f, 0xd0, 0x1, 0xaa, 0xaf, 0xa9, 0xcf, 0x67, 0x93, 0xb0, 0x92, 0x46, 0x35, 0xe5, 0xf0, 0xa6, 0xb6, 0x1, 0x1b, 0xa, 0x2a, 0x9c, 0x94, 0xcc, 0xac, 0x94, 0xd5}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x11, 0x36, 0xf, 0xd5, 0xaa, 0xb2, 0xf7, 0x8b, 0x4b, 0xcd, 0xf9, 0x2f, 0x25, 0x1f, 0x62, 0xce, 0x7f, 0x51, 0xa4, 0x87, 0x3b, 0x6e, 0x4b, 0x2f, 0xe0, 0x41, 0xa4, 0x1f, 0x36, 0x5a, 0x4, 0x76}} return a, nil } @@ -267,7 +267,7 @@ func metadataScriptsGet_viewsCdc() (*asset, error) { return a, nil } -var _metadataSetup_account_from_addressCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x54\x4b\x6f\xdb\x3c\x10\xbc\xeb\x57\xec\xe7\x43\x20\x03\x8e\x7c\x37\x9c\x04\xf9\xdc\xe6\xd6\xa2\x48\xdc\xdc\xd7\xd4\xca\x22\x22\x93\x02\x77\x69\x35\x08\xfc\xdf\x0b\x52\x8f\x48\x79\x34\x45\xaa\x83\x21\x73\x9f\x33\x9c\x91\x3e\xd4\xd6\x09\xcc\x6e\xbc\xd9\xeb\x5d\x45\x5b\xfb\x40\x66\x96\xbc\x79\xfc\x8d\x04\x73\x14\xbc\xd7\xd4\xf0\x2c\x49\x96\xcb\x25\x6c\x4b\xcd\x20\x0e\x0d\xa3\x12\x6d\x0d\x68\x86\xa6\x44\x01\x34\x80\x4a\x59\x6f\x04\x1a\xeb\xab\x1c\x9c\x37\xb1\x42\x2c\x30\x09\x68\x61\xaa\x0a\xf0\x75\x38\x38\xa0\xc1\x3d\x41\xd1\x4d\x03\x09\xe3\x38\x6b\xbb\x17\xde\xc4\xd6\xb1\xda\x33\x31\x1c\xc3\x02\xa1\xee\xc1\xd8\x06\x9a\x92\x1c\xf5\x6d\x43\xbf\x92\xe0\x88\xbe\x92\x58\xa0\x0d\xb0\x58\x17\xda\xa3\xc9\x43\x9a\x72\x84\x42\x31\x8d\x0e\xb5\x3c\xb6\xc9\x59\x92\x8c\x60\xa4\xca\x1a\x71\xa8\xe4\x3a\xcf\x1d\x31\xaf\xa0\x7b\x59\x40\x1f\xf9\x8e\x07\x5a\xc1\x9d\x38\x6d\xf6\x73\x78\x4a\x12\x00\x80\xda\x51\x8d\x8e\x52\xd6\x7b\x43\x6e\x05\xe8\xa5\x4c\xef\xf0\x48\xf7\x58\x79\x5a\xc0\x06\x6b\xdc\xe9\x4a\x8b\x26\x9e\xc3\xd9\x75\xcb\x50\x28\x87\xee\x59\x2e\xe1\x7f\xeb\x9c\x6d\x00\xc1\x51\x41\x8e\x8c\x8a\xe8\x06\x58\x11\x0f\xe5\x60\x4d\x3c\xab\x91\x99\xf2\x81\x6c\x94\xf1\x69\xed\x77\x95\x56\x3f\x50\xca\x61\x40\x45\x02\x8e\xd8\x56\x47\x72\xb7\x54\xc0\x05\xec\x49\xba\x45\x5e\xc2\x9e\x0f\x55\xe1\xc9\xfa\x28\x67\xbb\xb8\xe2\xfa\xec\x69\x22\x90\xd3\x65\x6a\x22\x2b\x63\x8e\xa6\x3d\xae\xae\xa0\x46\xa3\x55\x3a\xdb\x44\x55\x18\x2b\xb0\x7b\x17\xef\x54\x10\x43\xdb\xd9\x3c\x19\xf3\xf5\x93\xc3\x6d\xa2\x4c\xeb\x1d\x89\xd3\x74\x6c\x2f\xfa\x66\x1b\x44\x0b\x13\x12\x0a\xb9\x0f\x74\x7e\x41\x41\xb8\x18\x53\x92\x75\xef\x9b\x6e\x5c\x28\x4d\xc3\x99\x77\x8a\xb6\x8f\x35\xad\xc0\xe8\x6a\x11\x65\xd8\xfe\x0d\xbf\xeb\xf7\xbd\x92\xdd\x6c\x87\x51\x97\xe9\x7c\x0e\xc8\xff\xc1\xdf\xa5\x5f\x7d\xc8\x5e\xb7\x6c\x0f\x73\x80\x14\xb6\x83\xc2\xba\x18\xd8\xeb\x23\x99\x61\xe4\x9f\xe9\xdc\xb4\xfe\x40\x30\xd4\x8c\x1d\x02\x9e\xb5\xd9\xc7\x76\xad\x85\xbe\x86\x58\x1c\x38\x78\x14\xb4\x61\x9d\xbf\x5a\x66\xc2\x3b\x3d\x97\xad\xcf\x47\x97\x90\xbd\xec\x9a\x4e\xf7\x0a\x36\x02\x2d\xbd\x36\x3a\xc1\x0f\x19\xad\xe5\xb2\xce\xec\x19\xe3\x91\xd2\xf5\xf9\xf3\xb0\x05\x88\x5d\x8d\x2f\xbd\x4f\x0d\xee\x78\x16\xe9\x9b\x4c\xb4\x36\x02\xd5\xbb\xf7\x71\x20\xb6\x65\xa6\x29\xb5\x2a\x41\x1b\x55\xf9\x9c\x38\x06\xb2\xdb\x4e\x50\xa0\x8d\x90\x2b\x50\xd1\x84\x85\x58\xb8\xc1\x1a\x2e\xfa\xcd\xd5\xe8\xdb\x30\xc0\xd0\xcc\x9e\x5e\xfa\x2c\x8b\x18\x4e\x97\xe9\x87\x68\xde\x6a\x1d\xc1\x70\x99\xf6\x1b\x2c\x00\x65\x4a\xcc\xa1\x53\x63\xdb\xeb\x53\x8c\xd0\xaf\xda\x0e\x72\x71\xa4\x48\xbf\x4f\x45\x1f\xfe\x2c\x1b\xb7\x5d\xfd\xbf\x12\x32\xda\xe3\x35\x27\x7d\x70\xc4\xc9\x29\x39\x25\xf0\x3b\x00\x00\xff\xff\xc6\x61\x97\x91\x41\x07\x00\x00" +var _metadataSetup_account_from_addressCdc = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xa4\x55\xdb\x6e\xdb\x46\x10\x7d\x2e\xbf\x62\xca\x02\x01\x05\xc8\x54\xfa\x2a\xf8\xd2\x54\x8d\xfa\xd4\xa2\xb0\x15\xbf\x8f\xc8\xa1\x38\x08\x35\x4b\xec\x0e\xc5\xa8\x81\xff\xbd\xd8\xe5\xc5\xa4\x2f\x4d\x10\xeb\xc1\x90\x77\xf7\x9c\x39\x73\xe6\x22\x3e\xd6\xc6\x2a\xc4\xdb\x46\x0e\xbc\xaf\x68\x67\x3e\x93\xc4\xd1\x8b\xc7\x7f\x91\x62\x8e\x8a\xf7\x4c\xad\x8b\xa3\xe8\x17\x16\x25\x8b\x99\xb2\x11\x48\x22\x80\x13\x59\xc7\x46\xd6\x10\xff\x9a\xbe\x4f\xdf\xc7\xcb\xe8\x27\x65\xad\x68\x0d\xf1\x9f\x24\x64\x39\x83\xed\x0e\x76\x16\xc5\x15\x64\xa1\x65\x2d\x61\x63\x44\x3d\x07\x7c\xc8\x73\x4b\xce\x01\x4a\x0e\x7f\xe3\x91\x3c\x3a\x27\x97\x59\xae\xb5\x23\x1d\x81\x28\x67\x18\x94\x41\x90\x06\xfb\x33\xd4\xd6\x9c\x38\x67\x39\x80\x96\x04\xd9\xc0\x8b\x13\x5e\xe9\x79\x2b\x94\x43\x83\x07\x2f\x8c\xe4\xe2\xd3\x5d\xbc\x8c\x16\x51\xb4\x5a\xad\x60\x57\xb2\x03\xf5\x81\xfa\xbc\xd8\x41\x5b\xa2\x02\x0a\x60\x96\x99\x46\x14\x5a\xd3\x54\x39\xd8\x46\x02\x42\x0d\x38\x52\x60\x75\x54\x15\xd0\xd4\xfe\xe0\x88\x82\x07\x82\x62\xd0\xa8\x5e\xa3\x4b\x3b\xf6\xa2\x91\x40\x1d\xd0\x8d\x23\x07\x27\x6f\xa8\xc7\x7d\x16\xd3\x42\x5b\x92\xa5\x81\xd6\xf3\x95\x04\x27\x6c\x2a\x0d\x00\x16\x70\x6a\xac\xa7\xf7\x19\xa9\x81\xcc\x12\x2a\x85\x67\x74\xac\xf5\xdc\x3d\x4e\xfd\xeb\x80\xf8\xad\x46\x8b\xc7\xd1\x90\xde\xe7\x35\xec\x4a\x1a\xcd\x31\xc5\xcc\xb4\x80\xeb\x3f\xea\xb3\xcf\xa9\x60\x21\x17\x1e\x75\xc9\xf8\xc8\x2c\xac\x8c\x15\xff\x4b\x2f\x05\xf2\x45\xec\xa2\x78\xdb\xdf\x1c\x22\x85\x8f\x5f\xd6\x10\x6f\x2b\xd3\xf6\x4d\x1a\x4d\xea\x94\x3c\x4b\xaf\xff\xb2\x7c\xa2\xe7\x4e\x2d\xcb\x61\x01\x5f\xa3\xc8\x87\xae\x2d\xd5\x68\x29\x71\x7c\x10\xb2\x6b\xc0\x46\xcb\xe4\x0e\x4f\x74\x8f\x55\x43\x4b\xd8\x60\x8d\x7b\xae\x58\x99\xdc\x02\xde\x7d\xe8\x5a\xc0\xc3\x07\xf1\xab\x15\xfc\x6e\xac\x35\x2d\x20\x58\x2a\xc8\x92\x64\xa1\x7c\x63\xdd\x42\xc1\x28\x07\x23\xe1\xac\x46\xe7\x28\x1f\xbb\x09\x75\x7a\x5a\x37\xfb\x8a\xb3\x7f\x50\xcb\x31\x40\x45\x0a\x96\x9c\xa9\x4e\x64\x6f\xa9\x80\x2b\x38\x90\xf6\x42\x9e\xa6\xbd\x18\x51\xfe\x93\x0e\xb7\x2e\xdd\x07\x89\x97\xef\xbe\xce\x26\xfa\xe1\x3a\x91\xe0\xca\xd4\xa3\x39\xc7\xcd\x0d\xd4\x28\x9c\x25\xf1\x26\xb4\xbd\x18\x85\xfd\xab\xf9\xce\x3b\x7e\xa4\x8d\x17\xd1\xd4\xaf\x4f\x8e\xba\x9a\xcf\xf0\x96\xd4\x32\x9d\xba\x4e\xde\xee\xfc\x96\x81\x99\x09\x85\xde\x7b\x3b\xff\x40\x45\xb8\x9a\x5a\x92\xf6\xdf\x87\x5d\xe2\xa1\x89\x3f\x6b\x6c\x46\xbb\x73\x4d\x6b\x10\xae\x96\x61\xce\xba\x7f\xfd\xdf\xcb\xd7\x97\x5b\xba\xdd\x8d\xa1\xae\x93\xc5\x02\xd0\xfd\x0c\xdf\xf7\xfc\xe6\x9b\xee\xf5\x62\x87\x34\xc7\x94\xbc\x3a\x28\x8c\x0d\x17\x07\x3e\x91\x3c\x2e\xb9\xff\xb5\x73\xd3\x2d\x00\x04\xa1\x76\xba\x02\xa0\x71\xe3\x36\x0c\x4f\x3e\xfa\xbb\x10\x70\x5c\x42\xc0\xe2\x38\x7f\x26\x66\xe6\x3b\x3d\xc2\x2e\x2f\x26\x45\x48\x9f\xb2\x26\x73\x5d\x7e\x8c\x80\x75\xe8\x8d\xbe\xe1\xc7\x17\xdd\xc8\xa5\xfd\x36\x4b\x1d\x9e\x28\xb9\xbc\x78\x0c\xb6\x04\x35\xeb\x69\xd1\x87\xa7\x7e\x3a\x1e\x9b\xf4\x45\x27\xba\x31\x82\x6c\x98\xde\xf3\x68\x6c\xe7\x4c\x5b\x72\x56\x02\x4b\x56\x35\x79\xbf\x73\xd2\xdb\xbe\xa1\x20\xfc\xac\x15\x98\xd1\xcc\x85\x00\xdc\x60\x0d\x57\x83\xf2\x6c\xb2\x1b\xc6\x34\xd8\xb9\x86\x9e\xce\x59\x1a\x72\x78\xb8\x4e\xbe\x99\xcd\x4b\xd4\x21\x19\x57\x26\x83\x82\x25\xa0\xce\x8d\x39\xf6\xdd\xd8\x71\xfd\x90\x23\xf4\xa5\x36\x63\xbb\x58\xca\x88\x5f\xb7\x62\xb8\xfe\x51\x37\x6e\x7b\xfc\x5b\x0d\x99\xe8\x78\xee\xc9\x70\x39\xf1\xe4\x21\x7a\x88\xe0\xbf\x00\x00\x00\xff\xff\xdf\x92\xe8\xbe\xf2\x08\x00\x00" func metadataSetup_account_from_addressCdcBytes() ([]byte, error) { return bindataRead( @@ -283,7 +283,7 @@ func metadataSetup_account_from_addressCdc() (*asset, error) { } info := bindataFileInfo{name: "metadata/setup_account_from_address.cdc", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)} - a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x18, 0x2e, 0xb8, 0xe0, 0x29, 0x5b, 0x76, 0x7e, 0xc7, 0x7e, 0xf3, 0x51, 0xec, 0x7e, 0xad, 0x23, 0xad, 0x97, 0xd9, 0x0, 0xf4, 0x6, 0xd7, 0x49, 0x21, 0x3c, 0xc4, 0xce, 0xf6, 0x67, 0x5e, 0x4c}} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5f, 0xd3, 0x1f, 0x1a, 0x17, 0xf5, 0x27, 0x40, 0xf8, 0xc3, 0x13, 0xf4, 0x93, 0x41, 0xd4, 0x7b, 0xee, 0xac, 0x21, 0x8d, 0x6a, 0x4d, 0x30, 0x37, 0xad, 0x75, 0x9, 0x2a, 0xac, 0x57, 0x87, 0x87}} return a, nil } diff --git a/tests/example_token_test.cdc b/tests/example_token_test.cdc index 840752e..7c26840 100644 --- a/tests/example_token_test.cdc +++ b/tests/example_token_test.cdc @@ -6,17 +6,16 @@ import "ExampleToken" import "FungibleToken" access(all) let admin = Test.getAccount(0x0000000000000007) +access(all) let service = Test.getAccount(0x0000000000000001) access(all) let recipient = Test.createAccount() access(all) fun setup() { - deploy("ViewResolver", "../contracts/utility/ViewResolver.cdc") deploy("Burner", "../contracts/utility/Burner.cdc") deploy("FungibleToken", "../contracts/FungibleToken.cdc") - deploy("NonFungibleToken", "../contracts/utility/NonFungibleToken.cdc") - deploy("MetadataViews", "../contracts/utility/MetadataViews.cdc") deploy("FungibleTokenMetadataViews", "../contracts/FungibleTokenMetadataViews.cdc") deploy("ExampleToken", "../contracts/ExampleToken.cdc") + deploy("MaliciousToken", "../contracts/test/MaliciousToken.cdc") } access(all) @@ -309,3 +308,18 @@ fun testGetUnsupportedViewType() { let view = scriptResult.returnValue Test.expect(view, Test.beNil()) } + + +access(all) fun testTransferTokenFromMaliciousContract() { + + var txResult = executeTransaction( + "../transactions/generic_transfer_with_address.cdc", + [0.1, admin.address, admin.address, "MaliciousToken"], + recipient + ) + Test.expect(txResult, Test.beFailed()) + Test.assertError( + txResult, + errorMessage: "The Vault that was withdrawn to transfer is not the type that was requested!" + ) +} diff --git a/tests/metadata_views_test.cdc b/tests/metadata_views_test.cdc index b9da725..20aff0c 100644 --- a/tests/metadata_views_test.cdc +++ b/tests/metadata_views_test.cdc @@ -11,11 +11,8 @@ access(all) let admin = Test.getAccount(0x0000000000000007) /* Test Setup */ access(all) fun setup() { - deploy("ViewResolver", "../contracts/utility/ViewResolver.cdc") deploy("Burner", "../contracts/utility/Burner.cdc") deploy("FungibleToken", "../contracts/FungibleToken.cdc") - deploy("NonFungibleToken", "../contracts/utility/NonFungibleToken.cdc") - deploy("MetadataViews", "../contracts/utility/MetadataViews.cdc") deploy("FungibleTokenMetadataViews", "../contracts/FungibleTokenMetadataViews.cdc") deploy("ExampleToken", "../contracts/ExampleToken.cdc") } diff --git a/tests/private_receiver_forwarder_test.cdc b/tests/private_receiver_forwarder_test.cdc index 7da9f19..1593b8a 100644 --- a/tests/private_receiver_forwarder_test.cdc +++ b/tests/private_receiver_forwarder_test.cdc @@ -13,11 +13,11 @@ access(all) let privateReceiverPublicPath = /public/PrivateReceiver access(all) fun setup() { // helper nft contract so we can actually talk to nfts with tests - deploy("ViewResolver", "../contracts/utility/ViewResolver.cdc") + // deploy("ViewResolver", "../contracts/utility/ViewResolver.cdc") deploy("Burner", "../contracts/utility/Burner.cdc") deploy("FungibleToken", "../contracts/FungibleToken.cdc") - deploy("NonFungibleToken", "../contracts/utility/NonFungibleToken.cdc") - deploy("MetadataViews", "../contracts/utility/MetadataViews.cdc") + // deploy("NonFungibleToken", "../contracts/utility/NonFungibleToken.cdc") + // deploy("MetadataViews", "../contracts/utility/MetadataViews.cdc") deploy("FungibleTokenMetadataViews", "../contracts/FungibleTokenMetadataViews.cdc") deploy("ExampleToken", "../contracts/ExampleToken.cdc") deployWithArgs( diff --git a/tests/switchboard_test.cdc b/tests/switchboard_test.cdc index b4e4452..75893fb 100644 --- a/tests/switchboard_test.cdc +++ b/tests/switchboard_test.cdc @@ -11,11 +11,11 @@ access(all) let recipient = Test.createAccount() access(all) fun setup() { - deploy("ViewResolver", "../contracts/utility/ViewResolver.cdc") + // deploy("ViewResolver", "../contracts/utility/ViewResolver.cdc") deploy("Burner", "../contracts/utility/Burner.cdc") deploy("FungibleToken", "../contracts/FungibleToken.cdc") - deploy("NonFungibleToken", "../contracts/utility/NonFungibleToken.cdc") - deploy("MetadataViews", "../contracts/utility/MetadataViews.cdc") + // deploy("NonFungibleToken", "../contracts/utility/NonFungibleToken.cdc") + // deploy("MetadataViews", "../contracts/utility/MetadataViews.cdc") deploy("FungibleTokenMetadataViews", "../contracts/FungibleTokenMetadataViews.cdc") deploy("ExampleToken", "../contracts/ExampleToken.cdc") deploy("FungibleTokenSwitchboard", "../contracts/FungibleTokenSwitchboard.cdc") diff --git a/transactions/generic_transfer_with_address.cdc b/transactions/generic_transfer_with_address.cdc index 486036e..db6a16f 100644 --- a/transactions/generic_transfer_with_address.cdc +++ b/transactions/generic_transfer_with_address.cdc @@ -1,11 +1,24 @@ import "FungibleToken" import "FungibleTokenMetadataViews" +#interaction ( + version: "1.0.0", + title: "Generic FT Transfer with Contract Address and Name", + description: "Transfer any Fungible Token by providing the contract address and name", + language: "en-US", +) + /// Can pass in any contract address and name to transfer a token from that contract /// This lets you choose the token you want to send /// /// Any contract can be chosen here, so wallets should check argument values /// to make sure the intended token contract name and address is passed in +/// Contracts that are used must implement the FTVaultData Metadata View +/// +/// @param amount: The amount of tokens to transfer +/// @param to: The address to transfer the tokens to +/// @param contractAddress: The address of the contract that defines the tokens being transferred +/// @param contractName: The name of the contract that defines the tokens being transferred. Ex: "FlowToken" /// transaction(amount: UFix64, to: Address, contractAddress: Address, contractName: String) { @@ -31,6 +44,23 @@ transaction(amount: UFix64, to: Address, contractAddress: Address, contractName: ?? panic("Could not borrow reference to the owner's Vault!") self.tempVault <- vaultRef.withdraw(amount: amount) + + // Get the string representation of the address without the 0x + var addressString = contractAddress.toString() + if addressString.length == 18 { + addressString = addressString.slice(from: 2, upTo: 18) + } + let typeString: String = "A.".concat(addressString).concat(".").concat(contractName).concat(".Vault") + let type = CompositeType(typeString) + assert( + type != nil, + message: "Could not create a type out of the contract name and address!" + ) + + assert( + self.tempVault.getType() == type!, + message: "The Vault that was withdrawn to transfer is not the type that was requested!" + ) } execute { diff --git a/transactions/generic_transfer_with_paths.cdc b/transactions/generic_transfer_with_paths.cdc index cbb99b5..4073fbe 100644 --- a/transactions/generic_transfer_with_paths.cdc +++ b/transactions/generic_transfer_with_paths.cdc @@ -1,11 +1,25 @@ import "FungibleToken" +#interaction ( + version: "1.0.0", + title: "Generic FT Transfer with Paths", + description: "Transfer any Fungible Token by providing the paths for the source Vault and destination Vault", + language: "en-US", +) + /// Can pass in any storage path and receiver path identifier instead of just the default. /// This lets you choose the token you want to send as well the capability you want to send it to. /// /// Any token path can be passed as an argument here, so wallets should /// should check argument values to make sure the intended token path is passed in /// +/// @param amount: The amount of tokens to transfer +/// @param to: The address to transfer the tokens to +/// @param senderPathIdentifier: The string identifier of the storage path +/// where the tokens should be withdrawn from +/// @param receiverPathIdentifier: The string identifier of the public path +/// where the tokens should be deposited to +/// transaction(amount: UFix64, to: Address, senderPathIdentifier: String, receiverPathIdentifier: String) { // The Vault resource that holds the tokens that are being transferred @@ -21,6 +35,11 @@ transaction(amount: UFix64, to: Address, senderPathIdentifier: String, receiverP ?? panic("Could not borrow reference to the owner's Vault!") self.tempVault <- vaultRef.withdraw(amount: amount) + + assert( + self.tempVault.balance == amount, + message: "Error: The Vault to transfer does not have the balance that was requested!" + ) } execute { diff --git a/transactions/metadata/setup_account_from_address.cdc b/transactions/metadata/setup_account_from_address.cdc index f6bfe62..ab3a41e 100644 --- a/transactions/metadata/setup_account_from_address.cdc +++ b/transactions/metadata/setup_account_from_address.cdc @@ -1,10 +1,22 @@ import "FungibleToken" import "FungibleTokenMetadataViews" +#interaction ( + version: "1.0.0", + title: "Generic FT Transfer with Contract Address and Name", + description: "Transfer any Fungible Token by providing the contract address and name", + language: "en-US", +) + /// This transaction is what an account would run /// to set itself up to manage fungible tokens. This function /// uses views to know where to set up the vault /// in storage and to create the empty vault. +/// +/// @param contractAddress: The address of the contract +/// that defines the tokens to initialize +/// @param contractName: The name of the contract +/// that defines the tokens to initialize. Ex: "FlowToken" transaction(contractAddress: Address, contractName: String) {