Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 1,195 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 21793424 | 12 days ago | IN | 0 ETH | 0.0000746 | ||||
Transfer | 21793414 | 12 days ago | IN | 0 ETH | 0.00004477 | ||||
Transfer | 21793249 | 12 days ago | IN | 0 ETH | 0.00010366 | ||||
Transfer | 21793243 | 12 days ago | IN | 0 ETH | 0.00010494 | ||||
Transfer | 21652073 | 32 days ago | IN | 0 ETH | 0.00055363 | ||||
Transfer | 21644027 | 33 days ago | IN | 0 ETH | 0.00022734 | ||||
Transfer | 21643963 | 33 days ago | IN | 0 ETH | 0.0003634 | ||||
Transfer | 21643949 | 33 days ago | IN | 0 ETH | 0.00041026 | ||||
Transfer | 21591780 | 40 days ago | IN | 0 ETH | 0.0001356 | ||||
Transfer | 21477441 | 56 days ago | IN | 0 ETH | 0.0001411 | ||||
Transfer | 21477433 | 56 days ago | IN | 0 ETH | 0.00021382 | ||||
Transfer | 21342353 | 75 days ago | IN | 0 ETH | 0.00106866 | ||||
Transfer | 21333652 | 76 days ago | IN | 0 ETH | 0.00150873 | ||||
Transfer | 21332849 | 76 days ago | IN | 0 ETH | 0.00063651 | ||||
Transfer | 21322675 | 78 days ago | IN | 0 ETH | 0.00194743 | ||||
Transfer | 21320924 | 78 days ago | IN | 0 ETH | 0.00087185 | ||||
Transfer | 21279836 | 84 days ago | IN | 0 ETH | 0.00072079 | ||||
Transfer | 21263774 | 86 days ago | IN | 0 ETH | 0.00034067 | ||||
Transfer | 21232858 | 90 days ago | IN | 0 ETH | 0.00048106 | ||||
Transfer | 21078382 | 112 days ago | IN | 0 ETH | 0.00055799 | ||||
Transfer | 21039539 | 117 days ago | IN | 0 ETH | 0.00023931 | ||||
Transfer | 21035230 | 118 days ago | IN | 0 ETH | 0.00077538 | ||||
Transfer | 21033877 | 118 days ago | IN | 0 ETH | 0.00030983 | ||||
Transfer | 21033866 | 118 days ago | IN | 0 ETH | 0.00054946 | ||||
Transfer | 21033860 | 118 days ago | IN | 0 ETH | 0.00057419 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
PCRM
Compiler Version
v0.8.4+commit.c7e474f2
Optimization Enabled:
No with 200 runs
Other Settings:
istanbul EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.4; // @openzeppelin/contracts": "^4.8.0", @openzeppelin/contracts/utils/Context.sol abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } //@openzeppelin/contracts": "^4.8.0", @openzeppelin/contracts/access/Ownable.sol abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface EIP1132Interface { function lock(bytes32 _reason, uint256 _amount, uint256 _time) external returns (bool); function tokensLocked(address _of, bytes32 _reason) external view returns (uint256 amount); function tokensLockedAtTime(address _of, bytes32 _reason, uint256 _time) external view returns (uint256 amount); function totalBalanceOf(address _of) external view returns (uint256 amount); function extendLock(bytes32 _reason, uint256 _time) external returns (bool); function increaseLockAmount(bytes32 _reason, uint256 _amount) external returns (bool); function tokensUnlockable(address _of, bytes32 _reason) external view returns (uint256 amount); function getUnlockableTokens(address _of) external view returns (uint256 unlockableTokens); function unlock(address _of) external returns (uint256 unlockableTokens); event Locked(address indexed _of, uint256 indexed _reason, uint256 _amount, uint256 _validity); event Unlocked(address indexed _of, uint256 indexed _reason, uint256 _amount); } interface ITOKENLOCK { event UpdateTokenBolt(address tokenHolder, uint256 amountLocked); function boltUnlocked(address tokenHolder) external view returns (uint256 amount); function boltLocked(address tokenHolder) external view returns (uint256 amount); } //@openzeppelin/contracts": "^4.8.0", @openzeppelin/contracts/interfaces/IERC20.sol interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } //@openzeppelin/contracts": "^4.8.0", @openzeppelin/contracts/interfaces/IERC20Metadata.sol //interface IERC20Metadata is IERC20 { interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } //@openzeppelin/contracts": "^4.8.0", @openzeppelin/contracts/token/ERC20/ERC20.sol contract ERC20 is Context, IERC20, IERC20Metadata { mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor (string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); _balances[sender] = senderBalance - amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} } contract PCRM is ERC20, Ownable, ITOKENLOCK { string private constant ERROR_INSUFFICIENT_UNLOCKED = "Not enough unlocked(locked) tokens for transfer"; string private constant ERROR_LOCK_EXISTS = "Token lock already exists"; string private constant ERROR_INSUFFICIENT_TOKENS = "Not enough tokens to lock"; string private constant ERROR_NO_LOCKED_TOKENS = "No tokens are locked, create new lock first"; string private constant ERROR_BAD_NEW_LOCKED_AMT = "New amount locked(unlocked) must be greater than current"; string private constant ERROR_NOT_ENOUGH = "Not enough tokens to lock or unlock"; string internal constant AMOUNT_ZERO = 'Amount can not be 0'; mapping (address => uint256) public baseTokensLocked; // the number of tokens locked up by HOLDER event ExpireJournal(bytes32 indexed _CreditOwner, bytes32 _Verifier, address _from, uint256 amount, uint256 indexed txId); constructor(string memory name_, string memory symbol_, uint256 amount_, address deployer_) ERC20(name_, symbol_){ amount_ = amount_ * (10 ** 18); _mint(deployer_, amount_); } function _beforeTokenTransfer(address from, address /*to*/, uint256 amount) internal virtual override { require(from == address(0x0) || amount <= boltUnlocked(from), ERROR_INSUFFICIENT_UNLOCKED); } // WEB3.0 API corresponding signature transfe function EXTransferSign(uint256 _amount, address _to, bytes memory signature) public { uint8 v; bytes32 r; bytes32 s; bytes32 Hash = keccak256(abi.encode(this, _amount, _to)); bytes32 hash = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", Hash)); require(signature.length == 65); assembly { r := mload(add(signature, 32)) s := mload(add(signature, 64)) v := byte(0, mload(add(signature, 96))) } address singer = ecrecover(hash, v, r, s); require(msg.sender == singer); require(_amount != 0, AMOUNT_ZERO); transfer(_to, _amount); } // To offset carbon credits, additional PCRMs are issued once the quantity in a PCRM mining area is exhausted. // However, if there is a request to incinerate PCRM in response to a request to offset carbon emissions, // the corresponding quantity will be incinerated to balance the total issuance. function CarbonCredits(uint256 _amount, address _to, bytes memory signature) external onlyOwner { uint8 v; bytes32 r; bytes32 s; bytes32 Hash = keccak256(abi.encode(this, _amount, _to)); bytes32 hash = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", Hash)); assembly { r := mload(add(signature, 32)) s := mload(add(signature, 64)) v := byte(0, mload(add(signature, 96))) } address singer = ecrecover(hash, v, r, s); require(msg.sender == singer); _mint(_to, _amount); } // Carbon Credit GET(PCRM) -> Carbon Credit CERs -> Carbon Credits Offset -> Carbon Credits Incineration // (Transfer PCRM to Offset Wallet) // WEB3.0 API for carbon credit offset is provided separately to the carbon credit exchange or voluntary carbon market. function CarbonCreditsExpire(bytes32 _CreditOwner, bytes32 _Verifier, address _from, uint256 _amount, bytes memory signature) external onlyOwner { uint8 v; bytes32 r; bytes32 s; bytes32 Hash = keccak256(abi.encode(this, _amount, _from)); bytes32 hash = keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", Hash)); assembly { r := mload(add(signature, 32)) s := mload(add(signature, 64)) v := byte(0, mload(add(signature, 96))) } address singer = ecrecover(hash, v, r, s); require(msg.sender == singer); _burn(msg.sender, _amount); emit ExpireJournal(_CreditOwner, _Verifier, _from, _amount, block.number); } function bolt(address _to, uint256 _amount) public onlyOwner returns (bool) { require(boltLocked(_to) == 0, ERROR_LOCK_EXISTS); require(balanceOf(_to) >= _amount, ERROR_NOT_ENOUGH); require(_amount > 0, ERROR_NOT_ENOUGH); baseTokensLocked[_to] = _amount; emitUpdateTokenBolt(_to); return true; } function clearBolt(address _to) public onlyOwner returns (uint256 unlockableTokens) { require(balanceOf(_to) > 0, ERROR_INSUFFICIENT_TOKENS); unlockableTokens = boltLocked(_to); baseTokensLocked[_to] = 0; emitUpdateTokenBolt(_to); return unlockableTokens; } function boltUnlocked(address _to) public virtual override view returns (uint256 amount) { require(balanceOf(_to) > 0, ERROR_NOT_ENOUGH); amount = balanceOf(_to)- boltLocked(_to); return amount; } function boltLocked(address _to) public virtual override view returns (uint256 amount){ if(baseTokensLocked[_to] == 0){ return 0; } amount = baseTokensLocked[_to]; return amount; } function emitUpdateTokenBolt(address _to) internal { emit UpdateTokenBolt(_to, baseTokensLocked[_to]); } function decBolt(address _to, uint256 _amount) public virtual onlyOwner { require(boltLocked(_to) > 0, ERROR_NO_LOCKED_TOKENS); baseTokensLocked[_to] = boltLocked(_to) - _amount; emitUpdateTokenBolt(_to); } function incBolt(address _to, uint256 _amount) public virtual onlyOwner { require(_amount > 0, ERROR_NOT_ENOUGH); require(boltLocked(_to) > 0, ERROR_NO_LOCKED_TOKENS); require(_amount <= boltUnlocked(_to), ERROR_NOT_ENOUGH); baseTokensLocked[_to] = (_amount + boltLocked(_to)); emitUpdateTokenBolt(_to); } }
{ "remappings": [], "optimizer": { "enabled": false, "runs": 200 }, "evmVersion": "istanbul", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"address","name":"deployer_","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":"bytes32","name":"_CreditOwner","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"_Verifier","type":"bytes32"},{"indexed":false,"internalType":"address","name":"_from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"txId","type":"uint256"}],"name":"ExpireJournal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"tokenHolder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountLocked","type":"uint256"}],"name":"UpdateTokenBolt","type":"event"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"CarbonCredits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_CreditOwner","type":"bytes32"},{"internalType":"bytes32","name":"_Verifier","type":"bytes32"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"CarbonCreditsExpire","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"EXTransferSign","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":[{"internalType":"address","name":"","type":"address"}],"name":"baseTokensLocked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"bolt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"boltLocked","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"boltUnlocked","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"clearBolt","outputs":[{"internalType":"uint256","name":"unlockableTokens","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"decBolt","outputs":[],"stateMutability":"nonpayable","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":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"incBolt","outputs":[],"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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620039ed380380620039ed83398181016040528101906200003791906200068f565b83838160039080519060200190620000519291906200053f565b5080600490805190602001906200006a9291906200053f565b5050506200008d62000081620000c160201b60201c565b620000c960201b60201c565b670de0b6b3a764000082620000a39190620008e1565b9150620000b781836200018f60201b60201c565b5050505062000b58565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000202576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001f990620007ca565b60405180910390fd5b6200021660008383620002fd60201b60201c565b80600260008282546200022a919062000884565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002dd9190620007ec565b60405180910390a3620002f960008383620003ad60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806200034957506200034583620003b260201b60201c565b8111155b6040518060600160405280602f8152602001620039be602f913990620003a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200039e9190620007a6565b60405180910390fd5b50505050565b505050565b600080620003c6836200045b60201b60201c565b116040518060600160405280602381526020016200399b602391399062000425576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200041c9190620007a6565b60405180910390fd5b506200043782620004a360201b60201c565b62000448836200045b60201b60201c565b62000454919062000942565b9050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415620004f757600090506200053a565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b8280546200054d90620009f1565b90600052602060002090601f016020900481019282620005715760008555620005bd565b82601f106200058c57805160ff1916838001178555620005bd565b82800160010185558215620005bd579182015b82811115620005bc5782518255916020019190600101906200059f565b5b509050620005cc9190620005d0565b5090565b5b80821115620005eb576000816000905550600101620005d1565b5090565b600062000606620006008462000832565b62000809565b9050828152602081018484840111156200061f57600080fd5b6200062c848285620009bb565b509392505050565b600081519050620006458162000b24565b92915050565b600082601f8301126200065d57600080fd5b81516200066f848260208601620005ef565b91505092915050565b600081519050620006898162000b3e565b92915050565b60008060008060808587031215620006a657600080fd5b600085015167ffffffffffffffff811115620006c157600080fd5b620006cf878288016200064b565b945050602085015167ffffffffffffffff811115620006ed57600080fd5b620006fb878288016200064b565b93505060406200070e8782880162000678565b9250506060620007218782880162000634565b91505092959194509250565b60006200073a8262000868565b62000746818562000873565b935062000758818560208601620009bb565b620007638162000aea565b840191505092915050565b60006200077d601f8362000873565b91506200078a8262000afb565b602082019050919050565b620007a081620009b1565b82525050565b60006020820190508181036000830152620007c281846200072d565b905092915050565b60006020820190508181036000830152620007e5816200076e565b9050919050565b600060208201905062000803600083018462000795565b92915050565b60006200081562000828565b905062000823828262000a27565b919050565b6000604051905090565b600067ffffffffffffffff82111562000850576200084f62000abb565b5b6200085b8262000aea565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b60006200089182620009b1565b91506200089e83620009b1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620008d657620008d562000a5d565b5b828201905092915050565b6000620008ee82620009b1565b9150620008fb83620009b1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000937576200093662000a5d565b5b828202905092915050565b60006200094f82620009b1565b91506200095c83620009b1565b92508282101562000972576200097162000a5d565b5b828203905092915050565b60006200098a8262000991565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015620009db578082015181840152602081019050620009be565b83811115620009eb576000848401525b50505050565b6000600282049050600182168062000a0a57607f821691505b6020821081141562000a215762000a2062000a8c565b5b50919050565b62000a328262000aea565b810181811067ffffffffffffffff8211171562000a545762000a5362000abb565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b62000b2f816200097d565b811462000b3b57600080fd5b50565b62000b4981620009b1565b811462000b5557600080fd5b50565b612e338062000b686000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806372d3629b116100c3578063a9059cbb1161007c578063a9059cbb146103ed578063b18839731461041d578063bf66444014610439578063d8a67fd514610469578063dd62ed3e14610499578063f2fde38b146104c957610158565b806372d3629b14610319578063785d2c0b14610349578063796dcc7f146103655780638da5cb5b1461038157806395d89b411461039f578063a457c2d7146103bd57610158565b80633a3f499f116101155780633a3f499f14610247578063484659c914610263578063650ad9001461027f5780636d89a466146102af57806370a08231146102df578063715018a61461030f57610158565b806306fdde031461015d578063095ea7b31461017b57806318160ddd146101ab57806323b872dd146101c9578063313ce567146101f95780633950935114610217575b600080fd5b6101656104e5565b60405161017291906124fb565b60405180910390f35b61019560048036038101906101909190612020565b610577565b6040516101a2919061242d565b60405180910390f35b6101b3610595565b6040516101c0919061269d565b60405180910390f35b6101e360048036038101906101de9190611fd1565b61059f565b6040516101f0919061242d565b60405180910390f35b6102016106a0565b60405161020e91906126b8565b60405180910390f35b610231600480360381019061022c9190612020565b6106a9565b60405161023e919061242d565b60405180910390f35b610261600480360381019061025c919061205c565b610755565b005b61027d600480360381019061027891906120eb565b6108b2565b005b61029960048036038101906102949190611f6c565b610a54565b6040516102a6919061269d565b60405180910390f35b6102c960048036038101906102c49190611f6c565b610b40565b6040516102d6919061269d565b60405180910390f35b6102f960048036038101906102f49190611f6c565b610bcb565b604051610306919061269d565b60405180910390f35b610317610c13565b005b610333600480360381019061032e9190611f6c565b610c27565b604051610340919061269d565b60405180910390f35b610363600480360381019061035e91906120eb565b610cc1565b005b61037f600480360381019061037a9190612020565b610ddf565b005b610389610f78565b60405161039691906123e9565b60405180910390f35b6103a7610fa2565b6040516103b491906124fb565b60405180910390f35b6103d760048036038101906103d29190612020565b611034565b6040516103e4919061242d565b60405180910390f35b61040760048036038101906104029190612020565b611128565b604051610414919061242d565b60405180910390f35b61043760048036038101906104329190612020565b611146565b005b610453600480360381019061044e9190612020565b611219565b604051610460919061242d565b60405180910390f35b610483600480360381019061047e9190611f6c565b6113c4565b604051610490919061269d565b60405180910390f35b6104b360048036038101906104ae9190611f95565b6113dc565b6040516104c0919061269d565b60405180910390f35b6104e360048036038101906104de9190611f6c565b611463565b005b6060600380546104f49061289f565b80601f01602080910402602001604051908101604052809291908181526020018280546105209061289f565b801561056d5780601f106105425761010080835404028352916020019161056d565b820191906000526020600020905b81548152906001019060200180831161055057829003601f168201915b5050505050905090565b600061058b6105846114e7565b84846114ef565b6001905092915050565b6000600254905090565b60006105ac8484846116ba565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105f76114e7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066e906125bd565b60405180910390fd5b610694856106836114e7565b858461068f91906127a6565b6114ef565b60019150509392505050565b60006012905090565b600061074b6106b66114e7565b8484600160006106c46114e7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107469190612750565b6114ef565b6001905092915050565b61075d611939565b600080600080308688604051602001610778939291906124c4565b6040516020818303038152906040528051906020012090506000816040516020016107a391906123c3565b6040516020818303038152906040528051906020012090506020860151935060408601519250606086015160001a94506000600182878787604051600081526020016040526040516107f8949392919061247f565b6020604051602081039080840390855afa15801561081a573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461085e57600080fd5b61086833896119b7565b438b7f4a03d2ef2e88bed040f8f005c5fe23396a0a57dfb15bcb4030bc64cae4b1d9af8c8c8c60405161089d93929190612448565b60405180910390a35050505050505050505050565b6000806000803087876040516020016108cd939291906124c4565b6040516020818303038152906040528051906020012090506000816040516020016108f891906123c3565b604051602081830303815290604052805190602001209050604186511461091e57600080fd5b6020860151935060408601519250606086015160001a945060006001828787876040516000815260200160405260405161095b949392919061247f565b6020604051602081039080840390855afa15801561097d573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109c157600080fd5b60008914156040518060400160405280601381526020017f416d6f756e742063616e206e6f7420626520300000000000000000000000000081525090610a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3491906124fb565b60405180910390fd5b50610a48888a611128565b50505050505050505050565b6000610a5e611939565b6000610a6983610bcb565b116040518060400160405280601981526020017f4e6f7420656e6f75676820746f6b656e7320746f206c6f636b0000000000000081525090610ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad891906124fb565b60405180910390fd5b50610aeb82610c27565b90506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b3b82611b85565b919050565b600080610b4c83610bcb565b11604051806060016040528060238152602001612d816023913990610ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9e91906124fb565b60405180910390fd5b50610bb182610c27565b610bba83610bcb565b610bc491906127a6565b9050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c1b611939565b610c256000611c00565b565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610c795760009050610cbc565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b610cc9611939565b600080600080308787604051602001610ce4939291906124c4565b604051602081830303815290604052805190602001209050600081604051602001610d0f91906123c3565b6040516020818303038152906040528051906020012090506020860151935060408601519250606086015160001a9450600060018287878760405160008152602001604052604051610d64949392919061247f565b6020604051602081039080840390855afa158015610d86573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dca57600080fd5b610dd4888a611cc6565b505050505050505050565b610de7611939565b60008111604051806060016040528060238152602001612d816023913990610e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3c91906124fb565b60405180910390fd5b506000610e5183610c27565b116040518060600160405280602b8152602001612da4602b913990610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea391906124fb565b60405180910390fd5b50610eb682610b40565b811115604051806060016040528060238152602001612d816023913990610f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0a91906124fb565b60405180910390fd5b50610f1d82610c27565b81610f289190612750565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f7482611b85565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610fb19061289f565b80601f0160208091040260200160405190810160405280929190818152602001828054610fdd9061289f565b801561102a5780601f10610fff5761010080835404028352916020019161102a565b820191906000526020600020905b81548152906001019060200180831161100d57829003601f168201915b5050505050905090565b600080600160006110436114e7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f79061265d565b60405180910390fd5b61111d61110b6114e7565b85858461111891906127a6565b6114ef565b600191505092915050565b600061113c6111356114e7565b84846116ba565b6001905092915050565b61114e611939565b600061115983610c27565b116040518060600160405280602b8152602001612da4602b9139906111b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ab91906124fb565b60405180910390fd5b50806111bf83610c27565b6111c991906127a6565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061121582611b85565b5050565b6000611223611939565b600061122e84610c27565b146040518060400160405280601981526020017f546f6b656e206c6f636b20616c72656164792065786973747300000000000000815250906112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d91906124fb565b60405180910390fd5b50816112b184610bcb565b1015604051806060016040528060238152602001612d81602391399061130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130491906124fb565b60405180910390fd5b5060008211604051806060016040528060238152602001612d81602391399061136c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136391906124fb565b60405180910390fd5b5081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113ba83611b85565b6001905092915050565b60066020528060005260406000206000915090505481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61146b611939565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d29061255d565b60405180910390fd5b6114e481611c00565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561155f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115569061263d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c69061257d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116ad919061269d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561172a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117219061261d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561179a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117919061251d565b60405180910390fd5b6117a5838383611e1d565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561182b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118229061259d565b60405180910390fd5b818161183791906127a6565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118c79190612750565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161192b919061269d565b60405180910390a350505050565b6119416114e7565b73ffffffffffffffffffffffffffffffffffffffff1661195f610f78565b73ffffffffffffffffffffffffffffffffffffffff16146119b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ac906125dd565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1e906125fd565b60405180910390fd5b611a3382600083611e1d565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab09061253d565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b6c919061269d565b60405180910390a3611b8083600084611ec0565b505050565b7f3ffc19d3d00641002f93c6c8e6f6a1c61c978641bb77854449c2cb6cc2cba27981600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051611bf5929190612404565b60405180910390a150565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2d9061267d565b60405180910390fd5b611d4260008383611e1d565b8060026000828254611d549190612750565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e05919061269d565b60405180910390a3611e1960008383611ec0565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611e605750611e5c83610b40565b8111155b6040518060600160405280602f8152602001612dcf602f913990611eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb191906124fb565b60405180910390fd5b50505050565b505050565b6000611ed8611ed3846126f8565b6126d3565b905082815260208101848484011115611ef057600080fd5b611efb84828561285d565b509392505050565b600081359050611f1281612d3b565b92915050565b600081359050611f2781612d52565b92915050565b600082601f830112611f3e57600080fd5b8135611f4e848260208601611ec5565b91505092915050565b600081359050611f6681612d69565b92915050565b600060208284031215611f7e57600080fd5b6000611f8c84828501611f03565b91505092915050565b60008060408385031215611fa857600080fd5b6000611fb685828601611f03565b9250506020611fc785828601611f03565b9150509250929050565b600080600060608486031215611fe657600080fd5b6000611ff486828701611f03565b935050602061200586828701611f03565b925050604061201686828701611f57565b9150509250925092565b6000806040838503121561203357600080fd5b600061204185828601611f03565b925050602061205285828601611f57565b9150509250929050565b600080600080600060a0868803121561207457600080fd5b600061208288828901611f18565b955050602061209388828901611f18565b94505060406120a488828901611f03565b93505060606120b588828901611f57565b925050608086013567ffffffffffffffff8111156120d257600080fd5b6120de88828901611f2d565b9150509295509295909350565b60008060006060848603121561210057600080fd5b600061210e86828701611f57565b935050602061211f86828701611f03565b925050604084013567ffffffffffffffff81111561213c57600080fd5b61214886828701611f2d565b9150509250925092565b61215b816127da565b82525050565b61216a816127ec565b82525050565b612179816127f8565b82525050565b61219061218b826127f8565b612902565b82525050565b61219f81612839565b82525050565b60006121b082612729565b6121ba8185612734565b93506121ca81856020860161286c565b6121d381612999565b840191505092915050565b60006121eb602383612734565b91506121f6826129aa565b604082019050919050565b600061220e602283612734565b9150612219826129f9565b604082019050919050565b6000612231601c83612745565b915061223c82612a48565b601c82019050919050565b6000612254602683612734565b915061225f82612a71565b604082019050919050565b6000612277602283612734565b915061228282612ac0565b604082019050919050565b600061229a602683612734565b91506122a582612b0f565b604082019050919050565b60006122bd602883612734565b91506122c882612b5e565b604082019050919050565b60006122e0602083612734565b91506122eb82612bad565b602082019050919050565b6000612303602183612734565b915061230e82612bd6565b604082019050919050565b6000612326602583612734565b915061233182612c25565b604082019050919050565b6000612349602483612734565b915061235482612c74565b604082019050919050565b600061236c602583612734565b915061237782612cc3565b604082019050919050565b600061238f601f83612734565b915061239a82612d12565b602082019050919050565b6123ae81612822565b82525050565b6123bd8161282c565b82525050565b60006123ce82612224565b91506123da828461217f565b60208201915081905092915050565b60006020820190506123fe6000830184612152565b92915050565b60006040820190506124196000830185612152565b61242660208301846123a5565b9392505050565b60006020820190506124426000830184612161565b92915050565b600060608201905061245d6000830186612170565b61246a6020830185612152565b61247760408301846123a5565b949350505050565b60006080820190506124946000830187612170565b6124a160208301866123b4565b6124ae6040830185612170565b6124bb6060830184612170565b95945050505050565b60006060820190506124d96000830186612196565b6124e660208301856123a5565b6124f36040830184612152565b949350505050565b6000602082019050818103600083015261251581846121a5565b905092915050565b60006020820190508181036000830152612536816121de565b9050919050565b6000602082019050818103600083015261255681612201565b9050919050565b6000602082019050818103600083015261257681612247565b9050919050565b600060208201905081810360008301526125968161226a565b9050919050565b600060208201905081810360008301526125b68161228d565b9050919050565b600060208201905081810360008301526125d6816122b0565b9050919050565b600060208201905081810360008301526125f6816122d3565b9050919050565b60006020820190508181036000830152612616816122f6565b9050919050565b6000602082019050818103600083015261263681612319565b9050919050565b600060208201905081810360008301526126568161233c565b9050919050565b600060208201905081810360008301526126768161235f565b9050919050565b6000602082019050818103600083015261269681612382565b9050919050565b60006020820190506126b260008301846123a5565b92915050565b60006020820190506126cd60008301846123b4565b92915050565b60006126dd6126ee565b90506126e982826128d1565b919050565b6000604051905090565b600067ffffffffffffffff8211156127135761271261296a565b5b61271c82612999565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600061275b82612822565b915061276683612822565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561279b5761279a61290c565b5b828201905092915050565b60006127b182612822565b91506127bc83612822565b9250828210156127cf576127ce61290c565b5b828203905092915050565b60006127e582612802565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006128448261284b565b9050919050565b600061285682612802565b9050919050565b82818337600083830152505050565b60005b8381101561288a57808201518184015260208101905061286f565b83811115612899576000848401525b50505050565b600060028204905060018216806128b757607f821691505b602082108114156128cb576128ca61293b565b5b50919050565b6128da82612999565b810181811067ffffffffffffffff821117156128f9576128f861296a565b5b80604052505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b612d44816127da565b8114612d4f57600080fd5b50565b612d5b816127f8565b8114612d6657600080fd5b50565b612d7281612822565b8114612d7d57600080fd5b5056fe4e6f7420656e6f75676820746f6b656e7320746f206c6f636b206f7220756e6c6f636b4e6f20746f6b656e7320617265206c6f636b65642c20637265617465206e6577206c6f636b2066697273744e6f7420656e6f75676820756e6c6f636b6564286c6f636b65642920746f6b656e7320666f72207472616e73666572a264697066735822122030affad7965c2fb4ab44776d6c390a43e2933f389fe31ac0f6ef1b5e9add493664736f6c634300080400334e6f7420656e6f75676820746f6b656e7320746f206c6f636b206f7220756e6c6f636b4e6f7420656e6f75676820756e6c6f636b6564286c6f636b65642920746f6b656e7320666f72207472616e73666572000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000d09dc3000000000000000000000000009a7d040530e955389bc26eafe02694be3d2b346c000000000000000000000000000000000000000000000000000000000000000e436c696d61746520416374696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045043524d00000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101585760003560e01c806372d3629b116100c3578063a9059cbb1161007c578063a9059cbb146103ed578063b18839731461041d578063bf66444014610439578063d8a67fd514610469578063dd62ed3e14610499578063f2fde38b146104c957610158565b806372d3629b14610319578063785d2c0b14610349578063796dcc7f146103655780638da5cb5b1461038157806395d89b411461039f578063a457c2d7146103bd57610158565b80633a3f499f116101155780633a3f499f14610247578063484659c914610263578063650ad9001461027f5780636d89a466146102af57806370a08231146102df578063715018a61461030f57610158565b806306fdde031461015d578063095ea7b31461017b57806318160ddd146101ab57806323b872dd146101c9578063313ce567146101f95780633950935114610217575b600080fd5b6101656104e5565b60405161017291906124fb565b60405180910390f35b61019560048036038101906101909190612020565b610577565b6040516101a2919061242d565b60405180910390f35b6101b3610595565b6040516101c0919061269d565b60405180910390f35b6101e360048036038101906101de9190611fd1565b61059f565b6040516101f0919061242d565b60405180910390f35b6102016106a0565b60405161020e91906126b8565b60405180910390f35b610231600480360381019061022c9190612020565b6106a9565b60405161023e919061242d565b60405180910390f35b610261600480360381019061025c919061205c565b610755565b005b61027d600480360381019061027891906120eb565b6108b2565b005b61029960048036038101906102949190611f6c565b610a54565b6040516102a6919061269d565b60405180910390f35b6102c960048036038101906102c49190611f6c565b610b40565b6040516102d6919061269d565b60405180910390f35b6102f960048036038101906102f49190611f6c565b610bcb565b604051610306919061269d565b60405180910390f35b610317610c13565b005b610333600480360381019061032e9190611f6c565b610c27565b604051610340919061269d565b60405180910390f35b610363600480360381019061035e91906120eb565b610cc1565b005b61037f600480360381019061037a9190612020565b610ddf565b005b610389610f78565b60405161039691906123e9565b60405180910390f35b6103a7610fa2565b6040516103b491906124fb565b60405180910390f35b6103d760048036038101906103d29190612020565b611034565b6040516103e4919061242d565b60405180910390f35b61040760048036038101906104029190612020565b611128565b604051610414919061242d565b60405180910390f35b61043760048036038101906104329190612020565b611146565b005b610453600480360381019061044e9190612020565b611219565b604051610460919061242d565b60405180910390f35b610483600480360381019061047e9190611f6c565b6113c4565b604051610490919061269d565b60405180910390f35b6104b360048036038101906104ae9190611f95565b6113dc565b6040516104c0919061269d565b60405180910390f35b6104e360048036038101906104de9190611f6c565b611463565b005b6060600380546104f49061289f565b80601f01602080910402602001604051908101604052809291908181526020018280546105209061289f565b801561056d5780601f106105425761010080835404028352916020019161056d565b820191906000526020600020905b81548152906001019060200180831161055057829003601f168201915b5050505050905090565b600061058b6105846114e7565b84846114ef565b6001905092915050565b6000600254905090565b60006105ac8484846116ba565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105f76114e7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066e906125bd565b60405180910390fd5b610694856106836114e7565b858461068f91906127a6565b6114ef565b60019150509392505050565b60006012905090565b600061074b6106b66114e7565b8484600160006106c46114e7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107469190612750565b6114ef565b6001905092915050565b61075d611939565b600080600080308688604051602001610778939291906124c4565b6040516020818303038152906040528051906020012090506000816040516020016107a391906123c3565b6040516020818303038152906040528051906020012090506020860151935060408601519250606086015160001a94506000600182878787604051600081526020016040526040516107f8949392919061247f565b6020604051602081039080840390855afa15801561081a573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461085e57600080fd5b61086833896119b7565b438b7f4a03d2ef2e88bed040f8f005c5fe23396a0a57dfb15bcb4030bc64cae4b1d9af8c8c8c60405161089d93929190612448565b60405180910390a35050505050505050505050565b6000806000803087876040516020016108cd939291906124c4565b6040516020818303038152906040528051906020012090506000816040516020016108f891906123c3565b604051602081830303815290604052805190602001209050604186511461091e57600080fd5b6020860151935060408601519250606086015160001a945060006001828787876040516000815260200160405260405161095b949392919061247f565b6020604051602081039080840390855afa15801561097d573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109c157600080fd5b60008914156040518060400160405280601381526020017f416d6f756e742063616e206e6f7420626520300000000000000000000000000081525090610a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3491906124fb565b60405180910390fd5b50610a48888a611128565b50505050505050505050565b6000610a5e611939565b6000610a6983610bcb565b116040518060400160405280601981526020017f4e6f7420656e6f75676820746f6b656e7320746f206c6f636b0000000000000081525090610ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad891906124fb565b60405180910390fd5b50610aeb82610c27565b90506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b3b82611b85565b919050565b600080610b4c83610bcb565b11604051806060016040528060238152602001612d816023913990610ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9e91906124fb565b60405180910390fd5b50610bb182610c27565b610bba83610bcb565b610bc491906127a6565b9050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c1b611939565b610c256000611c00565b565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610c795760009050610cbc565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b610cc9611939565b600080600080308787604051602001610ce4939291906124c4565b604051602081830303815290604052805190602001209050600081604051602001610d0f91906123c3565b6040516020818303038152906040528051906020012090506020860151935060408601519250606086015160001a9450600060018287878760405160008152602001604052604051610d64949392919061247f565b6020604051602081039080840390855afa158015610d86573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dca57600080fd5b610dd4888a611cc6565b505050505050505050565b610de7611939565b60008111604051806060016040528060238152602001612d816023913990610e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3c91906124fb565b60405180910390fd5b506000610e5183610c27565b116040518060600160405280602b8152602001612da4602b913990610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea391906124fb565b60405180910390fd5b50610eb682610b40565b811115604051806060016040528060238152602001612d816023913990610f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0a91906124fb565b60405180910390fd5b50610f1d82610c27565b81610f289190612750565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f7482611b85565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610fb19061289f565b80601f0160208091040260200160405190810160405280929190818152602001828054610fdd9061289f565b801561102a5780601f10610fff5761010080835404028352916020019161102a565b820191906000526020600020905b81548152906001019060200180831161100d57829003601f168201915b5050505050905090565b600080600160006110436114e7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f79061265d565b60405180910390fd5b61111d61110b6114e7565b85858461111891906127a6565b6114ef565b600191505092915050565b600061113c6111356114e7565b84846116ba565b6001905092915050565b61114e611939565b600061115983610c27565b116040518060600160405280602b8152602001612da4602b9139906111b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ab91906124fb565b60405180910390fd5b50806111bf83610c27565b6111c991906127a6565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061121582611b85565b5050565b6000611223611939565b600061122e84610c27565b146040518060400160405280601981526020017f546f6b656e206c6f636b20616c72656164792065786973747300000000000000815250906112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d91906124fb565b60405180910390fd5b50816112b184610bcb565b1015604051806060016040528060238152602001612d81602391399061130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130491906124fb565b60405180910390fd5b5060008211604051806060016040528060238152602001612d81602391399061136c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136391906124fb565b60405180910390fd5b5081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113ba83611b85565b6001905092915050565b60066020528060005260406000206000915090505481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61146b611939565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d29061255d565b60405180910390fd5b6114e481611c00565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561155f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115569061263d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c69061257d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116ad919061269d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561172a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117219061261d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561179a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117919061251d565b60405180910390fd5b6117a5838383611e1d565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561182b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118229061259d565b60405180910390fd5b818161183791906127a6565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118c79190612750565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161192b919061269d565b60405180910390a350505050565b6119416114e7565b73ffffffffffffffffffffffffffffffffffffffff1661195f610f78565b73ffffffffffffffffffffffffffffffffffffffff16146119b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ac906125dd565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1e906125fd565b60405180910390fd5b611a3382600083611e1d565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab09061253d565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b6c919061269d565b60405180910390a3611b8083600084611ec0565b505050565b7f3ffc19d3d00641002f93c6c8e6f6a1c61c978641bb77854449c2cb6cc2cba27981600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051611bf5929190612404565b60405180910390a150565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2d9061267d565b60405180910390fd5b611d4260008383611e1d565b8060026000828254611d549190612750565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e05919061269d565b60405180910390a3611e1960008383611ec0565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611e605750611e5c83610b40565b8111155b6040518060600160405280602f8152602001612dcf602f913990611eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb191906124fb565b60405180910390fd5b50505050565b505050565b6000611ed8611ed3846126f8565b6126d3565b905082815260208101848484011115611ef057600080fd5b611efb84828561285d565b509392505050565b600081359050611f1281612d3b565b92915050565b600081359050611f2781612d52565b92915050565b600082601f830112611f3e57600080fd5b8135611f4e848260208601611ec5565b91505092915050565b600081359050611f6681612d69565b92915050565b600060208284031215611f7e57600080fd5b6000611f8c84828501611f03565b91505092915050565b60008060408385031215611fa857600080fd5b6000611fb685828601611f03565b9250506020611fc785828601611f03565b9150509250929050565b600080600060608486031215611fe657600080fd5b6000611ff486828701611f03565b935050602061200586828701611f03565b925050604061201686828701611f57565b9150509250925092565b6000806040838503121561203357600080fd5b600061204185828601611f03565b925050602061205285828601611f57565b9150509250929050565b600080600080600060a0868803121561207457600080fd5b600061208288828901611f18565b955050602061209388828901611f18565b94505060406120a488828901611f03565b93505060606120b588828901611f57565b925050608086013567ffffffffffffffff8111156120d257600080fd5b6120de88828901611f2d565b9150509295509295909350565b60008060006060848603121561210057600080fd5b600061210e86828701611f57565b935050602061211f86828701611f03565b925050604084013567ffffffffffffffff81111561213c57600080fd5b61214886828701611f2d565b9150509250925092565b61215b816127da565b82525050565b61216a816127ec565b82525050565b612179816127f8565b82525050565b61219061218b826127f8565b612902565b82525050565b61219f81612839565b82525050565b60006121b082612729565b6121ba8185612734565b93506121ca81856020860161286c565b6121d381612999565b840191505092915050565b60006121eb602383612734565b91506121f6826129aa565b604082019050919050565b600061220e602283612734565b9150612219826129f9565b604082019050919050565b6000612231601c83612745565b915061223c82612a48565b601c82019050919050565b6000612254602683612734565b915061225f82612a71565b604082019050919050565b6000612277602283612734565b915061228282612ac0565b604082019050919050565b600061229a602683612734565b91506122a582612b0f565b604082019050919050565b60006122bd602883612734565b91506122c882612b5e565b604082019050919050565b60006122e0602083612734565b91506122eb82612bad565b602082019050919050565b6000612303602183612734565b915061230e82612bd6565b604082019050919050565b6000612326602583612734565b915061233182612c25565b604082019050919050565b6000612349602483612734565b915061235482612c74565b604082019050919050565b600061236c602583612734565b915061237782612cc3565b604082019050919050565b600061238f601f83612734565b915061239a82612d12565b602082019050919050565b6123ae81612822565b82525050565b6123bd8161282c565b82525050565b60006123ce82612224565b91506123da828461217f565b60208201915081905092915050565b60006020820190506123fe6000830184612152565b92915050565b60006040820190506124196000830185612152565b61242660208301846123a5565b9392505050565b60006020820190506124426000830184612161565b92915050565b600060608201905061245d6000830186612170565b61246a6020830185612152565b61247760408301846123a5565b949350505050565b60006080820190506124946000830187612170565b6124a160208301866123b4565b6124ae6040830185612170565b6124bb6060830184612170565b95945050505050565b60006060820190506124d96000830186612196565b6124e660208301856123a5565b6124f36040830184612152565b949350505050565b6000602082019050818103600083015261251581846121a5565b905092915050565b60006020820190508181036000830152612536816121de565b9050919050565b6000602082019050818103600083015261255681612201565b9050919050565b6000602082019050818103600083015261257681612247565b9050919050565b600060208201905081810360008301526125968161226a565b9050919050565b600060208201905081810360008301526125b68161228d565b9050919050565b600060208201905081810360008301526125d6816122b0565b9050919050565b600060208201905081810360008301526125f6816122d3565b9050919050565b60006020820190508181036000830152612616816122f6565b9050919050565b6000602082019050818103600083015261263681612319565b9050919050565b600060208201905081810360008301526126568161233c565b9050919050565b600060208201905081810360008301526126768161235f565b9050919050565b6000602082019050818103600083015261269681612382565b9050919050565b60006020820190506126b260008301846123a5565b92915050565b60006020820190506126cd60008301846123b4565b92915050565b60006126dd6126ee565b90506126e982826128d1565b919050565b6000604051905090565b600067ffffffffffffffff8211156127135761271261296a565b5b61271c82612999565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600061275b82612822565b915061276683612822565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561279b5761279a61290c565b5b828201905092915050565b60006127b182612822565b91506127bc83612822565b9250828210156127cf576127ce61290c565b5b828203905092915050565b60006127e582612802565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006128448261284b565b9050919050565b600061285682612802565b9050919050565b82818337600083830152505050565b60005b8381101561288a57808201518184015260208101905061286f565b83811115612899576000848401525b50505050565b600060028204905060018216806128b757607f821691505b602082108114156128cb576128ca61293b565b5b50919050565b6128da82612999565b810181811067ffffffffffffffff821117156128f9576128f861296a565b5b80604052505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b612d44816127da565b8114612d4f57600080fd5b50565b612d5b816127f8565b8114612d6657600080fd5b50565b612d7281612822565b8114612d7d57600080fd5b5056fe4e6f7420656e6f75676820746f6b656e7320746f206c6f636b206f7220756e6c6f636b4e6f20746f6b656e7320617265206c6f636b65642c20637265617465206e6577206c6f636b2066697273744e6f7420656e6f75676820756e6c6f636b6564286c6f636b65642920746f6b656e7320666f72207472616e73666572a264697066735822122030affad7965c2fb4ab44776d6c390a43e2933f389fe31ac0f6ef1b5e9add493664736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000d09dc3000000000000000000000000009a7d040530e955389bc26eafe02694be3d2b346c000000000000000000000000000000000000000000000000000000000000000e436c696d61746520416374696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045043524d00000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name_ (string): Climate Action
Arg [1] : symbol_ (string): PCRM
Arg [2] : amount_ (uint256): 3500000000
Arg [3] : deployer_ (address): 0x9a7D040530E955389Bc26eAFE02694be3d2b346C
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 00000000000000000000000000000000000000000000000000000000d09dc300
Arg [3] : 0000000000000000000000009a7d040530e955389bc26eafe02694be3d2b346c
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000e
Arg [5] : 436c696d61746520416374696f6e000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [7] : 5043524d00000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.