Address Details
contract
0xfe84474A7c1Fb5f4494a7aAe98788490EF688B88
- Contract Name
- CASProxy
- Creator
- 0xb156c1–ebc770 at 0x07fb32–eb7ea0
- Balance
- 0 CELO ( )
- Locked CELO Balance
- 0.00 CELO
- Voting CELO Balance
- 0.00 CELO
- Pending Unlocked Gold
- 0.00 CELO
- Tokens
-
Fetching tokens...
- Transactions
- 6 Transactions
- Transfers
- 0 Transfers
- Gas Used
- 845,690
- Last Balance Update
- 16133060
This contract has been verified via Sourcify.
View contract in Sourcify repository
- Contract name:
- CASProxy
- Optimization enabled
- false
- Compiler version
- v0.8.7+commit.e28d00a7
- EVM Version
- istanbul
- Verified at
- 2023-02-01T16:07:26.885449Z
project:/contracts/CASProxy.sol
// SPDX-License-Identifier: MIT pragma solidity ^0.8; import "@openzeppelin/contracts/access/Ownable.sol"; interface IRegistryManager { function createProject(bytes[] memory bytesParams) external; function changeProjectEndDate(bytes[] memory bytesParams) external; function getProject(bytes[] memory bytesParams) external view returns (uint, uint, uint); function processClaim(bytes[] memory projectOutput, bytes[] memory bufferOutput) external; function assignTokens(bytes[] memory projectInput, bytes[] memory holderOutput) external; } /// create project ["0x5b38da6a701c568545dcfcb03fcb875f56beddc4", "0x00000000000000000000000000000000000000000000000000000000000000fa", "0x0000000000000000000000000000000000000000000000000000000063d98c57", "0x0000000000000000000000000000000000000000000000000000000063d98c57"] /// get project ["0x5b38da6a701c568545dcfcb03fcb875f56beddc4"] /// change end date ["0x5b38da6a701c568545dcfcb03fcb875f56beddc4", "0x000000000000000000000000000000000000000000000000000000004c11bfc7"] /// process claim project output ["0x5b38da6a701c568545dcfcb03fcb875f56beddc4", "0x625f30303230", "0x00000000000000000000000000000000000000000000000000000000000000c8", "0x46435255", "0x6578616d706c652e636f6d2f6d657461646174612f6d2d303031", "0x5b38da6a701c568545dcfcb03fcb875f56beddc4"] /// process claim buffer output. ["0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2", "0x625f30303034", "0x00000000000000000000000000000000000000000000000000000000000000c8", "0x46435255", "0x6578616d706c652e636f6d2f6d657461646174612f6d2d303031", "0x5b38da6a701c568545dcfcb03fcb875f56beddc4"] contract CASProxy is Ownable { /// initialized registry manager contract address address private registryManagerContractAddress; /** * @dev Setter for a new registry manager contract address * @param _registryManagerContractAddress the new address of the registry manager contract */ function setRegistryManagerContractAddress(address _registryManagerContractAddress) public onlyOwner { registryManagerContractAddress = _registryManagerContractAddress; } /** * @dev Get the registry manager contract address * @return projectAddress Current registry manager contract address */ function getRegistryManagerContractAddress() public view returns(address) { return registryManagerContractAddress; } /** * @dev Initialization of a new project * @param bytesParams ( * project_address: bytes(address), * project_id: bytes(int), * start_date: bytes(string), * end_date: bytes(string) * ) * @notice All parameters must be passed in bytes and opened in the contract as the required type */ function createProject(bytes[] memory bytesParams) public onlyOwner { IRegistryManager(registryManagerContractAddress).createProject(bytesParams); } /** * @dev Function to change end date parameter * @param bytesParams ( * projectAddress: bytes(address), * end_date: bytes(string) * ) * @notice All parameters must be passed in bytes and opened in the contract as the required type */ function changeProjectEndDate(bytes[] memory bytesParams) public onlyOwner { IRegistryManager(registryManagerContractAddress).changeProjectEndDate(bytesParams); } /** * @dev Get project parameters * @param bytesParams ( * project_address: bytes(address) * ) * `projectAddress` parameter must be passed in bytes and opened in the contract as the required type * @return projectId Returns `projectId`, `startDate`, `endDate` of a given project * @return startDate Returns `projectId`, `startDate`, `endDate` of a given project * @return endDate Returns `projectId`, `startDate`, `endDate` of a given project */ function getProject(bytes[] memory bytesParams) public view returns(uint projectId, uint startDate, uint endDate) { return IRegistryManager(registryManagerContractAddress).getProject(bytesParams); } /** * @dev create claim for a project (give FCRU to it) * @param projectOutput ( * projectAddress: bytes(address), * bundleId: bytes(string), * bundleVolume: bytes(int), * unitType: bytes(string), * metadataUrl: bytes(string) * projectAddress: bytes(address) * ) * @param bufferOutput ( * bufferAddress: bytes(address), * outputBundleId: bytes(string), * bundleVolume: bytes(int), * unitType: bytes(string), * metadataUrl: bytes(string) * projectAddress: bytes(address) * ) * @notice All parameters must be passed in bytes and opened in the contract as the required type */ function processClaim(bytes[] memory projectOutput, bytes[] memory bufferOutput) public onlyOwner { IRegistryManager(registryManagerContractAddress).processClaim(projectOutput, bufferOutput); } /** * @dev assign tokens from the project to the holder * @param projectInput ( * projectAddress: bytes(address), * bundleId: bytes(string), * bundleVolume: bytes(int), * unitType: bytes(string), * metadataUrl: bytes(string) * projectAddress: bytes(address) * ) * @param holderOutput ( * holderAddress: bytes(address), * outputBundleId: bytes(string), * bundleVolume: bytes(int), * unitType: bytes(string), * metadataUrl: bytes(string) * projectAddress: bytes(address) * ) * @notice All parameters must be passed in bytes and opened in the contract as the required type */ function assignProjectTokens(bytes[] memory projectInput, bytes[] memory holderOutput) public onlyOwner { IRegistryManager(registryManagerContractAddress).assignTokens(projectInput, holderOutput); } }
/_openzeppelin/contracts/access/Ownable.sol
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
/_openzeppelin/contracts/utils/Context.sol
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
Contract ABI
[{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"assignProjectTokens","inputs":[{"type":"bytes[]","name":"projectInput","internalType":"bytes[]"},{"type":"bytes[]","name":"holderOutput","internalType":"bytes[]"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"changeProjectEndDate","inputs":[{"type":"bytes[]","name":"bytesParams","internalType":"bytes[]"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"createProject","inputs":[{"type":"bytes[]","name":"bytesParams","internalType":"bytes[]"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"projectId","internalType":"uint256"},{"type":"uint256","name":"startDate","internalType":"uint256"},{"type":"uint256","name":"endDate","internalType":"uint256"}],"name":"getProject","inputs":[{"type":"bytes[]","name":"bytesParams","internalType":"bytes[]"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"getRegistryManagerContractAddress","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"processClaim","inputs":[{"type":"bytes[]","name":"projectOutput","internalType":"bytes[]"},{"type":"bytes[]","name":"bufferOutput","internalType":"bytes[]"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setRegistryManagerContractAddress","inputs":[{"type":"address","name":"_registryManagerContractAddress","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]}]
Contract Creation Code
0x608060405234801561001057600080fd5b5061002d61002261003260201b60201c565b61003a60201b60201c565b6100fe565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6111898061010d6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806389d8dbb01161006657806389d8dbb0146101355780638da5cb5b1461015157806395c581841461016f578063e652cacb1461018b578063f2fde38b146101a75761009e565b8063091a42ed146100a35780632094719d146100bf57806334c10083146100dd5780634bd0bb881461010f578063715018a61461012b575b600080fd5b6100bd60048036038101906100b89190610be1565b6101c3565b005b6100c76102d2565b6040516100d49190610dd2565b60405180910390f35b6100f760048036038101906100f29190610b98565b6102fc565b60405161010693929190610e86565b60405180910390f35b61012960048036038101906101249190610be1565b6103b9565b005b6101336104c8565b005b61014f600480360381019061014a9190610b98565b610550565b005b61015961065c565b6040516101669190610dd2565b60405180910390f35b61018960048036038101906101849190610b6b565b610685565b005b6101a560048036038101906101a09190610b98565b610745565b005b6101c160048036038101906101bc9190610b6b565b610851565b005b6101cb610949565b73ffffffffffffffffffffffffffffffffffffffff166101e961065c565b73ffffffffffffffffffffffffffffffffffffffff161461023f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023690610e66565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663091a42ed83836040518363ffffffff1660e01b815260040161029c929190610e0f565b600060405180830381600087803b1580156102b657600080fd5b505af11580156102ca573d6000803e3d6000fd5b505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166334c10083856040518263ffffffff1660e01b815260040161035c9190610ded565b60606040518083038186803b15801561037457600080fd5b505afa158015610388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ac9190610c59565b9250925092509193909250565b6103c1610949565b73ffffffffffffffffffffffffffffffffffffffff166103df61065c565b73ffffffffffffffffffffffffffffffffffffffff1614610435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c90610e66565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f11ba5d883836040518363ffffffff1660e01b8152600401610492929190610e0f565b600060405180830381600087803b1580156104ac57600080fd5b505af11580156104c0573d6000803e3d6000fd5b505050505050565b6104d0610949565b73ffffffffffffffffffffffffffffffffffffffff166104ee61065c565b73ffffffffffffffffffffffffffffffffffffffff1614610544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053b90610e66565b60405180910390fd5b61054e6000610951565b565b610558610949565b73ffffffffffffffffffffffffffffffffffffffff1661057661065c565b73ffffffffffffffffffffffffffffffffffffffff16146105cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c390610e66565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166389d8dbb0826040518263ffffffff1660e01b81526004016106279190610ded565b600060405180830381600087803b15801561064157600080fd5b505af1158015610655573d6000803e3d6000fd5b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61068d610949565b73ffffffffffffffffffffffffffffffffffffffff166106ab61065c565b73ffffffffffffffffffffffffffffffffffffffff1614610701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f890610e66565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61074d610949565b73ffffffffffffffffffffffffffffffffffffffff1661076b61065c565b73ffffffffffffffffffffffffffffffffffffffff16146107c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b890610e66565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e652cacb826040518263ffffffff1660e01b815260040161081c9190610ded565b600060405180830381600087803b15801561083657600080fd5b505af115801561084a573d6000803e3d6000fd5b5050505050565b610859610949565b73ffffffffffffffffffffffffffffffffffffffff1661087761065c565b73ffffffffffffffffffffffffffffffffffffffff16146108cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c490610e66565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561093d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093490610e46565b60405180910390fd5b61094681610951565b50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000610a28610a2384610ee2565b610ebd565b90508083825260208201905082856020860282011115610a4b57610a4a611088565b5b60005b85811015610a9957813567ffffffffffffffff811115610a7157610a70611083565b5b808601610a7e8982610b28565b85526020850194506020840193505050600181019050610a4e565b5050509392505050565b6000610ab6610ab184610f0e565b610ebd565b905082815260208101848484011115610ad257610ad161108d565b5b610add848285610fe1565b509392505050565b600081359050610af481611125565b92915050565b600082601f830112610b0f57610b0e611083565b5b8135610b1f848260208601610a15565b91505092915050565b600082601f830112610b3d57610b3c611083565b5b8135610b4d848260208601610aa3565b91505092915050565b600081519050610b658161113c565b92915050565b600060208284031215610b8157610b80611097565b5b6000610b8f84828501610ae5565b91505092915050565b600060208284031215610bae57610bad611097565b5b600082013567ffffffffffffffff811115610bcc57610bcb611092565b5b610bd884828501610afa565b91505092915050565b60008060408385031215610bf857610bf7611097565b5b600083013567ffffffffffffffff811115610c1657610c15611092565b5b610c2285828601610afa565b925050602083013567ffffffffffffffff811115610c4357610c42611092565b5b610c4f85828601610afa565b9150509250929050565b600080600060608486031215610c7257610c71611097565b5b6000610c8086828701610b56565b9350506020610c9186828701610b56565b9250506040610ca286828701610b56565b9150509250925092565b6000610cb88383610d44565b905092915050565b610cc981610fa5565b82525050565b6000610cda82610f4f565b610ce48185610f72565b935083602082028501610cf685610f3f565b8060005b85811015610d325784840389528151610d138582610cac565b9450610d1e83610f65565b925060208a01995050600181019050610cfa565b50829750879550505050505092915050565b6000610d4f82610f5a565b610d598185610f83565b9350610d69818560208601610ff0565b610d728161109c565b840191505092915050565b6000610d8a602683610f94565b9150610d95826110ad565b604082019050919050565b6000610dad602083610f94565b9150610db8826110fc565b602082019050919050565b610dcc81610fd7565b82525050565b6000602082019050610de76000830184610cc0565b92915050565b60006020820190508181036000830152610e078184610ccf565b905092915050565b60006040820190508181036000830152610e298185610ccf565b90508181036020830152610e3d8184610ccf565b90509392505050565b60006020820190508181036000830152610e5f81610d7d565b9050919050565b60006020820190508181036000830152610e7f81610da0565b9050919050565b6000606082019050610e9b6000830186610dc3565b610ea86020830185610dc3565b610eb56040830184610dc3565b949350505050565b6000610ec7610ed8565b9050610ed38282611023565b919050565b6000604051905090565b600067ffffffffffffffff821115610efd57610efc611054565b5b602082029050602081019050919050565b600067ffffffffffffffff821115610f2957610f28611054565b5b610f328261109c565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610fb082610fb7565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561100e578082015181840152602081019050610ff3565b8381111561101d576000848401525b50505050565b61102c8261109c565b810181811067ffffffffffffffff8211171561104b5761104a611054565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b61112e81610fa5565b811461113957600080fd5b50565b61114581610fd7565b811461115057600080fd5b5056fea2646970667358221220fc774f945c89f73b3d54623d6db47267d684c0487be824021b5fc3d74a13551164736f6c63430008070033
Deployed ByteCode
0x608060405234801561001057600080fd5b506004361061009e5760003560e01c806389d8dbb01161006657806389d8dbb0146101355780638da5cb5b1461015157806395c581841461016f578063e652cacb1461018b578063f2fde38b146101a75761009e565b8063091a42ed146100a35780632094719d146100bf57806334c10083146100dd5780634bd0bb881461010f578063715018a61461012b575b600080fd5b6100bd60048036038101906100b89190610be1565b6101c3565b005b6100c76102d2565b6040516100d49190610dd2565b60405180910390f35b6100f760048036038101906100f29190610b98565b6102fc565b60405161010693929190610e86565b60405180910390f35b61012960048036038101906101249190610be1565b6103b9565b005b6101336104c8565b005b61014f600480360381019061014a9190610b98565b610550565b005b61015961065c565b6040516101669190610dd2565b60405180910390f35b61018960048036038101906101849190610b6b565b610685565b005b6101a560048036038101906101a09190610b98565b610745565b005b6101c160048036038101906101bc9190610b6b565b610851565b005b6101cb610949565b73ffffffffffffffffffffffffffffffffffffffff166101e961065c565b73ffffffffffffffffffffffffffffffffffffffff161461023f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023690610e66565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663091a42ed83836040518363ffffffff1660e01b815260040161029c929190610e0f565b600060405180830381600087803b1580156102b657600080fd5b505af11580156102ca573d6000803e3d6000fd5b505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166334c10083856040518263ffffffff1660e01b815260040161035c9190610ded565b60606040518083038186803b15801561037457600080fd5b505afa158015610388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ac9190610c59565b9250925092509193909250565b6103c1610949565b73ffffffffffffffffffffffffffffffffffffffff166103df61065c565b73ffffffffffffffffffffffffffffffffffffffff1614610435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c90610e66565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f11ba5d883836040518363ffffffff1660e01b8152600401610492929190610e0f565b600060405180830381600087803b1580156104ac57600080fd5b505af11580156104c0573d6000803e3d6000fd5b505050505050565b6104d0610949565b73ffffffffffffffffffffffffffffffffffffffff166104ee61065c565b73ffffffffffffffffffffffffffffffffffffffff1614610544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053b90610e66565b60405180910390fd5b61054e6000610951565b565b610558610949565b73ffffffffffffffffffffffffffffffffffffffff1661057661065c565b73ffffffffffffffffffffffffffffffffffffffff16146105cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c390610e66565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166389d8dbb0826040518263ffffffff1660e01b81526004016106279190610ded565b600060405180830381600087803b15801561064157600080fd5b505af1158015610655573d6000803e3d6000fd5b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61068d610949565b73ffffffffffffffffffffffffffffffffffffffff166106ab61065c565b73ffffffffffffffffffffffffffffffffffffffff1614610701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f890610e66565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61074d610949565b73ffffffffffffffffffffffffffffffffffffffff1661076b61065c565b73ffffffffffffffffffffffffffffffffffffffff16146107c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b890610e66565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e652cacb826040518263ffffffff1660e01b815260040161081c9190610ded565b600060405180830381600087803b15801561083657600080fd5b505af115801561084a573d6000803e3d6000fd5b5050505050565b610859610949565b73ffffffffffffffffffffffffffffffffffffffff1661087761065c565b73ffffffffffffffffffffffffffffffffffffffff16146108cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c490610e66565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561093d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093490610e46565b60405180910390fd5b61094681610951565b50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000610a28610a2384610ee2565b610ebd565b90508083825260208201905082856020860282011115610a4b57610a4a611088565b5b60005b85811015610a9957813567ffffffffffffffff811115610a7157610a70611083565b5b808601610a7e8982610b28565b85526020850194506020840193505050600181019050610a4e565b5050509392505050565b6000610ab6610ab184610f0e565b610ebd565b905082815260208101848484011115610ad257610ad161108d565b5b610add848285610fe1565b509392505050565b600081359050610af481611125565b92915050565b600082601f830112610b0f57610b0e611083565b5b8135610b1f848260208601610a15565b91505092915050565b600082601f830112610b3d57610b3c611083565b5b8135610b4d848260208601610aa3565b91505092915050565b600081519050610b658161113c565b92915050565b600060208284031215610b8157610b80611097565b5b6000610b8f84828501610ae5565b91505092915050565b600060208284031215610bae57610bad611097565b5b600082013567ffffffffffffffff811115610bcc57610bcb611092565b5b610bd884828501610afa565b91505092915050565b60008060408385031215610bf857610bf7611097565b5b600083013567ffffffffffffffff811115610c1657610c15611092565b5b610c2285828601610afa565b925050602083013567ffffffffffffffff811115610c4357610c42611092565b5b610c4f85828601610afa565b9150509250929050565b600080600060608486031215610c7257610c71611097565b5b6000610c8086828701610b56565b9350506020610c9186828701610b56565b9250506040610ca286828701610b56565b9150509250925092565b6000610cb88383610d44565b905092915050565b610cc981610fa5565b82525050565b6000610cda82610f4f565b610ce48185610f72565b935083602082028501610cf685610f3f565b8060005b85811015610d325784840389528151610d138582610cac565b9450610d1e83610f65565b925060208a01995050600181019050610cfa565b50829750879550505050505092915050565b6000610d4f82610f5a565b610d598185610f83565b9350610d69818560208601610ff0565b610d728161109c565b840191505092915050565b6000610d8a602683610f94565b9150610d95826110ad565b604082019050919050565b6000610dad602083610f94565b9150610db8826110fc565b602082019050919050565b610dcc81610fd7565b82525050565b6000602082019050610de76000830184610cc0565b92915050565b60006020820190508181036000830152610e078184610ccf565b905092915050565b60006040820190508181036000830152610e298185610ccf565b90508181036020830152610e3d8184610ccf565b90509392505050565b60006020820190508181036000830152610e5f81610d7d565b9050919050565b60006020820190508181036000830152610e7f81610da0565b9050919050565b6000606082019050610e9b6000830186610dc3565b610ea86020830185610dc3565b610eb56040830184610dc3565b949350505050565b6000610ec7610ed8565b9050610ed38282611023565b919050565b6000604051905090565b600067ffffffffffffffff821115610efd57610efc611054565b5b602082029050602081019050919050565b600067ffffffffffffffff821115610f2957610f28611054565b5b610f328261109c565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000610fb082610fb7565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561100e578082015181840152602081019050610ff3565b8381111561101d576000848401525b50505050565b61102c8261109c565b810181811067ffffffffffffffff8211171561104b5761104a611054565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b61112e81610fa5565b811461113957600080fd5b50565b61114581610fd7565b811461115057600080fd5b5056fea2646970667358221220fc774f945c89f73b3d54623d6db47267d684c0487be824021b5fc3d74a13551164736f6c63430008070033