diff --git a/contracts/src/lib/ContractTransparencyConfig.sol b/contracts/src/lib/ContractTransparencyConfig.sol index 65000ea00e..96d17970dd 100644 --- a/contracts/src/lib/ContractTransparencyConfig.sol +++ b/contracts/src/lib/ContractTransparencyConfig.sol @@ -4,18 +4,26 @@ pragma solidity ^0.8.20; // implement this interface if you want to configure the visibility rules of your smart contract // the TEN platform will interpret this information interface ContractTransparencyConfig { + // configuration per event log type + enum Field{ + TOPIC1, TOPIC2, TOPIC3, // if any of these fields is in the relevantTo array, then the address in that topic will be able to query for that event + SENDER, // the tx.origin will be able to query for the event + EVERYONE // the event is public - visible to everyone + } + + enum ContractCfg{ + TRANSPARENT, //the internal state via getStorageAt will be accessible to everyone. All events will be public. This is the strongest setting. + PRIVATE // internal state is hidden, and events can be configured. + } + // configuration per event log type struct EventLogConfig { - bytes eventSignature; - bool isPublic; // everyone can see and query for this event - bool topic1CanView; // If the event is private, and this is true, it means that the address from topic1 is an EOA that can view this event - bool topic2CanView; // same - bool topic3CanView; // same - bool visibleToSender; // if true, the tx signer will see this event. Default false + bytes32 eventSignature; + Field[] visibleTo; } struct VisibilityConfig { - bool isTransparent; // If true - the internal state via getStorageAt will be accessible to everyone. All events will be public. Default false + ContractCfg contractCfg; EventLogConfig[] eventLogConfigs; // mapping from event signature to visibility configs per event } diff --git a/go/enclave/evm/ContractTransparency.go b/go/enclave/evm/ContractTransparency.go index 8d0f4b1526..5ec665181c 100644 --- a/go/enclave/evm/ContractTransparency.go +++ b/go/enclave/evm/ContractTransparency.go @@ -28,24 +28,33 @@ var ( _ = abi.ConvertType ) +const ( + topic1 uint8 = iota + topic2 + topic3 + sender + everyone +) + +const ( + transparent uint8 = iota + private +) + // ContractTranspMetaData contains all meta data concerning the TransparencyConfig contract. var ContractTranspMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"visibilityRules\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isTransparent\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"eventSignature\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isPublic\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"topic1CanView\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"topic2CanView\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"topic3CanView\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"visibleToSender\",\"type\":\"bool\"}],\"internalType\":\"structContractTransparencyConfig.EventLogConfig[]\",\"name\":\"eventLogConfigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structContractTransparencyConfig.VisibilityConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[],\"name\":\"visibilityRules\",\"outputs\":[{\"components\":[{\"internalType\":\"enumContractTransparencyConfig.ContractCfg\",\"name\":\"contractCfg\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"eventSignature\",\"type\":\"bytes32\"},{\"internalType\":\"enumContractTransparencyConfig.Field[]\",\"name\":\"visibleTo\",\"type\":\"uint8[]\"}],\"internalType\":\"structContractTransparencyConfig.EventLogConfig[]\",\"name\":\"eventLogConfigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structContractTransparencyConfig.VisibilityConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", } // ContractTransparencyConfigEventLogConfig is an auto generated low-level Go binding around an user-defined struct. type ContractTransparencyConfigEventLogConfig struct { - EventSignature []byte - IsPublic bool - Topic1CanView bool - Topic2CanView bool - Topic3CanView bool - VisibleToSender bool + EventSignature common.Hash + VisibleTo []uint8 } // ContractTransparencyConfigVisibilityConfig is an auto generated low-level Go binding around an user-defined struct. type ContractTransparencyConfigVisibilityConfig struct { - IsTransparent bool + ContractCfg uint8 EventLogConfigs []ContractTransparencyConfigEventLogConfig } diff --git a/go/enclave/evm/evm_facade.go b/go/enclave/evm/evm_facade.go index b6d6d0515c..90c49cd152 100644 --- a/go/enclave/evm/evm_facade.go +++ b/go/enclave/evm/evm_facade.go @@ -268,29 +268,53 @@ func readVisibilityConfig(vmenv *vm.EVM, contractAddress *gethcommon.Address) *c return &core.ContractVisibilityConfig{AutoConfig: true} } + transp := false + if visibilityRules.ContractCfg == transparent { + transp = true + } + cfg := &core.ContractVisibilityConfig{ AutoConfig: false, - Transparent: &visibilityRules.IsTransparent, + Transparent: &transp, EventConfigs: make(map[gethcommon.Hash]*core.EventVisibilityConfig), } + if transp { + return cfg + } + + // only check the config for non-transparent contracts for i := range visibilityRules.EventLogConfigs { logConfig := visibilityRules.EventLogConfigs[i] + cfg.EventConfigs[logConfig.EventSignature] = eventCfg(logConfig) + } + + return cfg +} - sig := gethcommon.Hash{} - sig.SetBytes(logConfig.EventSignature) +func eventCfg(logConfig ContractTransparencyConfigEventLogConfig) *core.EventVisibilityConfig { + relevantToMap := make(map[uint8]bool) + for _, field := range logConfig.VisibleTo { + relevantToMap[field] = true + } + isPublic := relevantToMap[everyone] - cfg.EventConfigs[sig] = &core.EventVisibilityConfig{ - AutoConfig: false, - Public: logConfig.IsPublic, - Topic1CanView: &logConfig.Topic1CanView, - Topic2CanView: &logConfig.Topic2CanView, - Topic3CanView: &logConfig.Topic3CanView, - SenderCanView: &logConfig.VisibleToSender, - } + if isPublic { + return &core.EventVisibilityConfig{AutoConfig: false, Public: true} } - return cfg + t1 := relevantToMap[topic1] + t2 := relevantToMap[topic2] + t3 := relevantToMap[topic3] + s := relevantToMap[sender] + return &core.EventVisibilityConfig{ + AutoConfig: false, + Public: false, + Topic1CanView: &t1, + Topic2CanView: &t2, + Topic3CanView: &t3, + SenderCanView: &s, + } } func logReceipt(r *types.Receipt, logger gethlog.Logger) { diff --git a/integration/erc20contract/ObsERC20.sol b/integration/erc20contract/ObsERC20.sol index bddcc3d08b..6e0d21d3b7 100644 --- a/integration/erc20contract/ObsERC20.sol +++ b/integration/erc20contract/ObsERC20.sol @@ -8,18 +8,26 @@ import "libs/openzeppelin/contracts/token/ERC20/ERC20.sol"; // implement this interface if you want to configure the visibility rules of your smart contract // the TEN platform will interpret this information interface ContractTransparencyConfig { + // configuration per event log type + enum Field{ + TOPIC1, TOPIC2, TOPIC3, + SENDER, // tx.origin - msg.sender + EVERYONE // the event is public - visible to everyone + } + + enum ContractCfg{ + TRANSPARENT, //the internal state via getStorageAt will be accessible to everyone. All events will be public. This is the strongest setting. + PRIVATE // internal state is hidden, and events can be configured. + } + // configuration per event log type struct EventLogConfig { - bytes eventSignature; - bool isPublic; // everyone can see and query for this event - bool topic1CanView; // If the event is private, and this is true, it means that the address from topic1 is an EOA that can view this event - bool topic2CanView; // same - bool topic3CanView; // same - bool visibleToSender; // if true, the tx signer will see this event. Default false + bytes32 eventSignature; + Field[] visibleTo; } struct VisibilityConfig { - bool isTransparent; // If true - the internal state via getStorageAt will be accessible to everyone. All events will be public. Default false + ContractCfg contractCfg; EventLogConfig[] eventLogConfigs; // mapping from event signature to visibility configs per event } @@ -78,12 +86,20 @@ contract ObsERC20 is ERC20, ContractTransparencyConfig { } function visibilityRules() public override pure returns (VisibilityConfig memory){ - EventLogConfig[] memory configs = new EventLogConfig[](1); - // erc20 transfer - configs[0] = EventLogConfig(hex"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", false, true, true, false, false); - return VisibilityConfig(false, configs); + bytes32 eventSig = hex"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"; + Field[] memory relevantTo = new Field[](3); + relevantTo[0] = Field.TOPIC1; + relevantTo[1] = Field.TOPIC2; + relevantTo[2] = Field.SENDER; + EventLogConfig[] memory eventLogConfigs = new EventLogConfig[](1); + eventLogConfigs[0] = EventLogConfig(eventSig, relevantTo); + return VisibilityConfig(ContractCfg.PRIVATE, eventLogConfigs); } +// function visibilityRules() public override pure returns (VisibilityConfig memory){ +// return VisibilityConfig(ContractCfg.TRANSPARENT, EventLogConfig[]); +// } + function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override { //Only deposit messages. diff --git a/integration/erc20contract/abi/ObsERC20.abi b/integration/erc20contract/abi/ObsERC20.abi index 1ae54eaa3a..1e69e75db4 100644 --- a/integration/erc20contract/abi/ObsERC20.abi +++ b/integration/erc20contract/abi/ObsERC20.abi @@ -1 +1 @@ -[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"busAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"visibilityRules","outputs":[{"components":[{"internalType":"bool","name":"isTransparent","type":"bool"},{"components":[{"internalType":"bytes","name":"eventSignature","type":"bytes"},{"internalType":"bool","name":"isPublic","type":"bool"},{"internalType":"bool","name":"topic1CanView","type":"bool"},{"internalType":"bool","name":"topic2CanView","type":"bool"},{"internalType":"bool","name":"topic3CanView","type":"bool"},{"internalType":"bool","name":"visibleToSender","type":"bool"}],"internalType":"struct ContractTransparencyConfig.EventLogConfig[]","name":"eventLogConfigs","type":"tuple[]"}],"internalType":"struct ContractTransparencyConfig.VisibilityConfig","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"}] \ No newline at end of file +[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"busAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"visibilityRules","outputs":[{"components":[{"internalType":"enum ContractTransparencyConfig.ContractCfg","name":"contractCfg","type":"uint8"},{"components":[{"internalType":"bytes32","name":"eventSignature","type":"bytes32"},{"internalType":"enum ContractTransparencyConfig.Field[]","name":"visibleTo","type":"uint8[]"}],"internalType":"struct ContractTransparencyConfig.EventLogConfig[]","name":"eventLogConfigs","type":"tuple[]"}],"internalType":"struct ContractTransparencyConfig.VisibilityConfig","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"}] \ No newline at end of file diff --git a/integration/erc20contract/bin/ObsERC20.bin b/integration/erc20contract/bin/ObsERC20.bin index d7cd16b3b7..e64cd293f0 100644 --- a/integration/erc20contract/bin/ObsERC20.bin +++ b/integration/erc20contract/bin/ObsERC20.bin @@ -1 +1 @@ -608060405273deb34a740eca1ec42c8b8204cbec0ba34fdd27f3600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b5060405162002b6d38038062002b6d83398181016040528101906200008c9190620006b1565b838381600390816200009f9190620009a2565b508060049081620000b19190620009a2565b505050620000c633836200011160201b60201c565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000e15565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000183576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200017a9062000aea565b60405180910390fd5b62000197600083836200028960201b60201c565b8060026000828254620001ab919062000b3b565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000202919062000b3b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000269919062000ba9565b60405180910390a362000285600083836200046f60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603156200046a57600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200046957600060405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381525090506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b1454caa43600180811115620003d957620003d862000bc6565b5b85604051602001620003ec919062000c5f565b60405160208183030381529060405260006040518563ffffffff1660e01b81526004016200041e949392919062000d4a565b6020604051808303816000875af11580156200043e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000464919062000de3565b905050505b5b505050565b505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004dd8262000492565b810181811067ffffffffffffffff82111715620004ff57620004fe620004a3565b5b80604052505050565b60006200051462000474565b9050620005228282620004d2565b919050565b600067ffffffffffffffff821115620005455762000544620004a3565b5b620005508262000492565b9050602081019050919050565b60005b838110156200057d57808201518184015260208101905062000560565b838111156200058d576000848401525b50505050565b6000620005aa620005a48462000527565b62000508565b905082815260208101848484011115620005c957620005c86200048d565b5b620005d68482856200055d565b509392505050565b600082601f830112620005f657620005f562000488565b5b81516200060884826020860162000593565b91505092915050565b6000819050919050565b620006268162000611565b81146200063257600080fd5b50565b60008151905062000646816200061b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000679826200064c565b9050919050565b6200068b816200066c565b81146200069757600080fd5b50565b600081519050620006ab8162000680565b92915050565b60008060008060808587031215620006ce57620006cd6200047e565b5b600085015167ffffffffffffffff811115620006ef57620006ee62000483565b5b620006fd87828801620005de565b945050602085015167ffffffffffffffff81111562000721576200072062000483565b5b6200072f87828801620005de565b9350506040620007428782880162000635565b925050606062000755878288016200069a565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007b457607f821691505b602082108103620007ca57620007c96200076c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007f5565b620008408683620007f5565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620008836200087d620008778462000611565b62000858565b62000611565b9050919050565b6000819050919050565b6200089f8362000862565b620008b7620008ae826200088a565b84845462000802565b825550505050565b600090565b620008ce620008bf565b620008db81848462000894565b505050565b5b818110156200090357620008f7600082620008c4565b600181019050620008e1565b5050565b601f82111562000952576200091c81620007d0565b6200092784620007e5565b8101602085101562000937578190505b6200094f6200094685620007e5565b830182620008e0565b50505b505050565b600082821c905092915050565b6000620009776000198460080262000957565b1980831691505092915050565b600062000992838362000964565b9150826002028217905092915050565b620009ad8262000761565b67ffffffffffffffff811115620009c957620009c8620004a3565b5b620009d582546200079b565b620009e282828562000907565b600060209050601f83116001811462000a1a576000841562000a05578287015190505b62000a11858262000984565b86555062000a81565b601f19841662000a2a86620007d0565b60005b8281101562000a545784890151825560018201915060208501945060208101905062000a2d565b8683101562000a74578489015162000a70601f89168262000964565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ad2601f8362000a89565b915062000adf8262000a9a565b602082019050919050565b6000602082019050818103600083015262000b058162000ac3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b488262000611565b915062000b558362000611565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b8d5762000b8c62000b0c565b5b828201905092915050565b62000ba38162000611565b82525050565b600060208201905062000bc0600083018462000b98565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b62000c00816200066c565b82525050565b62000c118162000611565b82525050565b60608201600082015162000c2f600085018262000bf5565b50602082015162000c44602085018262000bf5565b50604082015162000c59604085018262000c06565b50505050565b600060608201905062000c76600083018462000c17565b92915050565b600063ffffffff82169050919050565b62000c978162000c7c565b82525050565b600081519050919050565b600082825260208201905092915050565b600062000cc68262000c9d565b62000cd2818562000ca8565b935062000ce48185602086016200055d565b62000cef8162000492565b840191505092915050565b6000819050919050565b600060ff82169050919050565b600062000d3262000d2c62000d268462000cfa565b62000858565b62000d04565b9050919050565b62000d448162000d11565b82525050565b600060808201905062000d61600083018762000c8c565b62000d70602083018662000c8c565b818103604083015262000d84818562000cb9565b905062000d95606083018462000d39565b95945050505050565b600067ffffffffffffffff82169050919050565b62000dbd8162000d9e565b811462000dc957600080fd5b50565b60008151905062000ddd8162000db2565b92915050565b60006020828403121562000dfc5762000dfb6200047e565b5b600062000e0c8482850162000dcc565b91505092915050565b611d488062000e256000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80633950935111610071578063395093511461019157806370a08231146101c157806395d89b41146101f1578063a457c2d71461020f578063a9059cbb1461023f578063dd62ed3e1461026f576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd1461012557806330173dd114610155578063313ce56714610173575b600080fd5b6100c161029f565b6040516100ce9190611088565b60405180910390f35b6100f160048036038101906100ec9190611143565b610331565b6040516100fe919061119e565b60405180910390f35b61010f610354565b60405161011c91906111c8565b60405180910390f35b61013f600480360381019061013a91906111e3565b61035e565b60405161014c919061119e565b60405180910390f35b61015d61038d565b60405161016a9190611422565b60405180910390f35b61017b61049c565b6040516101889190611460565b60405180910390f35b6101ab60048036038101906101a69190611143565b6104a5565b6040516101b8919061119e565b60405180910390f35b6101db60048036038101906101d6919061147b565b6104dc565b6040516101e891906111c8565b60405180910390f35b6101f96105a4565b6040516102069190611088565b60405180910390f35b61022960048036038101906102249190611143565b610636565b604051610236919061119e565b60405180910390f35b61025960048036038101906102549190611143565b6106ad565b604051610266919061119e565b60405180910390f35b610289600480360381019061028491906114a8565b6106d0565b60405161029691906111c8565b60405180910390f35b6060600380546102ae90611517565b80601f01602080910402602001604051908101604052809291908181526020018280546102da90611517565b80156103275780601f106102fc57610100808354040283529160200191610327565b820191906000526020600020905b81548152906001019060200180831161030a57829003601f168201915b5050505050905090565b60008061033c610809565b9050610349818585610811565b600191505092915050565b6000600254905090565b600080610369610809565b90506103768582856109da565b610381858585610a66565b60019150509392505050565b610395610f93565b6000600167ffffffffffffffff8111156103b2576103b1611548565b5b6040519080825280602002602001820160405280156103eb57816020015b6103d8610faf565b8152602001906001900390816103d05790505b5090506040518060c001604052806040518060400160405280602081526020017fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8152508152602001600015158152602001600115158152602001600115158152602001600015158152602001600015158152508160008151811061047357610472611577565b5b602002602001018190525060405180604001604052806000151581526020018281525091505090565b60006012905090565b6000806104b0610809565b90506104d18185856104c285896106d0565b6104cc91906115d5565b610811565b600191505092915050565b60008173ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036105215761051a82610ce5565b905061059f565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036105645761055d82610ce5565b905061059f565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059690611677565b60405180910390fd5b919050565b6060600480546105b390611517565b80601f01602080910402602001604051908101604052809291908181526020018280546105df90611517565b801561062c5780601f106106015761010080835404028352916020019161062c565b820191906000526020600020905b81548152906001019060200180831161060f57829003601f168201915b5050505050905090565b600080610641610809565b9050600061064f82866106d0565b905083811015610694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068b90611709565b60405180910390fd5b6106a18286868403610811565b60019250505092915050565b6000806106b8610809565b90506106c5818585610a66565b600191505092915050565b60008273ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16148061073757508173ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16145b1561074d576107468383610d2d565b9050610803565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806107b257508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b156107c8576107c18383610d2d565b9050610803565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa9061179b565b60405180910390fd5b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610880576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108779061182d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e6906118bf565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109cd91906111c8565b60405180910390a3505050565b60006109e684846106d0565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a605781811015610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a499061192b565b60405180910390fd5b610a5f8484848403610811565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acc906119bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3b90611a4f565b60405180910390fd5b610b4f838383610db4565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc90611ae1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c6891906115d5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ccc91906111c8565b60405180910390a3610cdf848484610f8e565b50505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160315610f8957600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f8857600060405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381525090506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b1454caa43600180811115610eff57610efe611b01565b5b85604051602001610f109190611b90565b60405160208183030381529060405260006040518563ffffffff1660e01b8152600401610f409493929190611c59565b6020604051808303816000875af1158015610f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f839190611ce5565b905050505b5b505050565b505050565b6040518060400160405280600015158152602001606081525090565b6040518060c00160405280606081526020016000151581526020016000151581526020016000151581526020016000151581526020016000151581525090565b600081519050919050565b600082825260208201905092915050565b60005b8381101561102957808201518184015260208101905061100e565b83811115611038576000848401525b50505050565b6000601f19601f8301169050919050565b600061105a82610fef565b6110648185610ffa565b935061107481856020860161100b565b61107d8161103e565b840191505092915050565b600060208201905081810360008301526110a2818461104f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006110da826110af565b9050919050565b6110ea816110cf565b81146110f557600080fd5b50565b600081359050611107816110e1565b92915050565b6000819050919050565b6111208161110d565b811461112b57600080fd5b50565b60008135905061113d81611117565b92915050565b6000806040838503121561115a576111596110aa565b5b6000611168858286016110f8565b92505060206111798582860161112e565b9150509250929050565b60008115159050919050565b61119881611183565b82525050565b60006020820190506111b3600083018461118f565b92915050565b6111c28161110d565b82525050565b60006020820190506111dd60008301846111b9565b92915050565b6000806000606084860312156111fc576111fb6110aa565b5b600061120a868287016110f8565b935050602061121b868287016110f8565b925050604061122c8682870161112e565b9150509250925092565b61123f81611183565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b600061129882611271565b6112a2818561127c565b93506112b281856020860161100b565b6112bb8161103e565b840191505092915050565b600060c08301600083015184820360008601526112e3828261128d565b91505060208301516112f86020860182611236565b50604083015161130b6040860182611236565b50606083015161131e6060860182611236565b5060808301516113316080860182611236565b5060a083015161134460a0860182611236565b508091505092915050565b600061135b83836112c6565b905092915050565b6000602082019050919050565b600061137b82611245565b6113858185611250565b93508360208202850161139785611261565b8060005b858110156113d357848403895281516113b4858261134f565b94506113bf83611363565b925060208a0199505060018101905061139b565b50829750879550505050505092915050565b60006040830160008301516113fd6000860182611236565b50602083015184820360208601526114158282611370565b9150508091505092915050565b6000602082019050818103600083015261143c81846113e5565b905092915050565b600060ff82169050919050565b61145a81611444565b82525050565b60006020820190506114756000830184611451565b92915050565b600060208284031215611491576114906110aa565b5b600061149f848285016110f8565b91505092915050565b600080604083850312156114bf576114be6110aa565b5b60006114cd858286016110f8565b92505060206114de858286016110f8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061152f57607f821691505b602082108103611542576115416114e8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115e08261110d565b91506115eb8361110d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156116205761161f6115a6565b5b828201905092915050565b7f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e636500600082015250565b6000611661601f83610ffa565b915061166c8261162b565b602082019050919050565b6000602082019050818103600083015261169081611654565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006116f3602583610ffa565b91506116fe82611697565b604082019050919050565b60006020820190508181036000830152611722816116e6565b9050919050565b7f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000611785602183610ffa565b915061179082611729565b604082019050919050565b600060208201905081810360008301526117b481611778565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611817602483610ffa565b9150611822826117bb565b604082019050919050565b600060208201905081810360008301526118468161180a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006118a9602283610ffa565b91506118b48261184d565b604082019050919050565b600060208201905081810360008301526118d88161189c565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611915601d83610ffa565b9150611920826118df565b602082019050919050565b6000602082019050818103600083015261194481611908565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006119a7602583610ffa565b91506119b28261194b565b604082019050919050565b600060208201905081810360008301526119d68161199a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611a39602383610ffa565b9150611a44826119dd565b604082019050919050565b60006020820190508181036000830152611a6881611a2c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611acb602683610ffa565b9150611ad682611a6f565b604082019050919050565b60006020820190508181036000830152611afa81611abe565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b611b39816110cf565b82525050565b611b488161110d565b82525050565b606082016000820151611b646000850182611b30565b506020820151611b776020850182611b30565b506040820151611b8a6040850182611b3f565b50505050565b6000606082019050611ba56000830184611b4e565b92915050565b600063ffffffff82169050919050565b611bc481611bab565b82525050565b600082825260208201905092915050565b6000611be682611271565b611bf08185611bca565b9350611c0081856020860161100b565b611c098161103e565b840191505092915050565b6000819050919050565b6000819050919050565b6000611c43611c3e611c3984611c14565b611c1e565b611444565b9050919050565b611c5381611c28565b82525050565b6000608082019050611c6e6000830187611bbb565b611c7b6020830186611bbb565b8181036040830152611c8d8185611bdb565b9050611c9c6060830184611c4a565b95945050505050565b600067ffffffffffffffff82169050919050565b611cc281611ca5565b8114611ccd57600080fd5b50565b600081519050611cdf81611cb9565b92915050565b600060208284031215611cfb57611cfa6110aa565b5b6000611d0984828501611cd0565b9150509291505056fea26469706673582212203981d1ae057eaa4af2285ae435eff9df86a18e86fb08cdf7753394717c9a5d6964736f6c634300080f0033 \ No newline at end of file +608060405273deb34a740eca1ec42c8b8204cbec0ba34fdd27f3600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b5060405162002d0d38038062002d0d83398181016040528101906200008c9190620006b1565b838381600390816200009f9190620009a2565b508060049081620000b19190620009a2565b505050620000c633836200011160201b60201c565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000e15565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000183576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200017a9062000aea565b60405180910390fd5b62000197600083836200028960201b60201c565b8060026000828254620001ab919062000b3b565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000202919062000b3b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000269919062000ba9565b60405180910390a362000285600083836200046f60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603156200046a57600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200046957600060405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381525090506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b1454caa43600180811115620003d957620003d862000bc6565b5b85604051602001620003ec919062000c5f565b60405160208183030381529060405260006040518563ffffffff1660e01b81526004016200041e949392919062000d4a565b6020604051808303816000875af11580156200043e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000464919062000de3565b905050505b5b505050565b505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004dd8262000492565b810181811067ffffffffffffffff82111715620004ff57620004fe620004a3565b5b80604052505050565b60006200051462000474565b9050620005228282620004d2565b919050565b600067ffffffffffffffff821115620005455762000544620004a3565b5b620005508262000492565b9050602081019050919050565b60005b838110156200057d57808201518184015260208101905062000560565b838111156200058d576000848401525b50505050565b6000620005aa620005a48462000527565b62000508565b905082815260208101848484011115620005c957620005c86200048d565b5b620005d68482856200055d565b509392505050565b600082601f830112620005f657620005f562000488565b5b81516200060884826020860162000593565b91505092915050565b6000819050919050565b620006268162000611565b81146200063257600080fd5b50565b60008151905062000646816200061b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000679826200064c565b9050919050565b6200068b816200066c565b81146200069757600080fd5b50565b600081519050620006ab8162000680565b92915050565b60008060008060808587031215620006ce57620006cd6200047e565b5b600085015167ffffffffffffffff811115620006ef57620006ee62000483565b5b620006fd87828801620005de565b945050602085015167ffffffffffffffff81111562000721576200072062000483565b5b6200072f87828801620005de565b9350506040620007428782880162000635565b925050606062000755878288016200069a565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007b457607f821691505b602082108103620007ca57620007c96200076c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007f5565b620008408683620007f5565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620008836200087d620008778462000611565b62000858565b62000611565b9050919050565b6000819050919050565b6200089f8362000862565b620008b7620008ae826200088a565b84845462000802565b825550505050565b600090565b620008ce620008bf565b620008db81848462000894565b505050565b5b818110156200090357620008f7600082620008c4565b600181019050620008e1565b5050565b601f82111562000952576200091c81620007d0565b6200092784620007e5565b8101602085101562000937578190505b6200094f6200094685620007e5565b830182620008e0565b50505b505050565b600082821c905092915050565b6000620009776000198460080262000957565b1980831691505092915050565b600062000992838362000964565b9150826002028217905092915050565b620009ad8262000761565b67ffffffffffffffff811115620009c957620009c8620004a3565b5b620009d582546200079b565b620009e282828562000907565b600060209050601f83116001811462000a1a576000841562000a05578287015190505b62000a11858262000984565b86555062000a81565b601f19841662000a2a86620007d0565b60005b8281101562000a545784890151825560018201915060208501945060208101905062000a2d565b8683101562000a74578489015162000a70601f89168262000964565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ad2601f8362000a89565b915062000adf8262000a9a565b602082019050919050565b6000602082019050818103600083015262000b058162000ac3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b488262000611565b915062000b558362000611565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b8d5762000b8c62000b0c565b5b828201905092915050565b62000ba38162000611565b82525050565b600060208201905062000bc0600083018462000b98565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b62000c00816200066c565b82525050565b62000c118162000611565b82525050565b60608201600082015162000c2f600085018262000bf5565b50602082015162000c44602085018262000bf5565b50604082015162000c59604085018262000c06565b50505050565b600060608201905062000c76600083018462000c17565b92915050565b600063ffffffff82169050919050565b62000c978162000c7c565b82525050565b600081519050919050565b600082825260208201905092915050565b600062000cc68262000c9d565b62000cd2818562000ca8565b935062000ce48185602086016200055d565b62000cef8162000492565b840191505092915050565b6000819050919050565b600060ff82169050919050565b600062000d3262000d2c62000d268462000cfa565b62000858565b62000d04565b9050919050565b62000d448162000d11565b82525050565b600060808201905062000d61600083018762000c8c565b62000d70602083018662000c8c565b818103604083015262000d84818562000cb9565b905062000d95606083018462000d39565b95945050505050565b600067ffffffffffffffff82169050919050565b62000dbd8162000d9e565b811462000dc957600080fd5b50565b60008151905062000ddd8162000db2565b92915050565b60006020828403121562000dfc5762000dfb6200047e565b5b600062000e0c8482850162000dcc565b91505092915050565b611ee88062000e256000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80633950935111610071578063395093511461019157806370a08231146101c157806395d89b41146101f1578063a457c2d71461020f578063a9059cbb1461023f578063dd62ed3e1461026f576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd1461012557806330173dd114610155578063313ce56714610173575b600080fd5b6100c161029f565b6040516100ce9190611175565b60405180910390f35b6100f160048036038101906100ec9190611230565b610331565b6040516100fe919061128b565b60405180910390f35b61010f610354565b60405161011c91906112b5565b60405180910390f35b61013f600480360381019061013a91906112d0565b61035e565b60405161014c919061128b565b60405180910390f35b61015d61038d565b60405161016a91906115e6565b60405180910390f35b61017b61059c565b6040516101889190611624565b60405180910390f35b6101ab60048036038101906101a69190611230565b6105a5565b6040516101b8919061128b565b60405180910390f35b6101db60048036038101906101d6919061163f565b6105dc565b6040516101e891906112b5565b60405180910390f35b6101f96106a4565b6040516102069190611175565b60405180910390f35b61022960048036038101906102249190611230565b610736565b604051610236919061128b565b60405180910390f35b61025960048036038101906102549190611230565b6107ad565b604051610266919061128b565b60405180910390f35b6102896004803603810190610284919061166c565b6107d0565b60405161029691906112b5565b60405180910390f35b6060600380546102ae906116db565b80601f01602080910402602001604051908101604052809291908181526020018280546102da906116db565b80156103275780601f106102fc57610100808354040283529160200191610327565b820191906000526020600020905b81548152906001019060200180831161030a57829003601f168201915b5050505050905090565b60008061033c610909565b9050610349818585610911565b600191505092915050565b6000600254905090565b600080610369610909565b9050610376858285610ada565b610381858585610b66565b60019150509392505050565b610395611093565b60007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90506000600367ffffffffffffffff8111156103d7576103d661170c565b5b6040519080825280602002602001820160405280156104055781602001602082028036833780820191505090505b50905060008160008151811061041e5761041d61173b565b5b6020026020010190600481111561043857610437611323565b5b9081600481111561044c5761044b611323565b5b815250506001816001815181106104665761046561173b565b5b602002602001019060048111156104805761047f611323565b5b9081600481111561049457610493611323565b5b815250506003816002815181106104ae576104ad61173b565b5b602002602001019060048111156104c8576104c7611323565b5b908160048111156104dc576104db611323565b5b815250506000600167ffffffffffffffff8111156104fd576104fc61170c565b5b60405190808252806020026020018201604052801561053657816020015b6105236110bf565b81526020019060019003908161051b5790505b509050604051806040016040528084815260200183815250816000815181106105625761056161173b565b5b6020026020010181905250604051806040016040528060018081111561058b5761058a611323565b5b815260200182815250935050505090565b60006012905090565b6000806105b0610909565b90506105d18185856105c285896107d0565b6105cc9190611799565b610911565b600191505092915050565b60008173ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036106215761061a82610de5565b905061069f565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036106645761065d82610de5565b905061069f565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106969061183b565b60405180910390fd5b919050565b6060600480546106b3906116db565b80601f01602080910402602001604051908101604052809291908181526020018280546106df906116db565b801561072c5780601f106107015761010080835404028352916020019161072c565b820191906000526020600020905b81548152906001019060200180831161070f57829003601f168201915b5050505050905090565b600080610741610909565b9050600061074f82866107d0565b905083811015610794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078b906118cd565b60405180910390fd5b6107a18286868403610911565b60019250505092915050565b6000806107b8610909565b90506107c5818585610b66565b600191505092915050565b60008273ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16148061083757508173ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16145b1561084d576108468383610e2d565b9050610903565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108b257508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b156108c8576108c18383610e2d565b9050610903565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fa9061195f565b60405180910390fd5b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610980576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610977906119f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e690611a83565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610acd91906112b5565b60405180910390a3505050565b6000610ae684846107d0565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b605781811015610b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4990611aef565b60405180910390fd5b610b5f8484848403610911565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc90611b81565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3b90611c13565b60405180910390fd5b610c4f838383610eb4565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccc90611ca5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d689190611799565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610dcc91906112b5565b60405180910390a3610ddf84848461108e565b50505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16031561108957600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361108857600060405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381525090506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b1454caa43600180811115610fff57610ffe611323565b5b856040516020016110109190611d25565b60405160208183030381529060405260006040518563ffffffff1660e01b81526004016110409493929190611df9565b6020604051808303816000875af115801561105f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110839190611e85565b905050505b5b505050565b505050565b6040518060400160405280600060018111156110b2576110b1611323565b5b8152602001606081525090565b604051806040016040528060008019168152602001606081525090565b600081519050919050565b600082825260208201905092915050565b60005b838110156111165780820151818401526020810190506110fb565b83811115611125576000848401525b50505050565b6000601f19601f8301169050919050565b6000611147826110dc565b61115181856110e7565b93506111618185602086016110f8565b61116a8161112b565b840191505092915050565b6000602082019050818103600083015261118f818461113c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006111c78261119c565b9050919050565b6111d7816111bc565b81146111e257600080fd5b50565b6000813590506111f4816111ce565b92915050565b6000819050919050565b61120d816111fa565b811461121857600080fd5b50565b60008135905061122a81611204565b92915050565b6000806040838503121561124757611246611197565b5b6000611255858286016111e5565b92505060206112668582860161121b565b9150509250929050565b60008115159050919050565b61128581611270565b82525050565b60006020820190506112a0600083018461127c565b92915050565b6112af816111fa565b82525050565b60006020820190506112ca60008301846112a6565b92915050565b6000806000606084860312156112e9576112e8611197565b5b60006112f7868287016111e5565b9350506020611308868287016111e5565b92505060406113198682870161121b565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6002811061136357611362611323565b5b50565b600081905061137482611352565b919050565b600061138482611366565b9050919050565b61139481611379565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b6113d9816113c6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6005811061141c5761141b611323565b5b50565b600081905061142d8261140b565b919050565b600061143d8261141f565b9050919050565b61144d81611432565b82525050565b600061145f8383611444565b60208301905092915050565b6000602082019050919050565b6000611483826113df565b61148d81856113ea565b9350611498836113fb565b8060005b838110156114c95781516114b08882611453565b97506114bb8361146b565b92505060018101905061149c565b5085935050505092915050565b60006040830160008301516114ee60008601826113d0565b50602083015184820360208601526115068282611478565b9150508091505092915050565b600061151f83836114d6565b905092915050565b6000602082019050919050565b600061153f8261139a565b61154981856113a5565b93508360208202850161155b856113b6565b8060005b8581101561159757848403895281516115788582611513565b945061158383611527565b925060208a0199505060018101905061155f565b50829750879550505050505092915050565b60006040830160008301516115c1600086018261138b565b50602083015184820360208601526115d98282611534565b9150508091505092915050565b6000602082019050818103600083015261160081846115a9565b905092915050565b600060ff82169050919050565b61161e81611608565b82525050565b60006020820190506116396000830184611615565b92915050565b60006020828403121561165557611654611197565b5b6000611663848285016111e5565b91505092915050565b6000806040838503121561168357611682611197565b5b6000611691858286016111e5565b92505060206116a2858286016111e5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806116f357607f821691505b602082108103611706576117056116ac565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006117a4826111fa565b91506117af836111fa565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156117e4576117e361176a565b5b828201905092915050565b7f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e636500600082015250565b6000611825601f836110e7565b9150611830826117ef565b602082019050919050565b6000602082019050818103600083015261185481611818565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006118b76025836110e7565b91506118c28261185b565b604082019050919050565b600060208201905081810360008301526118e6816118aa565b9050919050565b7f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b60006119496021836110e7565b9150611954826118ed565b604082019050919050565b600060208201905081810360008301526119788161193c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006119db6024836110e7565b91506119e68261197f565b604082019050919050565b60006020820190508181036000830152611a0a816119ce565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611a6d6022836110e7565b9150611a7882611a11565b604082019050919050565b60006020820190508181036000830152611a9c81611a60565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611ad9601d836110e7565b9150611ae482611aa3565b602082019050919050565b60006020820190508181036000830152611b0881611acc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611b6b6025836110e7565b9150611b7682611b0f565b604082019050919050565b60006020820190508181036000830152611b9a81611b5e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611bfd6023836110e7565b9150611c0882611ba1565b604082019050919050565b60006020820190508181036000830152611c2c81611bf0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611c8f6026836110e7565b9150611c9a82611c33565b604082019050919050565b60006020820190508181036000830152611cbe81611c82565b9050919050565b611cce816111bc565b82525050565b611cdd816111fa565b82525050565b606082016000820151611cf96000850182611cc5565b506020820151611d0c6020850182611cc5565b506040820151611d1f6040850182611cd4565b50505050565b6000606082019050611d3a6000830184611ce3565b92915050565b600063ffffffff82169050919050565b611d5981611d40565b82525050565b600081519050919050565b600082825260208201905092915050565b6000611d8682611d5f565b611d908185611d6a565b9350611da08185602086016110f8565b611da98161112b565b840191505092915050565b6000819050919050565b6000819050919050565b6000611de3611dde611dd984611db4565b611dbe565b611608565b9050919050565b611df381611dc8565b82525050565b6000608082019050611e0e6000830187611d50565b611e1b6020830186611d50565b8181036040830152611e2d8185611d7b565b9050611e3c6060830184611dea565b95945050505050565b600067ffffffffffffffff82169050919050565b611e6281611e45565b8114611e6d57600080fd5b50565b600081519050611e7f81611e59565b92915050565b600060208284031215611e9b57611e9a611197565b5b6000611ea984828501611e70565b9150509291505056fea26469706673582212208b444c260a97b93029a9e7777043062f082fd0f59ec75c6ab8f637b6980214b764736f6c634300080f0033 \ No newline at end of file diff --git a/integration/erc20contract/generated/ObsERC20/ObsERC20.go b/integration/erc20contract/generated/ObsERC20/ObsERC20.go index 116ae25e86..567854ba76 100644 --- a/integration/erc20contract/generated/ObsERC20/ObsERC20.go +++ b/integration/erc20contract/generated/ObsERC20/ObsERC20.go @@ -31,24 +31,20 @@ var ( // ContractTransparencyConfigEventLogConfig is an auto generated low-level Go binding around an user-defined struct. type ContractTransparencyConfigEventLogConfig struct { - EventSignature []byte - IsPublic bool - Topic1CanView bool - Topic2CanView bool - Topic3CanView bool - VisibleToSender bool + EventSignature [32]byte + VisibleTo []uint8 } // ContractTransparencyConfigVisibilityConfig is an auto generated low-level Go binding around an user-defined struct. type ContractTransparencyConfigVisibilityConfig struct { - IsTransparent bool + ContractCfg uint8 EventLogConfigs []ContractTransparencyConfigEventLogConfig } // ObsERC20MetaData contains all meta data concerning the ObsERC20 contract. var ObsERC20MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"initialSupply\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"busAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"visibilityRules\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isTransparent\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"eventSignature\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isPublic\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"topic1CanView\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"topic2CanView\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"topic3CanView\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"visibleToSender\",\"type\":\"bool\"}],\"internalType\":\"structContractTransparencyConfig.EventLogConfig[]\",\"name\":\"eventLogConfigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structContractTransparencyConfig.VisibilityConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", - Bin: "0x608060405273deb34a740eca1ec42c8b8204cbec0ba34fdd27f3600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b5060405162002b6d38038062002b6d83398181016040528101906200008c9190620006b1565b838381600390816200009f9190620009a2565b508060049081620000b19190620009a2565b505050620000c633836200011160201b60201c565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000e15565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000183576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200017a9062000aea565b60405180910390fd5b62000197600083836200028960201b60201c565b8060026000828254620001ab919062000b3b565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000202919062000b3b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000269919062000ba9565b60405180910390a362000285600083836200046f60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603156200046a57600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200046957600060405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381525090506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b1454caa43600180811115620003d957620003d862000bc6565b5b85604051602001620003ec919062000c5f565b60405160208183030381529060405260006040518563ffffffff1660e01b81526004016200041e949392919062000d4a565b6020604051808303816000875af11580156200043e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000464919062000de3565b905050505b5b505050565b505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004dd8262000492565b810181811067ffffffffffffffff82111715620004ff57620004fe620004a3565b5b80604052505050565b60006200051462000474565b9050620005228282620004d2565b919050565b600067ffffffffffffffff821115620005455762000544620004a3565b5b620005508262000492565b9050602081019050919050565b60005b838110156200057d57808201518184015260208101905062000560565b838111156200058d576000848401525b50505050565b6000620005aa620005a48462000527565b62000508565b905082815260208101848484011115620005c957620005c86200048d565b5b620005d68482856200055d565b509392505050565b600082601f830112620005f657620005f562000488565b5b81516200060884826020860162000593565b91505092915050565b6000819050919050565b620006268162000611565b81146200063257600080fd5b50565b60008151905062000646816200061b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000679826200064c565b9050919050565b6200068b816200066c565b81146200069757600080fd5b50565b600081519050620006ab8162000680565b92915050565b60008060008060808587031215620006ce57620006cd6200047e565b5b600085015167ffffffffffffffff811115620006ef57620006ee62000483565b5b620006fd87828801620005de565b945050602085015167ffffffffffffffff81111562000721576200072062000483565b5b6200072f87828801620005de565b9350506040620007428782880162000635565b925050606062000755878288016200069a565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007b457607f821691505b602082108103620007ca57620007c96200076c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007f5565b620008408683620007f5565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620008836200087d620008778462000611565b62000858565b62000611565b9050919050565b6000819050919050565b6200089f8362000862565b620008b7620008ae826200088a565b84845462000802565b825550505050565b600090565b620008ce620008bf565b620008db81848462000894565b505050565b5b818110156200090357620008f7600082620008c4565b600181019050620008e1565b5050565b601f82111562000952576200091c81620007d0565b6200092784620007e5565b8101602085101562000937578190505b6200094f6200094685620007e5565b830182620008e0565b50505b505050565b600082821c905092915050565b6000620009776000198460080262000957565b1980831691505092915050565b600062000992838362000964565b9150826002028217905092915050565b620009ad8262000761565b67ffffffffffffffff811115620009c957620009c8620004a3565b5b620009d582546200079b565b620009e282828562000907565b600060209050601f83116001811462000a1a576000841562000a05578287015190505b62000a11858262000984565b86555062000a81565b601f19841662000a2a86620007d0565b60005b8281101562000a545784890151825560018201915060208501945060208101905062000a2d565b8683101562000a74578489015162000a70601f89168262000964565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ad2601f8362000a89565b915062000adf8262000a9a565b602082019050919050565b6000602082019050818103600083015262000b058162000ac3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b488262000611565b915062000b558362000611565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b8d5762000b8c62000b0c565b5b828201905092915050565b62000ba38162000611565b82525050565b600060208201905062000bc0600083018462000b98565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b62000c00816200066c565b82525050565b62000c118162000611565b82525050565b60608201600082015162000c2f600085018262000bf5565b50602082015162000c44602085018262000bf5565b50604082015162000c59604085018262000c06565b50505050565b600060608201905062000c76600083018462000c17565b92915050565b600063ffffffff82169050919050565b62000c978162000c7c565b82525050565b600081519050919050565b600082825260208201905092915050565b600062000cc68262000c9d565b62000cd2818562000ca8565b935062000ce48185602086016200055d565b62000cef8162000492565b840191505092915050565b6000819050919050565b600060ff82169050919050565b600062000d3262000d2c62000d268462000cfa565b62000858565b62000d04565b9050919050565b62000d448162000d11565b82525050565b600060808201905062000d61600083018762000c8c565b62000d70602083018662000c8c565b818103604083015262000d84818562000cb9565b905062000d95606083018462000d39565b95945050505050565b600067ffffffffffffffff82169050919050565b62000dbd8162000d9e565b811462000dc957600080fd5b50565b60008151905062000ddd8162000db2565b92915050565b60006020828403121562000dfc5762000dfb6200047e565b5b600062000e0c8482850162000dcc565b91505092915050565b611d488062000e256000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80633950935111610071578063395093511461019157806370a08231146101c157806395d89b41146101f1578063a457c2d71461020f578063a9059cbb1461023f578063dd62ed3e1461026f576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd1461012557806330173dd114610155578063313ce56714610173575b600080fd5b6100c161029f565b6040516100ce9190611088565b60405180910390f35b6100f160048036038101906100ec9190611143565b610331565b6040516100fe919061119e565b60405180910390f35b61010f610354565b60405161011c91906111c8565b60405180910390f35b61013f600480360381019061013a91906111e3565b61035e565b60405161014c919061119e565b60405180910390f35b61015d61038d565b60405161016a9190611422565b60405180910390f35b61017b61049c565b6040516101889190611460565b60405180910390f35b6101ab60048036038101906101a69190611143565b6104a5565b6040516101b8919061119e565b60405180910390f35b6101db60048036038101906101d6919061147b565b6104dc565b6040516101e891906111c8565b60405180910390f35b6101f96105a4565b6040516102069190611088565b60405180910390f35b61022960048036038101906102249190611143565b610636565b604051610236919061119e565b60405180910390f35b61025960048036038101906102549190611143565b6106ad565b604051610266919061119e565b60405180910390f35b610289600480360381019061028491906114a8565b6106d0565b60405161029691906111c8565b60405180910390f35b6060600380546102ae90611517565b80601f01602080910402602001604051908101604052809291908181526020018280546102da90611517565b80156103275780601f106102fc57610100808354040283529160200191610327565b820191906000526020600020905b81548152906001019060200180831161030a57829003601f168201915b5050505050905090565b60008061033c610809565b9050610349818585610811565b600191505092915050565b6000600254905090565b600080610369610809565b90506103768582856109da565b610381858585610a66565b60019150509392505050565b610395610f93565b6000600167ffffffffffffffff8111156103b2576103b1611548565b5b6040519080825280602002602001820160405280156103eb57816020015b6103d8610faf565b8152602001906001900390816103d05790505b5090506040518060c001604052806040518060400160405280602081526020017fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8152508152602001600015158152602001600115158152602001600115158152602001600015158152602001600015158152508160008151811061047357610472611577565b5b602002602001018190525060405180604001604052806000151581526020018281525091505090565b60006012905090565b6000806104b0610809565b90506104d18185856104c285896106d0565b6104cc91906115d5565b610811565b600191505092915050565b60008173ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036105215761051a82610ce5565b905061059f565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036105645761055d82610ce5565b905061059f565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059690611677565b60405180910390fd5b919050565b6060600480546105b390611517565b80601f01602080910402602001604051908101604052809291908181526020018280546105df90611517565b801561062c5780601f106106015761010080835404028352916020019161062c565b820191906000526020600020905b81548152906001019060200180831161060f57829003601f168201915b5050505050905090565b600080610641610809565b9050600061064f82866106d0565b905083811015610694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068b90611709565b60405180910390fd5b6106a18286868403610811565b60019250505092915050565b6000806106b8610809565b90506106c5818585610a66565b600191505092915050565b60008273ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16148061073757508173ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16145b1561074d576107468383610d2d565b9050610803565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806107b257508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b156107c8576107c18383610d2d565b9050610803565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa9061179b565b60405180910390fd5b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610880576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108779061182d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e6906118bf565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109cd91906111c8565b60405180910390a3505050565b60006109e684846106d0565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a605781811015610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a499061192b565b60405180910390fd5b610a5f8484848403610811565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acc906119bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3b90611a4f565b60405180910390fd5b610b4f838383610db4565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc90611ae1565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c6891906115d5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ccc91906111c8565b60405180910390a3610cdf848484610f8e565b50505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160315610f8957600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f8857600060405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381525090506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b1454caa43600180811115610eff57610efe611b01565b5b85604051602001610f109190611b90565b60405160208183030381529060405260006040518563ffffffff1660e01b8152600401610f409493929190611c59565b6020604051808303816000875af1158015610f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f839190611ce5565b905050505b5b505050565b505050565b6040518060400160405280600015158152602001606081525090565b6040518060c00160405280606081526020016000151581526020016000151581526020016000151581526020016000151581526020016000151581525090565b600081519050919050565b600082825260208201905092915050565b60005b8381101561102957808201518184015260208101905061100e565b83811115611038576000848401525b50505050565b6000601f19601f8301169050919050565b600061105a82610fef565b6110648185610ffa565b935061107481856020860161100b565b61107d8161103e565b840191505092915050565b600060208201905081810360008301526110a2818461104f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006110da826110af565b9050919050565b6110ea816110cf565b81146110f557600080fd5b50565b600081359050611107816110e1565b92915050565b6000819050919050565b6111208161110d565b811461112b57600080fd5b50565b60008135905061113d81611117565b92915050565b6000806040838503121561115a576111596110aa565b5b6000611168858286016110f8565b92505060206111798582860161112e565b9150509250929050565b60008115159050919050565b61119881611183565b82525050565b60006020820190506111b3600083018461118f565b92915050565b6111c28161110d565b82525050565b60006020820190506111dd60008301846111b9565b92915050565b6000806000606084860312156111fc576111fb6110aa565b5b600061120a868287016110f8565b935050602061121b868287016110f8565b925050604061122c8682870161112e565b9150509250925092565b61123f81611183565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b600061129882611271565b6112a2818561127c565b93506112b281856020860161100b565b6112bb8161103e565b840191505092915050565b600060c08301600083015184820360008601526112e3828261128d565b91505060208301516112f86020860182611236565b50604083015161130b6040860182611236565b50606083015161131e6060860182611236565b5060808301516113316080860182611236565b5060a083015161134460a0860182611236565b508091505092915050565b600061135b83836112c6565b905092915050565b6000602082019050919050565b600061137b82611245565b6113858185611250565b93508360208202850161139785611261565b8060005b858110156113d357848403895281516113b4858261134f565b94506113bf83611363565b925060208a0199505060018101905061139b565b50829750879550505050505092915050565b60006040830160008301516113fd6000860182611236565b50602083015184820360208601526114158282611370565b9150508091505092915050565b6000602082019050818103600083015261143c81846113e5565b905092915050565b600060ff82169050919050565b61145a81611444565b82525050565b60006020820190506114756000830184611451565b92915050565b600060208284031215611491576114906110aa565b5b600061149f848285016110f8565b91505092915050565b600080604083850312156114bf576114be6110aa565b5b60006114cd858286016110f8565b92505060206114de858286016110f8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061152f57607f821691505b602082108103611542576115416114e8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115e08261110d565b91506115eb8361110d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156116205761161f6115a6565b5b828201905092915050565b7f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e636500600082015250565b6000611661601f83610ffa565b915061166c8261162b565b602082019050919050565b6000602082019050818103600083015261169081611654565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006116f3602583610ffa565b91506116fe82611697565b604082019050919050565b60006020820190508181036000830152611722816116e6565b9050919050565b7f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000611785602183610ffa565b915061179082611729565b604082019050919050565b600060208201905081810360008301526117b481611778565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611817602483610ffa565b9150611822826117bb565b604082019050919050565b600060208201905081810360008301526118468161180a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006118a9602283610ffa565b91506118b48261184d565b604082019050919050565b600060208201905081810360008301526118d88161189c565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611915601d83610ffa565b9150611920826118df565b602082019050919050565b6000602082019050818103600083015261194481611908565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006119a7602583610ffa565b91506119b28261194b565b604082019050919050565b600060208201905081810360008301526119d68161199a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611a39602383610ffa565b9150611a44826119dd565b604082019050919050565b60006020820190508181036000830152611a6881611a2c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611acb602683610ffa565b9150611ad682611a6f565b604082019050919050565b60006020820190508181036000830152611afa81611abe565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b611b39816110cf565b82525050565b611b488161110d565b82525050565b606082016000820151611b646000850182611b30565b506020820151611b776020850182611b30565b506040820151611b8a6040850182611b3f565b50505050565b6000606082019050611ba56000830184611b4e565b92915050565b600063ffffffff82169050919050565b611bc481611bab565b82525050565b600082825260208201905092915050565b6000611be682611271565b611bf08185611bca565b9350611c0081856020860161100b565b611c098161103e565b840191505092915050565b6000819050919050565b6000819050919050565b6000611c43611c3e611c3984611c14565b611c1e565b611444565b9050919050565b611c5381611c28565b82525050565b6000608082019050611c6e6000830187611bbb565b611c7b6020830186611bbb565b8181036040830152611c8d8185611bdb565b9050611c9c6060830184611c4a565b95945050505050565b600067ffffffffffffffff82169050919050565b611cc281611ca5565b8114611ccd57600080fd5b50565b600081519050611cdf81611cb9565b92915050565b600060208284031215611cfb57611cfa6110aa565b5b6000611d0984828501611cd0565b9150509291505056fea26469706673582212203981d1ae057eaa4af2285ae435eff9df86a18e86fb08cdf7753394717c9a5d6964736f6c634300080f0033", + ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"initialSupply\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"busAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"visibilityRules\",\"outputs\":[{\"components\":[{\"internalType\":\"enumContractTransparencyConfig.ContractCfg\",\"name\":\"contractCfg\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"eventSignature\",\"type\":\"bytes32\"},{\"internalType\":\"enumContractTransparencyConfig.Field[]\",\"name\":\"visibleTo\",\"type\":\"uint8[]\"}],\"internalType\":\"structContractTransparencyConfig.EventLogConfig[]\",\"name\":\"eventLogConfigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structContractTransparencyConfig.VisibilityConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", + Bin: "0x608060405273deb34a740eca1ec42c8b8204cbec0ba34fdd27f3600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b5060405162002d0d38038062002d0d83398181016040528101906200008c9190620006b1565b838381600390816200009f9190620009a2565b508060049081620000b19190620009a2565b505050620000c633836200011160201b60201c565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000e15565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000183576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200017a9062000aea565b60405180910390fd5b62000197600083836200028960201b60201c565b8060026000828254620001ab919062000b3b565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000202919062000b3b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000269919062000ba9565b60405180910390a362000285600083836200046f60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603156200046a57600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200046957600060405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381525090506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b1454caa43600180811115620003d957620003d862000bc6565b5b85604051602001620003ec919062000c5f565b60405160208183030381529060405260006040518563ffffffff1660e01b81526004016200041e949392919062000d4a565b6020604051808303816000875af11580156200043e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000464919062000de3565b905050505b5b505050565b505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004dd8262000492565b810181811067ffffffffffffffff82111715620004ff57620004fe620004a3565b5b80604052505050565b60006200051462000474565b9050620005228282620004d2565b919050565b600067ffffffffffffffff821115620005455762000544620004a3565b5b620005508262000492565b9050602081019050919050565b60005b838110156200057d57808201518184015260208101905062000560565b838111156200058d576000848401525b50505050565b6000620005aa620005a48462000527565b62000508565b905082815260208101848484011115620005c957620005c86200048d565b5b620005d68482856200055d565b509392505050565b600082601f830112620005f657620005f562000488565b5b81516200060884826020860162000593565b91505092915050565b6000819050919050565b620006268162000611565b81146200063257600080fd5b50565b60008151905062000646816200061b565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000679826200064c565b9050919050565b6200068b816200066c565b81146200069757600080fd5b50565b600081519050620006ab8162000680565b92915050565b60008060008060808587031215620006ce57620006cd6200047e565b5b600085015167ffffffffffffffff811115620006ef57620006ee62000483565b5b620006fd87828801620005de565b945050602085015167ffffffffffffffff81111562000721576200072062000483565b5b6200072f87828801620005de565b9350506040620007428782880162000635565b925050606062000755878288016200069a565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007b457607f821691505b602082108103620007ca57620007c96200076c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007f5565b620008408683620007f5565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620008836200087d620008778462000611565b62000858565b62000611565b9050919050565b6000819050919050565b6200089f8362000862565b620008b7620008ae826200088a565b84845462000802565b825550505050565b600090565b620008ce620008bf565b620008db81848462000894565b505050565b5b818110156200090357620008f7600082620008c4565b600181019050620008e1565b5050565b601f82111562000952576200091c81620007d0565b6200092784620007e5565b8101602085101562000937578190505b6200094f6200094685620007e5565b830182620008e0565b50505b505050565b600082821c905092915050565b6000620009776000198460080262000957565b1980831691505092915050565b600062000992838362000964565b9150826002028217905092915050565b620009ad8262000761565b67ffffffffffffffff811115620009c957620009c8620004a3565b5b620009d582546200079b565b620009e282828562000907565b600060209050601f83116001811462000a1a576000841562000a05578287015190505b62000a11858262000984565b86555062000a81565b601f19841662000a2a86620007d0565b60005b8281101562000a545784890151825560018201915060208501945060208101905062000a2d565b8683101562000a74578489015162000a70601f89168262000964565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ad2601f8362000a89565b915062000adf8262000a9a565b602082019050919050565b6000602082019050818103600083015262000b058162000ac3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b488262000611565b915062000b558362000611565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b8d5762000b8c62000b0c565b5b828201905092915050565b62000ba38162000611565b82525050565b600060208201905062000bc0600083018462000b98565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b62000c00816200066c565b82525050565b62000c118162000611565b82525050565b60608201600082015162000c2f600085018262000bf5565b50602082015162000c44602085018262000bf5565b50604082015162000c59604085018262000c06565b50505050565b600060608201905062000c76600083018462000c17565b92915050565b600063ffffffff82169050919050565b62000c978162000c7c565b82525050565b600081519050919050565b600082825260208201905092915050565b600062000cc68262000c9d565b62000cd2818562000ca8565b935062000ce48185602086016200055d565b62000cef8162000492565b840191505092915050565b6000819050919050565b600060ff82169050919050565b600062000d3262000d2c62000d268462000cfa565b62000858565b62000d04565b9050919050565b62000d448162000d11565b82525050565b600060808201905062000d61600083018762000c8c565b62000d70602083018662000c8c565b818103604083015262000d84818562000cb9565b905062000d95606083018462000d39565b95945050505050565b600067ffffffffffffffff82169050919050565b62000dbd8162000d9e565b811462000dc957600080fd5b50565b60008151905062000ddd8162000db2565b92915050565b60006020828403121562000dfc5762000dfb6200047e565b5b600062000e0c8482850162000dcc565b91505092915050565b611ee88062000e256000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80633950935111610071578063395093511461019157806370a08231146101c157806395d89b41146101f1578063a457c2d71461020f578063a9059cbb1461023f578063dd62ed3e1461026f576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd1461012557806330173dd114610155578063313ce56714610173575b600080fd5b6100c161029f565b6040516100ce9190611175565b60405180910390f35b6100f160048036038101906100ec9190611230565b610331565b6040516100fe919061128b565b60405180910390f35b61010f610354565b60405161011c91906112b5565b60405180910390f35b61013f600480360381019061013a91906112d0565b61035e565b60405161014c919061128b565b60405180910390f35b61015d61038d565b60405161016a91906115e6565b60405180910390f35b61017b61059c565b6040516101889190611624565b60405180910390f35b6101ab60048036038101906101a69190611230565b6105a5565b6040516101b8919061128b565b60405180910390f35b6101db60048036038101906101d6919061163f565b6105dc565b6040516101e891906112b5565b60405180910390f35b6101f96106a4565b6040516102069190611175565b60405180910390f35b61022960048036038101906102249190611230565b610736565b604051610236919061128b565b60405180910390f35b61025960048036038101906102549190611230565b6107ad565b604051610266919061128b565b60405180910390f35b6102896004803603810190610284919061166c565b6107d0565b60405161029691906112b5565b60405180910390f35b6060600380546102ae906116db565b80601f01602080910402602001604051908101604052809291908181526020018280546102da906116db565b80156103275780601f106102fc57610100808354040283529160200191610327565b820191906000526020600020905b81548152906001019060200180831161030a57829003601f168201915b5050505050905090565b60008061033c610909565b9050610349818585610911565b600191505092915050565b6000600254905090565b600080610369610909565b9050610376858285610ada565b610381858585610b66565b60019150509392505050565b610395611093565b60007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90506000600367ffffffffffffffff8111156103d7576103d661170c565b5b6040519080825280602002602001820160405280156104055781602001602082028036833780820191505090505b50905060008160008151811061041e5761041d61173b565b5b6020026020010190600481111561043857610437611323565b5b9081600481111561044c5761044b611323565b5b815250506001816001815181106104665761046561173b565b5b602002602001019060048111156104805761047f611323565b5b9081600481111561049457610493611323565b5b815250506003816002815181106104ae576104ad61173b565b5b602002602001019060048111156104c8576104c7611323565b5b908160048111156104dc576104db611323565b5b815250506000600167ffffffffffffffff8111156104fd576104fc61170c565b5b60405190808252806020026020018201604052801561053657816020015b6105236110bf565b81526020019060019003908161051b5790505b509050604051806040016040528084815260200183815250816000815181106105625761056161173b565b5b6020026020010181905250604051806040016040528060018081111561058b5761058a611323565b5b815260200182815250935050505090565b60006012905090565b6000806105b0610909565b90506105d18185856105c285896107d0565b6105cc9190611799565b610911565b600191505092915050565b60008173ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036106215761061a82610de5565b905061069f565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036106645761065d82610de5565b905061069f565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106969061183b565b60405180910390fd5b919050565b6060600480546106b3906116db565b80601f01602080910402602001604051908101604052809291908181526020018280546106df906116db565b801561072c5780601f106107015761010080835404028352916020019161072c565b820191906000526020600020905b81548152906001019060200180831161070f57829003601f168201915b5050505050905090565b600080610741610909565b9050600061074f82866107d0565b905083811015610794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078b906118cd565b60405180910390fd5b6107a18286868403610911565b60019250505092915050565b6000806107b8610909565b90506107c5818585610b66565b600191505092915050565b60008273ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16148061083757508173ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16145b1561084d576108468383610e2d565b9050610903565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108b257508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b156108c8576108c18383610e2d565b9050610903565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fa9061195f565b60405180910390fd5b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610980576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610977906119f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e690611a83565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610acd91906112b5565b60405180910390a3505050565b6000610ae684846107d0565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b605781811015610b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4990611aef565b60405180910390fd5b610b5f8484848403610911565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc90611b81565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3b90611c13565b60405180910390fd5b610c4f838383610eb4565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccc90611ca5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d689190611799565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610dcc91906112b5565b60405180910390a3610ddf84848461108e565b50505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16031561108957600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361108857600060405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381525090506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b1454caa43600180811115610fff57610ffe611323565b5b856040516020016110109190611d25565b60405160208183030381529060405260006040518563ffffffff1660e01b81526004016110409493929190611df9565b6020604051808303816000875af115801561105f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110839190611e85565b905050505b5b505050565b505050565b6040518060400160405280600060018111156110b2576110b1611323565b5b8152602001606081525090565b604051806040016040528060008019168152602001606081525090565b600081519050919050565b600082825260208201905092915050565b60005b838110156111165780820151818401526020810190506110fb565b83811115611125576000848401525b50505050565b6000601f19601f8301169050919050565b6000611147826110dc565b61115181856110e7565b93506111618185602086016110f8565b61116a8161112b565b840191505092915050565b6000602082019050818103600083015261118f818461113c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006111c78261119c565b9050919050565b6111d7816111bc565b81146111e257600080fd5b50565b6000813590506111f4816111ce565b92915050565b6000819050919050565b61120d816111fa565b811461121857600080fd5b50565b60008135905061122a81611204565b92915050565b6000806040838503121561124757611246611197565b5b6000611255858286016111e5565b92505060206112668582860161121b565b9150509250929050565b60008115159050919050565b61128581611270565b82525050565b60006020820190506112a0600083018461127c565b92915050565b6112af816111fa565b82525050565b60006020820190506112ca60008301846112a6565b92915050565b6000806000606084860312156112e9576112e8611197565b5b60006112f7868287016111e5565b9350506020611308868287016111e5565b92505060406113198682870161121b565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6002811061136357611362611323565b5b50565b600081905061137482611352565b919050565b600061138482611366565b9050919050565b61139481611379565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b6113d9816113c6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6005811061141c5761141b611323565b5b50565b600081905061142d8261140b565b919050565b600061143d8261141f565b9050919050565b61144d81611432565b82525050565b600061145f8383611444565b60208301905092915050565b6000602082019050919050565b6000611483826113df565b61148d81856113ea565b9350611498836113fb565b8060005b838110156114c95781516114b08882611453565b97506114bb8361146b565b92505060018101905061149c565b5085935050505092915050565b60006040830160008301516114ee60008601826113d0565b50602083015184820360208601526115068282611478565b9150508091505092915050565b600061151f83836114d6565b905092915050565b6000602082019050919050565b600061153f8261139a565b61154981856113a5565b93508360208202850161155b856113b6565b8060005b8581101561159757848403895281516115788582611513565b945061158383611527565b925060208a0199505060018101905061155f565b50829750879550505050505092915050565b60006040830160008301516115c1600086018261138b565b50602083015184820360208601526115d98282611534565b9150508091505092915050565b6000602082019050818103600083015261160081846115a9565b905092915050565b600060ff82169050919050565b61161e81611608565b82525050565b60006020820190506116396000830184611615565b92915050565b60006020828403121561165557611654611197565b5b6000611663848285016111e5565b91505092915050565b6000806040838503121561168357611682611197565b5b6000611691858286016111e5565b92505060206116a2858286016111e5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806116f357607f821691505b602082108103611706576117056116ac565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006117a4826111fa565b91506117af836111fa565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156117e4576117e361176a565b5b828201905092915050565b7f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e636500600082015250565b6000611825601f836110e7565b9150611830826117ef565b602082019050919050565b6000602082019050818103600083015261185481611818565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006118b76025836110e7565b91506118c28261185b565b604082019050919050565b600060208201905081810360008301526118e6816118aa565b9050919050565b7f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b60006119496021836110e7565b9150611954826118ed565b604082019050919050565b600060208201905081810360008301526119788161193c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006119db6024836110e7565b91506119e68261197f565b604082019050919050565b60006020820190508181036000830152611a0a816119ce565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611a6d6022836110e7565b9150611a7882611a11565b604082019050919050565b60006020820190508181036000830152611a9c81611a60565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611ad9601d836110e7565b9150611ae482611aa3565b602082019050919050565b60006020820190508181036000830152611b0881611acc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611b6b6025836110e7565b9150611b7682611b0f565b604082019050919050565b60006020820190508181036000830152611b9a81611b5e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611bfd6023836110e7565b9150611c0882611ba1565b604082019050919050565b60006020820190508181036000830152611c2c81611bf0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611c8f6026836110e7565b9150611c9a82611c33565b604082019050919050565b60006020820190508181036000830152611cbe81611c82565b9050919050565b611cce816111bc565b82525050565b611cdd816111fa565b82525050565b606082016000820151611cf96000850182611cc5565b506020820151611d0c6020850182611cc5565b506040820151611d1f6040850182611cd4565b50505050565b6000606082019050611d3a6000830184611ce3565b92915050565b600063ffffffff82169050919050565b611d5981611d40565b82525050565b600081519050919050565b600082825260208201905092915050565b6000611d8682611d5f565b611d908185611d6a565b9350611da08185602086016110f8565b611da98161112b565b840191505092915050565b6000819050919050565b6000819050919050565b6000611de3611dde611dd984611db4565b611dbe565b611608565b9050919050565b611df381611dc8565b82525050565b6000608082019050611e0e6000830187611d50565b611e1b6020830186611d50565b8181036040830152611e2d8185611d7b565b9050611e3c6060830184611dea565b95945050505050565b600067ffffffffffffffff82169050919050565b611e6281611e45565b8114611e6d57600080fd5b50565b600081519050611e7f81611e59565b92915050565b600060208284031215611e9b57611e9a611197565b5b6000611ea984828501611e70565b9150509291505056fea26469706673582212208b444c260a97b93029a9e7777043062f082fd0f59ec75c6ab8f637b6980214b764736f6c634300080f0033", } // ObsERC20ABI is the input ABI used to generate the binding from. @@ -406,7 +402,7 @@ func (_ObsERC20 *ObsERC20CallerSession) TotalSupply() (*big.Int, error) { // VisibilityRules is a free data retrieval call binding the contract method 0x30173dd1. // -// Solidity: function visibilityRules() pure returns((bool,(bytes,bool,bool,bool,bool,bool)[])) +// Solidity: function visibilityRules() pure returns((uint8,(bytes32,uint8[])[])) func (_ObsERC20 *ObsERC20Caller) VisibilityRules(opts *bind.CallOpts) (ContractTransparencyConfigVisibilityConfig, error) { var out []interface{} err := _ObsERC20.contract.Call(opts, &out, "visibilityRules") @@ -423,14 +419,14 @@ func (_ObsERC20 *ObsERC20Caller) VisibilityRules(opts *bind.CallOpts) (ContractT // VisibilityRules is a free data retrieval call binding the contract method 0x30173dd1. // -// Solidity: function visibilityRules() pure returns((bool,(bytes,bool,bool,bool,bool,bool)[])) +// Solidity: function visibilityRules() pure returns((uint8,(bytes32,uint8[])[])) func (_ObsERC20 *ObsERC20Session) VisibilityRules() (ContractTransparencyConfigVisibilityConfig, error) { return _ObsERC20.Contract.VisibilityRules(&_ObsERC20.CallOpts) } // VisibilityRules is a free data retrieval call binding the contract method 0x30173dd1. // -// Solidity: function visibilityRules() pure returns((bool,(bytes,bool,bool,bool,bool,bool)[])) +// Solidity: function visibilityRules() pure returns((uint8,(bytes32,uint8[])[])) func (_ObsERC20 *ObsERC20CallerSession) VisibilityRules() (ContractTransparencyConfigVisibilityConfig, error) { return _ObsERC20.Contract.VisibilityRules(&_ObsERC20.CallOpts) }