ERC-20
Overview
Max Total Supply
2,000,000,000 ALT
Holders
1,220
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ChainAiLabs
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-06-16 */ /** *Submitted for verification at Etherscan.io on 2024-05-11 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } 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); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } library Address { function sendValue(address payable recipient, uint256 amount) internal returns(bool){ require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); return success; } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) internal _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) { uint256 currentAllowance = _allowances[sender][_msgSender()]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } } _transfer(sender, recipient, 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"); unchecked { _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"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } /* * @notice Creates new tokens and adds them to the specified account. * @dev The function creates a specified amount of tokens and adds them to the specified account, increasing the total supply accordingly. * @param account The account to which the tokens will be minted. * @param amount The amount of tokens to be minted. * @return It emits a Transfer event indicating the minting of tokens from the zero address to the specified account. */ 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; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /* * @notice Burns a specific amount of tokens from the specified account. * @dev The function reduces the balance of the specified account by the specified amount and decreases the total supply accordingly. * @param account The account from which the tokens will be burned. * @param amount The amount of tokens to be burned. * @return It emits a Transfer event indicating the burning of tokens from the account to the zero address. */ 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; } _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); } /* * @notice Hook that is called before transferring tokens. * @dev This function is called before transferring tokens from one account to another. * @param from The account from which the tokens are being transferred. * @param to The account to which the tokens are being transferred. * @param amount The amount of tokens being transferred. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } contract ChainAiLabs is ERC20, Ownable { using SafeMath for uint256; using Address for address payable; uint256 private mintAmount = 100000 * 10**uint256(decimals()); uint256 private constant mintETHAmount = 0.05 ether; uint256 private constant basicNodeETHAmount = 5 ether; uint256 private constant intermediateNodeETHAmount = 10 ether; uint256 private constant advancedNodeETHAmount = 15 ether; uint256 private constant eliteNodeETHAmount = 20 ether; bool public tradingEnabled = false; mapping (address => bool) private _isExcludedFromFees; constructor () ERC20("ChainAi Labs", "ALT") { _isExcludedFromFees[owner()] = true; _mint(owner(), 2e9 * (10 ** decimals())); } receive() external payable {} function swap() external payable { require(msg.value >= mintETHAmount, "Insufficient ETH sent"); uint256 mintQuantity = msg.value.mul(mintAmount).div(mintETHAmount); require(_balances[owner()] >= mintQuantity, "Insufficient balance"); _balances[msg.sender] = _balances[msg.sender].add(mintQuantity); _balances[owner()] = _balances[owner()].sub(mintQuantity); emit Transfer(owner(), msg.sender, mintQuantity); } function basicNode()external payable { require(msg.value == basicNodeETHAmount, "Insufficient ETH sent"); uint256 mintQuantity = msg.value.mul(mintAmount).div(mintETHAmount); require(_balances[owner()] >= mintQuantity, "Insufficient balance"); _balances[msg.sender] = _balances[msg.sender].add(mintQuantity); _balances[owner()] = _balances[owner()].sub(mintQuantity); emit Transfer(owner(), msg.sender, mintQuantity); } function intermediateNode()external payable { require(msg.value == intermediateNodeETHAmount, "Insufficient ETH sent"); uint256 mintQuantity = msg.value.mul(mintAmount).div(mintETHAmount); require(_balances[owner()] >= mintQuantity, "Insufficient balance"); _balances[msg.sender] = _balances[msg.sender].add(mintQuantity); _balances[owner()] = _balances[owner()].sub(mintQuantity); emit Transfer(owner(), msg.sender, mintQuantity); } function advancedNode()external payable { require(msg.value == advancedNodeETHAmount, "Insufficient ETH sent"); uint256 mintQuantity = msg.value.mul(mintAmount).div(mintETHAmount); require(_balances[owner()] >= mintQuantity, "Insufficient balance"); _balances[msg.sender] = _balances[msg.sender].add(mintQuantity); _balances[owner()] = _balances[owner()].sub(mintQuantity); emit Transfer(owner(), msg.sender, mintQuantity); } function eliteNode()external payable { require(msg.value == eliteNodeETHAmount, "Insufficient ETH sent"); uint256 mintQuantity = msg.value.mul(mintAmount).div(mintETHAmount); require(_balances[owner()] >= mintQuantity, "Insufficient balance"); _balances[msg.sender] = _balances[msg.sender].add(mintQuantity); _balances[owner()] = _balances[owner()].sub(mintQuantity); emit Transfer(owner(), msg.sender, mintQuantity); } function sendAirdrops(address[] memory recipients, uint256 amount) public onlyOwner{ for (uint i = 0; i < recipients.length; i++) { super._transfer(msg.sender, recipients[i], amount); } } function claimStuckTokens(address token) external onlyOwner { require(token != address(this), "Owner cannot claim contract's balance of its own tokens"); if (token == address(0x0)) { payable(msg.sender).sendValue(address(this).balance); return; } IERC20 ERC20token = IERC20(token); uint256 balance = ERC20token.balanceOf(address(this)); ERC20token.transfer(msg.sender, balance); } function rescueETH(uint256 weiAmount) external onlyOwner{ require(address(this).balance >= weiAmount, "insufficient ETH balance"); payable(msg.sender).transfer(weiAmount); } function enableTrading() external onlyOwner{ require(!tradingEnabled, "Trading already enabled."); tradingEnabled = true; } function setExcludedFromFees(address account, bool state) external onlyOwner{ require(_isExcludedFromFees[account] != state, "Value already set"); _isExcludedFromFees[account] = state; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function _transfer(address from,address to,uint256 amount) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading not yet enabled!"); if (amount == 0) { super._transfer(from, to, 0); return; } super._transfer(from, to, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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"},{"inputs":[],"name":"advancedNode","outputs":[],"stateMutability":"payable","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":[],"name":"basicNode","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","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":[],"name":"eliteNode","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"enableTrading","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":"intermediateNode","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendAirdrops","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swap","outputs":[],"stateMutability":"payable","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":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052620000146200026e60201b60201c565b60ff16600a62000025919062000669565b620186a0620000359190620006ba565b6006556000600760006101000a81548160ff0219169083151502179055503480156200006057600080fd5b506040518060400160405280600c81526020017f436861696e4169204c61627300000000000000000000000000000000000000008152506040518060400160405280600381526020017f414c5400000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000e59291906200042c565b508060049080519060200190620000fe9291906200042c565b5050506000620001136200027760201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600160086000620001c86200027f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620002686200022d6200027f60201b60201c565b6200023d6200026e60201b60201c565b600a6200024b919062000728565b63773594006200025c9190620006ba565b620002a960201b60201c565b620008ec565b60006012905090565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200031c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200031390620007da565b60405180910390fd5b62000330600083836200042260201b60201c565b8060026000828254620003449190620007fc565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200039b9190620007fc565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200040291906200086a565b60405180910390a36200041e600083836200042760201b60201c565b5050565b505050565b505050565b8280546200043a90620008b6565b90600052602060002090601f0160209004810192826200045e5760008555620004aa565b82601f106200047957805160ff1916838001178555620004aa565b82800160010185558215620004aa579182015b82811115620004a95782518255916020019190600101906200048c565b5b509050620004b99190620004bd565b5090565b5b80821115620004d8576000816000905550600101620004be565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200056a57808604811115620005425762000541620004dc565b5b6001851615620005525780820291505b808102905062000562856200050b565b945062000522565b94509492505050565b60008262000585576001905062000658565b8162000595576000905062000658565b8160018114620005ae5760028114620005b957620005ef565b600191505062000658565b60ff841115620005ce57620005cd620004dc565b5b8360020a915084821115620005e857620005e7620004dc565b5b5062000658565b5060208310610133831016604e8410600b8410161715620006295782820a905083811115620006235762000622620004dc565b5b62000658565b62000638848484600162000518565b92509050818404811115620006525762000651620004dc565b5b81810290505b9392505050565b6000819050919050565b600062000676826200065f565b915062000683836200065f565b9250620006b27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000573565b905092915050565b6000620006c7826200065f565b9150620006d4836200065f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000710576200070f620004dc565b5b828202905092915050565b600060ff82169050919050565b600062000735826200065f565b915062000742836200071b565b9250620007717fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000573565b905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620007c2601f8362000779565b9150620007cf826200078a565b602082019050919050565b60006020820190508181036000830152620007f581620007b3565b9050919050565b600062000809826200065f565b915062000816836200065f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200084e576200084d620004dc565b5b828201905092915050565b62000864816200065f565b82525050565b600060208201905062000881600083018462000859565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008cf57607f821691505b60208210811415620008e657620008e562000887565b5b50919050565b613b6080620008fc6000396000f3fe6080604052600436106101855760003560e01c80638a8c523c116100d1578063a9059cbb1161008a578063dd62ed3e11610064578063dd62ed3e1461050f578063e596a34d1461054c578063f2fde38b14610556578063f9d0831a1461057f5761018c565b8063a9059cbb1461049f578063b26baf44146104dc578063d32de95a146105055761018c565b80638a8c523c146103c25780638da5cb5b146103d957806395d89b41146104045780639e252f001461042f578063a457c2d714610458578063a6196e80146104955761018c565b80633bed91a91161013e578063590ffdce11610118578063590ffdce1461033b57806370a0823114610364578063715018a6146103a15780638119c065146103b85761018c565b80633bed91a9146102c95780634ada218b146102d35780634fbee193146102fe5761018c565b806306fdde0314610191578063095ea7b3146101bc57806318160ddd146101f957806323b872dd14610224578063313ce56714610261578063395093511461028c5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a66105a8565b6040516101b39190612aa1565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de9190612b6b565b61063a565b6040516101f09190612bc6565b60405180910390f35b34801561020557600080fd5b5061020e610658565b60405161021b9190612bf0565b60405180910390f35b34801561023057600080fd5b5061024b60048036038101906102469190612c0b565b610662565b6040516102589190612bc6565b60405180910390f35b34801561026d57600080fd5b50610276610781565b6040516102839190612c7a565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae9190612b6b565b61078a565b6040516102c09190612bc6565b60405180910390f35b6102d1610836565b005b3480156102df57600080fd5b506102e8610add565b6040516102f59190612bc6565b60405180910390f35b34801561030a57600080fd5b5061032560048036038101906103209190612c95565b610af0565b6040516103329190612bc6565b60405180910390f35b34801561034757600080fd5b50610362600480360381019061035d9190612cee565b610b46565b005b34801561037057600080fd5b5061038b60048036038101906103869190612c95565b610ccb565b6040516103989190612bf0565b60405180910390f35b3480156103ad57600080fd5b506103b6610d13565b005b6103c0610e6b565b005b3480156103ce57600080fd5b506103d7611112565b005b3480156103e557600080fd5b506103ee611216565b6040516103fb9190612d3d565b60405180910390f35b34801561041057600080fd5b50610419611240565b6040516104269190612aa1565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190612d58565b6112d2565b005b34801561046457600080fd5b5061047f600480360381019061047a9190612b6b565b6113f6565b60405161048c9190612bc6565b60405180910390f35b61049d6114e1565b005b3480156104ab57600080fd5b506104c660048036038101906104c19190612b6b565b611788565b6040516104d39190612bc6565b60405180910390f35b3480156104e857600080fd5b5061050360048036038101906104fe9190612ecd565b6117a6565b005b61050d611886565b005b34801561051b57600080fd5b5061053660048036038101906105319190612f29565b611b2d565b6040516105439190612bf0565b60405180910390f35b610554611bb4565b005b34801561056257600080fd5b5061057d60048036038101906105789190612c95565b611e5c565b005b34801561058b57600080fd5b506105a660048036038101906105a19190612c95565b612023565b005b6060600380546105b790612f98565b80601f01602080910402602001604051908101604052809291908181526020018280546105e390612f98565b80156106305780601f1061060557610100808354040283529160200191610630565b820191906000526020600020905b81548152906001019060200180831161061357829003601f168201915b5050505050905090565b600061064e610647612295565b848461229d565b6001905092915050565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106ae612295565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461076a5782811015610755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074c9061303c565b60405180910390fd5b61076985610761612295565b85840361229d565b5b610775858585612468565b60019150509392505050565b60006012905090565b600061082c610797612295565b8484600160006107a5612295565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610827919061308b565b61229d565b6001905092915050565b678ac7230489e800003414610880576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108779061312d565b60405180910390fd5b60006108b066b1a2bc2ec500006108a26006543461266a90919063ffffffff16565b61268090919063ffffffff16565b9050806000806108be611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561093a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093190613199565b60405180910390fd5b61098b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a25816000806109dc611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ac90919063ffffffff16565b600080610a30611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16610a8d611216565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ad29190612bf0565b60405180910390a350565b600760009054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610b4e612295565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd490613205565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6790613271565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d1b612295565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da190613205565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b66b1a2bc2ec50000341015610eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eac9061312d565b60405180910390fd5b6000610ee566b1a2bc2ec50000610ed76006543461266a90919063ffffffff16565b61268090919063ffffffff16565b905080600080610ef3611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6690613199565b60405180910390fd5b610fc0816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061105a81600080611011611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ac90919063ffffffff16565b600080611065611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff166110c2611216565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111079190612bf0565b60405180910390a350565b61111a612295565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a090613205565b60405180910390fd5b600760009054906101000a900460ff16156111f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f0906132dd565b60405180910390fd5b6001600760006101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461124f90612f98565b80601f016020809104026020016040519081016040528092919081815260200182805461127b90612f98565b80156112c85780601f1061129d576101008083540402835291602001916112c8565b820191906000526020600020905b8154815290600101906020018083116112ab57829003601f168201915b5050505050905090565b6112da612295565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136090613205565b60405180910390fd5b804710156113ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a390613349565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156113f2573d6000803e3d6000fd5b5050565b60008060016000611405612295565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156114c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b9906133db565b60405180910390fd5b6114d66114cd612295565b8585840361229d565b600191505092915050565b674563918244f40000341461152b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115229061312d565b60405180910390fd5b600061155b66b1a2bc2ec5000061154d6006543461266a90919063ffffffff16565b61268090919063ffffffff16565b905080600080611569611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90613199565b60405180910390fd5b611636816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116d081600080611687611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ac90919063ffffffff16565b6000806116db611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16611738611216565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161177d9190612bf0565b60405180910390a350565b600061179c611795612295565b8484612468565b6001905092915050565b6117ae612295565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461183d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183490613205565b60405180910390fd5b60005b82518110156118815761186e338483815181106118605761185f6133fb565b5b6020026020010151846126c2565b80806118799061342a565b915050611840565b505050565b67d02ab486cedc000034146118d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c79061312d565b60405180910390fd5b600061190066b1a2bc2ec500006118f26006543461266a90919063ffffffff16565b61268090919063ffffffff16565b90508060008061190e611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561198a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198190613199565b60405180910390fd5b6119db816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a7581600080611a2c611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ac90919063ffffffff16565b600080611a80611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16611add611216565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b229190612bf0565b60405180910390a350565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6801158e460913d000003414611bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf69061312d565b60405180910390fd5b6000611c2f66b1a2bc2ec50000611c216006543461266a90919063ffffffff16565b61268090919063ffffffff16565b905080600080611c3d611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb090613199565b60405180910390fd5b611d0a816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611da481600080611d5b611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ac90919063ffffffff16565b600080611daf611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16611e0c611216565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e519190612bf0565b60405180910390a350565b611e64612295565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eea90613205565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5a906134e5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61202b612295565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b190613205565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212090613577565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561218d57612187473373ffffffffffffffffffffffffffffffffffffffff1661294390919063ffffffff16565b50612292565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016121cd9190612d3d565b602060405180830381865afa1580156121ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220e91906135ac565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161224b9291906135d9565b6020604051808303816000875af115801561226a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228e9190613617565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561230d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612304906136b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561237d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237490613748565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161245b9190612bf0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cf906137da565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253f9061386c565b60405180910390fd5b600760009054906101000a900460ff16806125ac5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806126005750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61263f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612636906138d8565b60405180910390fd5b600081141561265957612654838360006126c2565b612665565b6126648383836126c2565b5b505050565b6000818361267891906138f8565b905092915050565b6000818361268e9190613981565b905092915050565b600081836126a4919061308b565b905092915050565b600081836126ba91906139b2565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612732576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612729906137da565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127999061386c565b60405180910390fd5b6127ad8383836129fe565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282a90613a58565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128c6919061308b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161292a9190612bf0565b60405180910390a361293d848484612a03565b50505050565b600081471015612988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297f90613ac4565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff16836040516129ae90613b15565b60006040518083038185875af1925050503d80600081146129eb576040519150601f19603f3d011682016040523d82523d6000602084013e6129f0565b606091505b505090508091505092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a42578082015181840152602081019050612a27565b83811115612a51576000848401525b50505050565b6000601f19601f8301169050919050565b6000612a7382612a08565b612a7d8185612a13565b9350612a8d818560208601612a24565b612a9681612a57565b840191505092915050565b60006020820190508181036000830152612abb8184612a68565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b0282612ad7565b9050919050565b612b1281612af7565b8114612b1d57600080fd5b50565b600081359050612b2f81612b09565b92915050565b6000819050919050565b612b4881612b35565b8114612b5357600080fd5b50565b600081359050612b6581612b3f565b92915050565b60008060408385031215612b8257612b81612acd565b5b6000612b9085828601612b20565b9250506020612ba185828601612b56565b9150509250929050565b60008115159050919050565b612bc081612bab565b82525050565b6000602082019050612bdb6000830184612bb7565b92915050565b612bea81612b35565b82525050565b6000602082019050612c056000830184612be1565b92915050565b600080600060608486031215612c2457612c23612acd565b5b6000612c3286828701612b20565b9350506020612c4386828701612b20565b9250506040612c5486828701612b56565b9150509250925092565b600060ff82169050919050565b612c7481612c5e565b82525050565b6000602082019050612c8f6000830184612c6b565b92915050565b600060208284031215612cab57612caa612acd565b5b6000612cb984828501612b20565b91505092915050565b612ccb81612bab565b8114612cd657600080fd5b50565b600081359050612ce881612cc2565b92915050565b60008060408385031215612d0557612d04612acd565b5b6000612d1385828601612b20565b9250506020612d2485828601612cd9565b9150509250929050565b612d3781612af7565b82525050565b6000602082019050612d526000830184612d2e565b92915050565b600060208284031215612d6e57612d6d612acd565b5b6000612d7c84828501612b56565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612dc282612a57565b810181811067ffffffffffffffff82111715612de157612de0612d8a565b5b80604052505050565b6000612df4612ac3565b9050612e008282612db9565b919050565b600067ffffffffffffffff821115612e2057612e1f612d8a565b5b602082029050602081019050919050565b600080fd5b6000612e49612e4484612e05565b612dea565b90508083825260208201905060208402830185811115612e6c57612e6b612e31565b5b835b81811015612e955780612e818882612b20565b845260208401935050602081019050612e6e565b5050509392505050565b600082601f830112612eb457612eb3612d85565b5b8135612ec4848260208601612e36565b91505092915050565b60008060408385031215612ee457612ee3612acd565b5b600083013567ffffffffffffffff811115612f0257612f01612ad2565b5b612f0e85828601612e9f565b9250506020612f1f85828601612b56565b9150509250929050565b60008060408385031215612f4057612f3f612acd565b5b6000612f4e85828601612b20565b9250506020612f5f85828601612b20565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612fb057607f821691505b60208210811415612fc457612fc3612f69565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613026602883612a13565b915061303182612fca565b604082019050919050565b6000602082019050818103600083015261305581613019565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061309682612b35565b91506130a183612b35565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130d6576130d561305c565b5b828201905092915050565b7f496e73756666696369656e74204554482073656e740000000000000000000000600082015250565b6000613117601583612a13565b9150613122826130e1565b602082019050919050565b600060208201905081810360008301526131468161310a565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000613183601483612a13565b915061318e8261314d565b602082019050919050565b600060208201905081810360008301526131b281613176565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131ef602083612a13565b91506131fa826131b9565b602082019050919050565b6000602082019050818103600083015261321e816131e2565b9050919050565b7f56616c756520616c726561647920736574000000000000000000000000000000600082015250565b600061325b601183612a13565b915061326682613225565b602082019050919050565b6000602082019050818103600083015261328a8161324e565b9050919050565b7f54726164696e6720616c726561647920656e61626c65642e0000000000000000600082015250565b60006132c7601883612a13565b91506132d282613291565b602082019050919050565b600060208201905081810360008301526132f6816132ba565b9050919050565b7f696e73756666696369656e74204554482062616c616e63650000000000000000600082015250565b6000613333601883612a13565b915061333e826132fd565b602082019050919050565b6000602082019050818103600083015261336281613326565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006133c5602583612a13565b91506133d082613369565b604082019050919050565b600060208201905081810360008301526133f4816133b8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061343582612b35565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156134685761346761305c565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134cf602683612a13565b91506134da82613473565b604082019050919050565b600060208201905081810360008301526134fe816134c2565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b6000613561603783612a13565b915061356c82613505565b604082019050919050565b6000602082019050818103600083015261359081613554565b9050919050565b6000815190506135a681612b3f565b92915050565b6000602082840312156135c2576135c1612acd565b5b60006135d084828501613597565b91505092915050565b60006040820190506135ee6000830185612d2e565b6135fb6020830184612be1565b9392505050565b60008151905061361181612cc2565b92915050565b60006020828403121561362d5761362c612acd565b5b600061363b84828501613602565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006136a0602483612a13565b91506136ab82613644565b604082019050919050565b600060208201905081810360008301526136cf81613693565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613732602283612a13565b915061373d826136d6565b604082019050919050565b6000602082019050818103600083015261376181613725565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006137c4602583612a13565b91506137cf82613768565b604082019050919050565b600060208201905081810360008301526137f3816137b7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613856602383612a13565b9150613861826137fa565b604082019050919050565b6000602082019050818103600083015261388581613849565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b60006138c2601883612a13565b91506138cd8261388c565b602082019050919050565b600060208201905081810360008301526138f1816138b5565b9050919050565b600061390382612b35565b915061390e83612b35565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139475761394661305c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061398c82612b35565b915061399783612b35565b9250826139a7576139a6613952565b5b828204905092915050565b60006139bd82612b35565b91506139c883612b35565b9250828210156139db576139da61305c565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613a42602683612a13565b9150613a4d826139e6565b604082019050919050565b60006020820190508181036000830152613a7181613a35565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613aae601d83612a13565b9150613ab982613a78565b602082019050919050565b60006020820190508181036000830152613add81613aa1565b9050919050565b600081905092915050565b50565b6000613aff600083613ae4565b9150613b0a82613aef565b600082019050919050565b6000613b2082613af2565b915081905091905056fea26469706673582212201d6c50b6ca83f3438567271b1ec2664ce7aed5de6736482806689d18d0edf16e64736f6c634300080a0033
Deployed Bytecode
0x6080604052600436106101855760003560e01c80638a8c523c116100d1578063a9059cbb1161008a578063dd62ed3e11610064578063dd62ed3e1461050f578063e596a34d1461054c578063f2fde38b14610556578063f9d0831a1461057f5761018c565b8063a9059cbb1461049f578063b26baf44146104dc578063d32de95a146105055761018c565b80638a8c523c146103c25780638da5cb5b146103d957806395d89b41146104045780639e252f001461042f578063a457c2d714610458578063a6196e80146104955761018c565b80633bed91a91161013e578063590ffdce11610118578063590ffdce1461033b57806370a0823114610364578063715018a6146103a15780638119c065146103b85761018c565b80633bed91a9146102c95780634ada218b146102d35780634fbee193146102fe5761018c565b806306fdde0314610191578063095ea7b3146101bc57806318160ddd146101f957806323b872dd14610224578063313ce56714610261578063395093511461028c5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a66105a8565b6040516101b39190612aa1565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de9190612b6b565b61063a565b6040516101f09190612bc6565b60405180910390f35b34801561020557600080fd5b5061020e610658565b60405161021b9190612bf0565b60405180910390f35b34801561023057600080fd5b5061024b60048036038101906102469190612c0b565b610662565b6040516102589190612bc6565b60405180910390f35b34801561026d57600080fd5b50610276610781565b6040516102839190612c7a565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae9190612b6b565b61078a565b6040516102c09190612bc6565b60405180910390f35b6102d1610836565b005b3480156102df57600080fd5b506102e8610add565b6040516102f59190612bc6565b60405180910390f35b34801561030a57600080fd5b5061032560048036038101906103209190612c95565b610af0565b6040516103329190612bc6565b60405180910390f35b34801561034757600080fd5b50610362600480360381019061035d9190612cee565b610b46565b005b34801561037057600080fd5b5061038b60048036038101906103869190612c95565b610ccb565b6040516103989190612bf0565b60405180910390f35b3480156103ad57600080fd5b506103b6610d13565b005b6103c0610e6b565b005b3480156103ce57600080fd5b506103d7611112565b005b3480156103e557600080fd5b506103ee611216565b6040516103fb9190612d3d565b60405180910390f35b34801561041057600080fd5b50610419611240565b6040516104269190612aa1565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190612d58565b6112d2565b005b34801561046457600080fd5b5061047f600480360381019061047a9190612b6b565b6113f6565b60405161048c9190612bc6565b60405180910390f35b61049d6114e1565b005b3480156104ab57600080fd5b506104c660048036038101906104c19190612b6b565b611788565b6040516104d39190612bc6565b60405180910390f35b3480156104e857600080fd5b5061050360048036038101906104fe9190612ecd565b6117a6565b005b61050d611886565b005b34801561051b57600080fd5b5061053660048036038101906105319190612f29565b611b2d565b6040516105439190612bf0565b60405180910390f35b610554611bb4565b005b34801561056257600080fd5b5061057d60048036038101906105789190612c95565b611e5c565b005b34801561058b57600080fd5b506105a660048036038101906105a19190612c95565b612023565b005b6060600380546105b790612f98565b80601f01602080910402602001604051908101604052809291908181526020018280546105e390612f98565b80156106305780601f1061060557610100808354040283529160200191610630565b820191906000526020600020905b81548152906001019060200180831161061357829003601f168201915b5050505050905090565b600061064e610647612295565b848461229d565b6001905092915050565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106ae612295565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461076a5782811015610755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074c9061303c565b60405180910390fd5b61076985610761612295565b85840361229d565b5b610775858585612468565b60019150509392505050565b60006012905090565b600061082c610797612295565b8484600160006107a5612295565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610827919061308b565b61229d565b6001905092915050565b678ac7230489e800003414610880576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108779061312d565b60405180910390fd5b60006108b066b1a2bc2ec500006108a26006543461266a90919063ffffffff16565b61268090919063ffffffff16565b9050806000806108be611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561093a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093190613199565b60405180910390fd5b61098b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a25816000806109dc611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ac90919063ffffffff16565b600080610a30611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16610a8d611216565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ad29190612bf0565b60405180910390a350565b600760009054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610b4e612295565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd490613205565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6790613271565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d1b612295565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da190613205565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b66b1a2bc2ec50000341015610eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eac9061312d565b60405180910390fd5b6000610ee566b1a2bc2ec50000610ed76006543461266a90919063ffffffff16565b61268090919063ffffffff16565b905080600080610ef3611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6690613199565b60405180910390fd5b610fc0816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061105a81600080611011611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ac90919063ffffffff16565b600080611065611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff166110c2611216565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111079190612bf0565b60405180910390a350565b61111a612295565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a090613205565b60405180910390fd5b600760009054906101000a900460ff16156111f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f0906132dd565b60405180910390fd5b6001600760006101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461124f90612f98565b80601f016020809104026020016040519081016040528092919081815260200182805461127b90612f98565b80156112c85780601f1061129d576101008083540402835291602001916112c8565b820191906000526020600020905b8154815290600101906020018083116112ab57829003601f168201915b5050505050905090565b6112da612295565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136090613205565b60405180910390fd5b804710156113ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a390613349565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156113f2573d6000803e3d6000fd5b5050565b60008060016000611405612295565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156114c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b9906133db565b60405180910390fd5b6114d66114cd612295565b8585840361229d565b600191505092915050565b674563918244f40000341461152b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115229061312d565b60405180910390fd5b600061155b66b1a2bc2ec5000061154d6006543461266a90919063ffffffff16565b61268090919063ffffffff16565b905080600080611569611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90613199565b60405180910390fd5b611636816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116d081600080611687611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ac90919063ffffffff16565b6000806116db611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16611738611216565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161177d9190612bf0565b60405180910390a350565b600061179c611795612295565b8484612468565b6001905092915050565b6117ae612295565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461183d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183490613205565b60405180910390fd5b60005b82518110156118815761186e338483815181106118605761185f6133fb565b5b6020026020010151846126c2565b80806118799061342a565b915050611840565b505050565b67d02ab486cedc000034146118d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c79061312d565b60405180910390fd5b600061190066b1a2bc2ec500006118f26006543461266a90919063ffffffff16565b61268090919063ffffffff16565b90508060008061190e611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561198a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198190613199565b60405180910390fd5b6119db816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a7581600080611a2c611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ac90919063ffffffff16565b600080611a80611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16611add611216565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b229190612bf0565b60405180910390a350565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6801158e460913d000003414611bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf69061312d565b60405180910390fd5b6000611c2f66b1a2bc2ec50000611c216006543461266a90919063ffffffff16565b61268090919063ffffffff16565b905080600080611c3d611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb090613199565b60405180910390fd5b611d0a816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611da481600080611d5b611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ac90919063ffffffff16565b600080611daf611216565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16611e0c611216565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e519190612bf0565b60405180910390a350565b611e64612295565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eea90613205565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5a906134e5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61202b612295565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b190613205565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212090613577565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561218d57612187473373ffffffffffffffffffffffffffffffffffffffff1661294390919063ffffffff16565b50612292565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016121cd9190612d3d565b602060405180830381865afa1580156121ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220e91906135ac565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161224b9291906135d9565b6020604051808303816000875af115801561226a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228e9190613617565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561230d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612304906136b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561237d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237490613748565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161245b9190612bf0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cf906137da565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253f9061386c565b60405180910390fd5b600760009054906101000a900460ff16806125ac5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806126005750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61263f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612636906138d8565b60405180910390fd5b600081141561265957612654838360006126c2565b612665565b6126648383836126c2565b5b505050565b6000818361267891906138f8565b905092915050565b6000818361268e9190613981565b905092915050565b600081836126a4919061308b565b905092915050565b600081836126ba91906139b2565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612732576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612729906137da565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127999061386c565b60405180910390fd5b6127ad8383836129fe565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282a90613a58565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128c6919061308b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161292a9190612bf0565b60405180910390a361293d848484612a03565b50505050565b600081471015612988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297f90613ac4565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff16836040516129ae90613b15565b60006040518083038185875af1925050503d80600081146129eb576040519150601f19603f3d011682016040523d82523d6000602084013e6129f0565b606091505b505090508091505092915050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a42578082015181840152602081019050612a27565b83811115612a51576000848401525b50505050565b6000601f19601f8301169050919050565b6000612a7382612a08565b612a7d8185612a13565b9350612a8d818560208601612a24565b612a9681612a57565b840191505092915050565b60006020820190508181036000830152612abb8184612a68565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b0282612ad7565b9050919050565b612b1281612af7565b8114612b1d57600080fd5b50565b600081359050612b2f81612b09565b92915050565b6000819050919050565b612b4881612b35565b8114612b5357600080fd5b50565b600081359050612b6581612b3f565b92915050565b60008060408385031215612b8257612b81612acd565b5b6000612b9085828601612b20565b9250506020612ba185828601612b56565b9150509250929050565b60008115159050919050565b612bc081612bab565b82525050565b6000602082019050612bdb6000830184612bb7565b92915050565b612bea81612b35565b82525050565b6000602082019050612c056000830184612be1565b92915050565b600080600060608486031215612c2457612c23612acd565b5b6000612c3286828701612b20565b9350506020612c4386828701612b20565b9250506040612c5486828701612b56565b9150509250925092565b600060ff82169050919050565b612c7481612c5e565b82525050565b6000602082019050612c8f6000830184612c6b565b92915050565b600060208284031215612cab57612caa612acd565b5b6000612cb984828501612b20565b91505092915050565b612ccb81612bab565b8114612cd657600080fd5b50565b600081359050612ce881612cc2565b92915050565b60008060408385031215612d0557612d04612acd565b5b6000612d1385828601612b20565b9250506020612d2485828601612cd9565b9150509250929050565b612d3781612af7565b82525050565b6000602082019050612d526000830184612d2e565b92915050565b600060208284031215612d6e57612d6d612acd565b5b6000612d7c84828501612b56565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612dc282612a57565b810181811067ffffffffffffffff82111715612de157612de0612d8a565b5b80604052505050565b6000612df4612ac3565b9050612e008282612db9565b919050565b600067ffffffffffffffff821115612e2057612e1f612d8a565b5b602082029050602081019050919050565b600080fd5b6000612e49612e4484612e05565b612dea565b90508083825260208201905060208402830185811115612e6c57612e6b612e31565b5b835b81811015612e955780612e818882612b20565b845260208401935050602081019050612e6e565b5050509392505050565b600082601f830112612eb457612eb3612d85565b5b8135612ec4848260208601612e36565b91505092915050565b60008060408385031215612ee457612ee3612acd565b5b600083013567ffffffffffffffff811115612f0257612f01612ad2565b5b612f0e85828601612e9f565b9250506020612f1f85828601612b56565b9150509250929050565b60008060408385031215612f4057612f3f612acd565b5b6000612f4e85828601612b20565b9250506020612f5f85828601612b20565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612fb057607f821691505b60208210811415612fc457612fc3612f69565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613026602883612a13565b915061303182612fca565b604082019050919050565b6000602082019050818103600083015261305581613019565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061309682612b35565b91506130a183612b35565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130d6576130d561305c565b5b828201905092915050565b7f496e73756666696369656e74204554482073656e740000000000000000000000600082015250565b6000613117601583612a13565b9150613122826130e1565b602082019050919050565b600060208201905081810360008301526131468161310a565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000613183601483612a13565b915061318e8261314d565b602082019050919050565b600060208201905081810360008301526131b281613176565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131ef602083612a13565b91506131fa826131b9565b602082019050919050565b6000602082019050818103600083015261321e816131e2565b9050919050565b7f56616c756520616c726561647920736574000000000000000000000000000000600082015250565b600061325b601183612a13565b915061326682613225565b602082019050919050565b6000602082019050818103600083015261328a8161324e565b9050919050565b7f54726164696e6720616c726561647920656e61626c65642e0000000000000000600082015250565b60006132c7601883612a13565b91506132d282613291565b602082019050919050565b600060208201905081810360008301526132f6816132ba565b9050919050565b7f696e73756666696369656e74204554482062616c616e63650000000000000000600082015250565b6000613333601883612a13565b915061333e826132fd565b602082019050919050565b6000602082019050818103600083015261336281613326565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006133c5602583612a13565b91506133d082613369565b604082019050919050565b600060208201905081810360008301526133f4816133b8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061343582612b35565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156134685761346761305c565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134cf602683612a13565b91506134da82613473565b604082019050919050565b600060208201905081810360008301526134fe816134c2565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b6000613561603783612a13565b915061356c82613505565b604082019050919050565b6000602082019050818103600083015261359081613554565b9050919050565b6000815190506135a681612b3f565b92915050565b6000602082840312156135c2576135c1612acd565b5b60006135d084828501613597565b91505092915050565b60006040820190506135ee6000830185612d2e565b6135fb6020830184612be1565b9392505050565b60008151905061361181612cc2565b92915050565b60006020828403121561362d5761362c612acd565b5b600061363b84828501613602565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006136a0602483612a13565b91506136ab82613644565b604082019050919050565b600060208201905081810360008301526136cf81613693565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613732602283612a13565b915061373d826136d6565b604082019050919050565b6000602082019050818103600083015261376181613725565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006137c4602583612a13565b91506137cf82613768565b604082019050919050565b600060208201905081810360008301526137f3816137b7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613856602383612a13565b9150613861826137fa565b604082019050919050565b6000602082019050818103600083015261388581613849565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b60006138c2601883612a13565b91506138cd8261388c565b602082019050919050565b600060208201905081810360008301526138f1816138b5565b9050919050565b600061390382612b35565b915061390e83612b35565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139475761394661305c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061398c82612b35565b915061399783612b35565b9250826139a7576139a6613952565b5b828204905092915050565b60006139bd82612b35565b91506139c883612b35565b9250828210156139db576139da61305c565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613a42602683612a13565b9150613a4d826139e6565b604082019050919050565b60006020820190508181036000830152613a7181613a35565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613aae601d83612a13565b9150613ab982613a78565b602082019050919050565b60006020820190508181036000830152613add81613aa1565b9050919050565b600081905092915050565b50565b6000613aff600083613ae4565b9150613b0a82613aef565b600082019050919050565b6000613b2082613af2565b915081905091905056fea26469706673582212201d6c50b6ca83f3438567271b1ec2664ce7aed5de6736482806689d18d0edf16e64736f6c634300080a0033
Deployed Bytecode Sourcemap
11567:5177:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5513:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6427:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5834:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6604:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5733:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7185:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13341:492;;;:::i;:::-;;12066:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16101:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15884:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5950:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4699:148;;;;;;;;;;;;;:::i;:::-;;12378:469;;;:::i;:::-;;15730:146;;;;;;;;;;;;;:::i;:::-;;4485:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5621:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15526:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7408:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12855:478;;;:::i;:::-;;6085:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14822:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13841:484;;;:::i;:::-;;6268:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14334:478;;;:::i;:::-;;4855:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15053:465;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5513:100;5567:13;5600:5;5593:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5513:100;:::o;6427:169::-;6510:4;6527:39;6536:12;:10;:12::i;:::-;6550:7;6559:6;6527:8;:39::i;:::-;6584:4;6577:11;;6427:169;;;;:::o;5834:108::-;5895:7;5922:12;;5915:19;;5834:108;:::o;6604:573::-;6744:4;6761:24;6788:11;:19;6800:6;6788:19;;;;;;;;;;;;;;;:33;6808:12;:10;:12::i;:::-;6788:33;;;;;;;;;;;;;;;;6761:60;;6856:17;6836:16;:37;6832:265;;6918:6;6898:16;:26;;6890:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;7013:57;7022:6;7030:12;:10;:12::i;:::-;7063:6;7044:16;:25;7013:8;:57::i;:::-;6832:265;7109:36;7119:6;7127:9;7138:6;7109:9;:36::i;:::-;7165:4;7158:11;;;6604:573;;;;;:::o;5733:93::-;5791:5;5816:2;5809:9;;5733:93;:::o;7185:215::-;7273:4;7290:80;7299:12;:10;:12::i;:::-;7313:7;7359:10;7322:11;:25;7334:12;:10;:12::i;:::-;7322:25;;;;;;;;;;;;;;;:34;7348:7;7322:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;7290:8;:80::i;:::-;7388:4;7381:11;;7185:215;;;;:::o;13341:492::-;11926:8;13404:9;:38;13396:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13479:20;13502:44;11796:10;13502:25;13516:10;;13502:9;:13;;:25;;;;:::i;:::-;:29;;:44;;;;:::i;:::-;13479:67;;13587:12;13565:9;:18;13575:7;:5;:7::i;:::-;13565:18;;;;;;;;;;;;;;;;:34;;13557:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13659:39;13685:12;13659:9;:21;13669:10;13659:21;;;;;;;;;;;;;;;;:25;;:39;;;;:::i;:::-;13635:9;:21;13645:10;13635:21;;;;;;;;;;;;;;;:63;;;;13730:36;13753:12;13730:9;:18;13740:7;:5;:7::i;:::-;13730:18;;;;;;;;;;;;;;;;:22;;:36;;;;:::i;:::-;13709:9;:18;13719:7;:5;:7::i;:::-;13709:18;;;;;;;;;;;;;;;:57;;;;13800:10;13782:43;;13791:7;:5;:7::i;:::-;13782:43;;;13812:12;13782:43;;;;;;:::i;:::-;;;;;;;;13385:448;13341:492::o;12066:34::-;;;;;;;;;;;;;:::o;16101:125::-;16166:4;16190:19;:28;16210:7;16190:28;;;;;;;;;;;;;;;;;;;;;;;;;16183:35;;16101:125;;;:::o;15884:209::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16011:5:::1;15979:37;;:19;:28;15999:7;15979:28;;;;;;;;;;;;;;;;;;;;;;;;;:37;;;;15971:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16080:5;16049:19;:28;16069:7;16049:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;15884:209:::0;;:::o;5950:127::-;6024:7;6051:9;:18;6061:7;6051:18;;;;;;;;;;;;;;;;6044:25;;5950:127;;;:::o;4699:148::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4806:1:::1;4769:40;;4790:6;;;;;;;;;;;4769:40;;;;;;;;;;;;4837:1;4820:6;;:19;;;;;;;;;;;;;;;;;;4699:148::o:0;12378:469::-;11796:10;12430:9;:26;;12422:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12493:20;12516:44;11796:10;12516:25;12530:10;;12516:9;:13;;:25;;;;:::i;:::-;:29;;:44;;;;:::i;:::-;12493:67;;12601:12;12579:9;:18;12589:7;:5;:7::i;:::-;12579:18;;;;;;;;;;;;;;;;:34;;12571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12673:39;12699:12;12673:9;:21;12683:10;12673:21;;;;;;;;;;;;;;;;:25;;:39;;;;:::i;:::-;12649:9;:21;12659:10;12649:21;;;;;;;;;;;;;;;:63;;;;12744:36;12767:12;12744:9;:18;12754:7;:5;:7::i;:::-;12744:18;;;;;;;;;;;;;;;;:22;;:36;;;;:::i;:::-;12723:9;:18;12733:7;:5;:7::i;:::-;12723:18;;;;;;;;;;;;;;;:57;;;;12814:10;12796:43;;12805:7;:5;:7::i;:::-;12796:43;;;12826:12;12796:43;;;;;;:::i;:::-;;;;;;;;12411:436;12378:469::o;15730:146::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15793:14:::1;;;;;;;;;;;15792:15;15784:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;15864:4;15847:14;;:21;;;;;;;;;;;;;;;;;;15730:146::o:0;4485:79::-;4523:7;4550:6;;;;;;;;;;;4543:13;;4485:79;:::o;5621:104::-;5677:13;5710:7;5703:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5621:104;:::o;15526:196::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15626:9:::1;15601:21;:34;;15593:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15683:10;15675:28;;:39;15704:9;15675:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;15526:196:::0;:::o;7408:413::-;7501:4;7518:24;7545:11;:25;7557:12;:10;:12::i;:::-;7545:25;;;;;;;;;;;;;;;:34;7571:7;7545:34;;;;;;;;;;;;;;;;7518:61;;7618:15;7598:16;:35;;7590:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7711:67;7720:12;:10;:12::i;:::-;7734:7;7762:15;7743:16;:34;7711:8;:67::i;:::-;7809:4;7802:11;;;7408:413;;;;:::o;12855:478::-;11859:7;12911:9;:31;12903:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12979:20;13002:44;11796:10;13002:25;13016:10;;13002:9;:13;;:25;;;;:::i;:::-;:29;;:44;;;;:::i;:::-;12979:67;;13087:12;13065:9;:18;13075:7;:5;:7::i;:::-;13065:18;;;;;;;;;;;;;;;;:34;;13057:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13159:39;13185:12;13159:9;:21;13169:10;13159:21;;;;;;;;;;;;;;;;:25;;:39;;;;:::i;:::-;13135:9;:21;13145:10;13135:21;;;;;;;;;;;;;;;:63;;;;13230:36;13253:12;13230:9;:18;13240:7;:5;:7::i;:::-;13230:18;;;;;;;;;;;;;;;;:22;;:36;;;;:::i;:::-;13209:9;:18;13219:7;:5;:7::i;:::-;13209:18;;;;;;;;;;;;;;;:57;;;;13300:10;13282:43;;13291:7;:5;:7::i;:::-;13282:43;;;13312:12;13282:43;;;;;;:::i;:::-;;;;;;;;12892:441;12855:478::o;6085:175::-;6171:4;6188:42;6198:12;:10;:12::i;:::-;6212:9;6223:6;6188:9;:42::i;:::-;6248:4;6241:11;;6085:175;;;;:::o;14822:223::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14921:6:::1;14916:122;14937:10;:17;14933:1;:21;14916:122;;;14976:50;14992:10;15004;15015:1;15004:13;;;;;;;;:::i;:::-;;;;;;;;15019:6;14976:15;:50::i;:::-;14956:3;;;;;:::i;:::-;;;;14916:122;;;;14822:223:::0;;:::o;13841:484::-;11990:8;13900:9;:34;13892:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13971:20;13994:44;11796:10;13994:25;14008:10;;13994:9;:13;;:25;;;;:::i;:::-;:29;;:44;;;;:::i;:::-;13971:67;;14079:12;14057:9;:18;14067:7;:5;:7::i;:::-;14057:18;;;;;;;;;;;;;;;;:34;;14049:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14151:39;14177:12;14151:9;:21;14161:10;14151:21;;;;;;;;;;;;;;;;:25;;:39;;;;:::i;:::-;14127:9;:21;14137:10;14127:21;;;;;;;;;;;;;;;:63;;;;14222:36;14245:12;14222:9;:18;14232:7;:5;:7::i;:::-;14222:18;;;;;;;;;;;;;;;;:22;;:36;;;;:::i;:::-;14201:9;:18;14211:7;:5;:7::i;:::-;14201:18;;;;;;;;;;;;;;;:57;;;;14292:10;14274:43;;14283:7;:5;:7::i;:::-;14274:43;;;14304:12;14274:43;;;;;;:::i;:::-;;;;;;;;13881:444;13841:484::o;6268:151::-;6357:7;6384:11;:18;6396:5;6384:18;;;;;;;;;;;;;;;:27;6403:7;6384:27;;;;;;;;;;;;;;;;6377:34;;6268:151;;;;:::o;14334:478::-;12051:8;14390:9;:31;14382:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;14458:20;14481:44;11796:10;14481:25;14495:10;;14481:9;:13;;:25;;;;:::i;:::-;:29;;:44;;;;:::i;:::-;14458:67;;14566:12;14544:9;:18;14554:7;:5;:7::i;:::-;14544:18;;;;;;;;;;;;;;;;:34;;14536:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14638:39;14664:12;14638:9;:21;14648:10;14638:21;;;;;;;;;;;;;;;;:25;;:39;;;;:::i;:::-;14614:9;:21;14624:10;14614:21;;;;;;;;;;;;;;;:63;;;;14709:36;14732:12;14709:9;:18;14719:7;:5;:7::i;:::-;14709:18;;;;;;;;;;;;;;;;:22;;:36;;;;:::i;:::-;14688:9;:18;14698:7;:5;:7::i;:::-;14688:18;;;;;;;;;;;;;;;:57;;;;14779:10;14761:43;;14770:7;:5;:7::i;:::-;14761:43;;;14791:12;14761:43;;;;;;:::i;:::-;;;;;;;;14371:441;14334:478::o;4855:244::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4964:1:::1;4944:22;;:8;:22;;;;4936:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5054:8;5025:38;;5046:6;;;;;;;;;;;5025:38;;;;;;;;;;;;5083:8;5074:6;;:17;;;;;;;;;;;;;;;;;;4855:244:::0;:::o;15053:465::-;4622:12;:10;:12::i;:::-;4612:22;;:6;;;;;;;;;;;:22;;;4604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15149:4:::1;15132:22;;:5;:22;;;;15124:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;15246:3;15229:21;;:5;:21;;;15225:127;;;15267:52;15297:21;15275:10;15267:29;;;;:52;;;;:::i;:::-;;15334:7;;15225:127;15362:17;15389:5;15362:33;;15406:15;15424:10;:20;;;15453:4;15424:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15406:53;;15470:10;:19;;;15490:10;15502:7;15470:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15113:405;;4682:1;15053:465:::0;:::o;3808:98::-;3861:7;3888:10;3881:17;;3808:98;:::o;10532:380::-;10685:1;10668:19;;:5;:19;;;;10660:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10766:1;10747:21;;:7;:21;;;;10739:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10850:6;10820:11;:18;10832:5;10820:18;;;;;;;;;;;;;;;:27;10839:7;10820:27;;;;;;;;;;;;;;;:36;;;;10888:7;10872:32;;10881:5;10872:32;;;10897:6;10872:32;;;;;;:::i;:::-;;;;;;;;10532:380;;;:::o;16234:507::-;16347:1;16331:18;;:4;:18;;;;16323:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16424:1;16410:16;;:2;:16;;;;16402:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16485:14;;;;;;;;;;;:43;;;;16503:19;:25;16523:4;16503:25;;;;;;;;;;;;;;;;;;;;;;;;;16485:43;:70;;;;16532:19;:23;16552:2;16532:23;;;;;;;;;;;;;;;;;;;;;;;;;16485:70;16477:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;16611:1;16601:6;:11;16597:93;;;16629:28;16645:4;16651:2;16655:1;16629:15;:28::i;:::-;16672:7;;16597:93;16700:33;16716:4;16722:2;16726:6;16700:15;:33::i;:::-;16234:507;;;;:::o;1483:98::-;1541:7;1572:1;1568;:5;;;;:::i;:::-;1561:12;;1483:98;;;;:::o;1589:::-;1647:7;1678:1;1674;:5;;;;:::i;:::-;1667:12;;1589:98;;;;:::o;1271:::-;1329:7;1360:1;1356;:5;;;;:::i;:::-;1349:12;;1271:98;;;;:::o;1377:::-;1435:7;1466:1;1462;:5;;;;:::i;:::-;1455:12;;1377:98;;;;:::o;7829:733::-;7987:1;7969:20;;:6;:20;;;;7961:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8071:1;8050:23;;:9;:23;;;;8042:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8126:47;8147:6;8155:9;8166:6;8126:20;:47::i;:::-;8186:21;8210:9;:17;8220:6;8210:17;;;;;;;;;;;;;;;;8186:41;;8263:6;8246:13;:23;;8238:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8384:6;8368:13;:22;8348:9;:17;8358:6;8348:17;;;;;;;;;;;;;;;:42;;;;8436:6;8412:9;:20;8422:9;8412:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8477:9;8460:35;;8469:6;8460:35;;;8488:6;8460:35;;;;;;:::i;:::-;;;;;;;;8508:46;8528:6;8536:9;8547:6;8508:19;:46::i;:::-;7950:612;7829:733;;;:::o;3502:266::-;3581:4;3630:6;3605:21;:31;;3597:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3684:12;3702:9;:14;;3724:6;3702:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:52;;;3753:7;3746:14;;;3502:266;;;;:::o;11301:125::-;;;;:::o;11434:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:86::-;4506:7;4546:4;4539:5;4535:16;4524:27;;4471:86;;;:::o;4563:112::-;4646:22;4662:5;4646:22;:::i;:::-;4641:3;4634:35;4563:112;;:::o;4681:214::-;4770:4;4808:2;4797:9;4793:18;4785:26;;4821:67;4885:1;4874:9;4870:17;4861:6;4821:67;:::i;:::-;4681:214;;;;:::o;4901:329::-;4960:6;5009:2;4997:9;4988:7;4984:23;4980:32;4977:119;;;5015:79;;:::i;:::-;4977:119;5135:1;5160:53;5205:7;5196:6;5185:9;5181:22;5160:53;:::i;:::-;5150:63;;5106:117;4901:329;;;;:::o;5236:116::-;5306:21;5321:5;5306:21;:::i;:::-;5299:5;5296:32;5286:60;;5342:1;5339;5332:12;5286:60;5236:116;:::o;5358:133::-;5401:5;5439:6;5426:20;5417:29;;5455:30;5479:5;5455:30;:::i;:::-;5358:133;;;;:::o;5497:468::-;5562:6;5570;5619:2;5607:9;5598:7;5594:23;5590:32;5587:119;;;5625:79;;:::i;:::-;5587:119;5745:1;5770:53;5815:7;5806:6;5795:9;5791:22;5770:53;:::i;:::-;5760:63;;5716:117;5872:2;5898:50;5940:7;5931:6;5920:9;5916:22;5898:50;:::i;:::-;5888:60;;5843:115;5497:468;;;;;:::o;5971:118::-;6058:24;6076:5;6058:24;:::i;:::-;6053:3;6046:37;5971:118;;:::o;6095:222::-;6188:4;6226:2;6215:9;6211:18;6203:26;;6239:71;6307:1;6296:9;6292:17;6283:6;6239:71;:::i;:::-;6095:222;;;;:::o;6323:329::-;6382:6;6431:2;6419:9;6410:7;6406:23;6402:32;6399:119;;;6437:79;;:::i;:::-;6399:119;6557:1;6582:53;6627:7;6618:6;6607:9;6603:22;6582:53;:::i;:::-;6572:63;;6528:117;6323:329;;;;:::o;6658:117::-;6767:1;6764;6757:12;6781:180;6829:77;6826:1;6819:88;6926:4;6923:1;6916:15;6950:4;6947:1;6940:15;6967:281;7050:27;7072:4;7050:27;:::i;:::-;7042:6;7038:40;7180:6;7168:10;7165:22;7144:18;7132:10;7129:34;7126:62;7123:88;;;7191:18;;:::i;:::-;7123:88;7231:10;7227:2;7220:22;7010:238;6967:281;;:::o;7254:129::-;7288:6;7315:20;;:::i;:::-;7305:30;;7344:33;7372:4;7364:6;7344:33;:::i;:::-;7254:129;;;:::o;7389:311::-;7466:4;7556:18;7548:6;7545:30;7542:56;;;7578:18;;:::i;:::-;7542:56;7628:4;7620:6;7616:17;7608:25;;7688:4;7682;7678:15;7670:23;;7389:311;;;:::o;7706:117::-;7815:1;7812;7805:12;7846:710;7942:5;7967:81;7983:64;8040:6;7983:64;:::i;:::-;7967:81;:::i;:::-;7958:90;;8068:5;8097:6;8090:5;8083:21;8131:4;8124:5;8120:16;8113:23;;8184:4;8176:6;8172:17;8164:6;8160:30;8213:3;8205:6;8202:15;8199:122;;;8232:79;;:::i;:::-;8199:122;8347:6;8330:220;8364:6;8359:3;8356:15;8330:220;;;8439:3;8468:37;8501:3;8489:10;8468:37;:::i;:::-;8463:3;8456:50;8535:4;8530:3;8526:14;8519:21;;8406:144;8390:4;8385:3;8381:14;8374:21;;8330:220;;;8334:21;7948:608;;7846:710;;;;;:::o;8579:370::-;8650:5;8699:3;8692:4;8684:6;8680:17;8676:27;8666:122;;8707:79;;:::i;:::-;8666:122;8824:6;8811:20;8849:94;8939:3;8931:6;8924:4;8916:6;8912:17;8849:94;:::i;:::-;8840:103;;8656:293;8579:370;;;;:::o;8955:684::-;9048:6;9056;9105:2;9093:9;9084:7;9080:23;9076:32;9073:119;;;9111:79;;:::i;:::-;9073:119;9259:1;9248:9;9244:17;9231:31;9289:18;9281:6;9278:30;9275:117;;;9311:79;;:::i;:::-;9275:117;9416:78;9486:7;9477:6;9466:9;9462:22;9416:78;:::i;:::-;9406:88;;9202:302;9543:2;9569:53;9614:7;9605:6;9594:9;9590:22;9569:53;:::i;:::-;9559:63;;9514:118;8955:684;;;;;:::o;9645:474::-;9713:6;9721;9770:2;9758:9;9749:7;9745:23;9741:32;9738:119;;;9776:79;;:::i;:::-;9738:119;9896:1;9921:53;9966:7;9957:6;9946:9;9942:22;9921:53;:::i;:::-;9911:63;;9867:117;10023:2;10049:53;10094:7;10085:6;10074:9;10070:22;10049:53;:::i;:::-;10039:63;;9994:118;9645:474;;;;;:::o;10125:180::-;10173:77;10170:1;10163:88;10270:4;10267:1;10260:15;10294:4;10291:1;10284:15;10311:320;10355:6;10392:1;10386:4;10382:12;10372:22;;10439:1;10433:4;10429:12;10460:18;10450:81;;10516:4;10508:6;10504:17;10494:27;;10450:81;10578:2;10570:6;10567:14;10547:18;10544:38;10541:84;;;10597:18;;:::i;:::-;10541:84;10362:269;10311:320;;;:::o;10637:227::-;10777:34;10773:1;10765:6;10761:14;10754:58;10846:10;10841:2;10833:6;10829:15;10822:35;10637:227;:::o;10870:366::-;11012:3;11033:67;11097:2;11092:3;11033:67;:::i;:::-;11026:74;;11109:93;11198:3;11109:93;:::i;:::-;11227:2;11222:3;11218:12;11211:19;;10870:366;;;:::o;11242:419::-;11408:4;11446:2;11435:9;11431:18;11423:26;;11495:9;11489:4;11485:20;11481:1;11470:9;11466:17;11459:47;11523:131;11649:4;11523:131;:::i;:::-;11515:139;;11242:419;;;:::o;11667:180::-;11715:77;11712:1;11705:88;11812:4;11809:1;11802:15;11836:4;11833:1;11826:15;11853:305;11893:3;11912:20;11930:1;11912:20;:::i;:::-;11907:25;;11946:20;11964:1;11946:20;:::i;:::-;11941:25;;12100:1;12032:66;12028:74;12025:1;12022:81;12019:107;;;12106:18;;:::i;:::-;12019:107;12150:1;12147;12143:9;12136:16;;11853:305;;;;:::o;12164:171::-;12304:23;12300:1;12292:6;12288:14;12281:47;12164:171;:::o;12341:366::-;12483:3;12504:67;12568:2;12563:3;12504:67;:::i;:::-;12497:74;;12580:93;12669:3;12580:93;:::i;:::-;12698:2;12693:3;12689:12;12682:19;;12341:366;;;:::o;12713:419::-;12879:4;12917:2;12906:9;12902:18;12894:26;;12966:9;12960:4;12956:20;12952:1;12941:9;12937:17;12930:47;12994:131;13120:4;12994:131;:::i;:::-;12986:139;;12713:419;;;:::o;13138:170::-;13278:22;13274:1;13266:6;13262:14;13255:46;13138:170;:::o;13314:366::-;13456:3;13477:67;13541:2;13536:3;13477:67;:::i;:::-;13470:74;;13553:93;13642:3;13553:93;:::i;:::-;13671:2;13666:3;13662:12;13655:19;;13314:366;;;:::o;13686:419::-;13852:4;13890:2;13879:9;13875:18;13867:26;;13939:9;13933:4;13929:20;13925:1;13914:9;13910:17;13903:47;13967:131;14093:4;13967:131;:::i;:::-;13959:139;;13686:419;;;:::o;14111:182::-;14251:34;14247:1;14239:6;14235:14;14228:58;14111:182;:::o;14299:366::-;14441:3;14462:67;14526:2;14521:3;14462:67;:::i;:::-;14455:74;;14538:93;14627:3;14538:93;:::i;:::-;14656:2;14651:3;14647:12;14640:19;;14299:366;;;:::o;14671:419::-;14837:4;14875:2;14864:9;14860:18;14852:26;;14924:9;14918:4;14914:20;14910:1;14899:9;14895:17;14888:47;14952:131;15078:4;14952:131;:::i;:::-;14944:139;;14671:419;;;:::o;15096:167::-;15236:19;15232:1;15224:6;15220:14;15213:43;15096:167;:::o;15269:366::-;15411:3;15432:67;15496:2;15491:3;15432:67;:::i;:::-;15425:74;;15508:93;15597:3;15508:93;:::i;:::-;15626:2;15621:3;15617:12;15610:19;;15269:366;;;:::o;15641:419::-;15807:4;15845:2;15834:9;15830:18;15822:26;;15894:9;15888:4;15884:20;15880:1;15869:9;15865:17;15858:47;15922:131;16048:4;15922:131;:::i;:::-;15914:139;;15641:419;;;:::o;16066:174::-;16206:26;16202:1;16194:6;16190:14;16183:50;16066:174;:::o;16246:366::-;16388:3;16409:67;16473:2;16468:3;16409:67;:::i;:::-;16402:74;;16485:93;16574:3;16485:93;:::i;:::-;16603:2;16598:3;16594:12;16587:19;;16246:366;;;:::o;16618:419::-;16784:4;16822:2;16811:9;16807:18;16799:26;;16871:9;16865:4;16861:20;16857:1;16846:9;16842:17;16835:47;16899:131;17025:4;16899:131;:::i;:::-;16891:139;;16618:419;;;:::o;17043:174::-;17183:26;17179:1;17171:6;17167:14;17160:50;17043:174;:::o;17223:366::-;17365:3;17386:67;17450:2;17445:3;17386:67;:::i;:::-;17379:74;;17462:93;17551:3;17462:93;:::i;:::-;17580:2;17575:3;17571:12;17564:19;;17223:366;;;:::o;17595:419::-;17761:4;17799:2;17788:9;17784:18;17776:26;;17848:9;17842:4;17838:20;17834:1;17823:9;17819:17;17812:47;17876:131;18002:4;17876:131;:::i;:::-;17868:139;;17595:419;;;:::o;18020:224::-;18160:34;18156:1;18148:6;18144:14;18137:58;18229:7;18224:2;18216:6;18212:15;18205:32;18020:224;:::o;18250:366::-;18392:3;18413:67;18477:2;18472:3;18413:67;:::i;:::-;18406:74;;18489:93;18578:3;18489:93;:::i;:::-;18607:2;18602:3;18598:12;18591:19;;18250:366;;;:::o;18622:419::-;18788:4;18826:2;18815:9;18811:18;18803:26;;18875:9;18869:4;18865:20;18861:1;18850:9;18846:17;18839:47;18903:131;19029:4;18903:131;:::i;:::-;18895:139;;18622:419;;;:::o;19047:180::-;19095:77;19092:1;19085:88;19192:4;19189:1;19182:15;19216:4;19213:1;19206:15;19233:233;19272:3;19295:24;19313:5;19295:24;:::i;:::-;19286:33;;19341:66;19334:5;19331:77;19328:103;;;19411:18;;:::i;:::-;19328:103;19458:1;19451:5;19447:13;19440:20;;19233:233;;;:::o;19472:225::-;19612:34;19608:1;19600:6;19596:14;19589:58;19681:8;19676:2;19668:6;19664:15;19657:33;19472:225;:::o;19703:366::-;19845:3;19866:67;19930:2;19925:3;19866:67;:::i;:::-;19859:74;;19942:93;20031:3;19942:93;:::i;:::-;20060:2;20055:3;20051:12;20044:19;;19703:366;;;:::o;20075:419::-;20241:4;20279:2;20268:9;20264:18;20256:26;;20328:9;20322:4;20318:20;20314:1;20303:9;20299:17;20292:47;20356:131;20482:4;20356:131;:::i;:::-;20348:139;;20075:419;;;:::o;20500:242::-;20640:34;20636:1;20628:6;20624:14;20617:58;20709:25;20704:2;20696:6;20692:15;20685:50;20500:242;:::o;20748:366::-;20890:3;20911:67;20975:2;20970:3;20911:67;:::i;:::-;20904:74;;20987:93;21076:3;20987:93;:::i;:::-;21105:2;21100:3;21096:12;21089:19;;20748:366;;;:::o;21120:419::-;21286:4;21324:2;21313:9;21309:18;21301:26;;21373:9;21367:4;21363:20;21359:1;21348:9;21344:17;21337:47;21401:131;21527:4;21401:131;:::i;:::-;21393:139;;21120:419;;;:::o;21545:143::-;21602:5;21633:6;21627:13;21618:22;;21649:33;21676:5;21649:33;:::i;:::-;21545:143;;;;:::o;21694:351::-;21764:6;21813:2;21801:9;21792:7;21788:23;21784:32;21781:119;;;21819:79;;:::i;:::-;21781:119;21939:1;21964:64;22020:7;22011:6;22000:9;21996:22;21964:64;:::i;:::-;21954:74;;21910:128;21694:351;;;;:::o;22051:332::-;22172:4;22210:2;22199:9;22195:18;22187:26;;22223:71;22291:1;22280:9;22276:17;22267:6;22223:71;:::i;:::-;22304:72;22372:2;22361:9;22357:18;22348:6;22304:72;:::i;:::-;22051:332;;;;;:::o;22389:137::-;22443:5;22474:6;22468:13;22459:22;;22490:30;22514:5;22490:30;:::i;:::-;22389:137;;;;:::o;22532:345::-;22599:6;22648:2;22636:9;22627:7;22623:23;22619:32;22616:119;;;22654:79;;:::i;:::-;22616:119;22774:1;22799:61;22852:7;22843:6;22832:9;22828:22;22799:61;:::i;:::-;22789:71;;22745:125;22532:345;;;;:::o;22883:223::-;23023:34;23019:1;23011:6;23007:14;23000:58;23092:6;23087:2;23079:6;23075:15;23068:31;22883:223;:::o;23112:366::-;23254:3;23275:67;23339:2;23334:3;23275:67;:::i;:::-;23268:74;;23351:93;23440:3;23351:93;:::i;:::-;23469:2;23464:3;23460:12;23453:19;;23112:366;;;:::o;23484:419::-;23650:4;23688:2;23677:9;23673:18;23665:26;;23737:9;23731:4;23727:20;23723:1;23712:9;23708:17;23701:47;23765:131;23891:4;23765:131;:::i;:::-;23757:139;;23484:419;;;:::o;23909:221::-;24049:34;24045:1;24037:6;24033:14;24026:58;24118:4;24113:2;24105:6;24101:15;24094:29;23909:221;:::o;24136:366::-;24278:3;24299:67;24363:2;24358:3;24299:67;:::i;:::-;24292:74;;24375:93;24464:3;24375:93;:::i;:::-;24493:2;24488:3;24484:12;24477:19;;24136:366;;;:::o;24508:419::-;24674:4;24712:2;24701:9;24697:18;24689:26;;24761:9;24755:4;24751:20;24747:1;24736:9;24732:17;24725:47;24789:131;24915:4;24789:131;:::i;:::-;24781:139;;24508:419;;;:::o;24933:224::-;25073:34;25069:1;25061:6;25057:14;25050:58;25142:7;25137:2;25129:6;25125:15;25118:32;24933:224;:::o;25163:366::-;25305:3;25326:67;25390:2;25385:3;25326:67;:::i;:::-;25319:74;;25402:93;25491:3;25402:93;:::i;:::-;25520:2;25515:3;25511:12;25504:19;;25163:366;;;:::o;25535:419::-;25701:4;25739:2;25728:9;25724:18;25716:26;;25788:9;25782:4;25778:20;25774:1;25763:9;25759:17;25752:47;25816:131;25942:4;25816:131;:::i;:::-;25808:139;;25535:419;;;:::o;25960:222::-;26100:34;26096:1;26088:6;26084:14;26077:58;26169:5;26164:2;26156:6;26152:15;26145:30;25960:222;:::o;26188:366::-;26330:3;26351:67;26415:2;26410:3;26351:67;:::i;:::-;26344:74;;26427:93;26516:3;26427:93;:::i;:::-;26545:2;26540:3;26536:12;26529:19;;26188:366;;;:::o;26560:419::-;26726:4;26764:2;26753:9;26749:18;26741:26;;26813:9;26807:4;26803:20;26799:1;26788:9;26784:17;26777:47;26841:131;26967:4;26841:131;:::i;:::-;26833:139;;26560:419;;;:::o;26985:174::-;27125:26;27121:1;27113:6;27109:14;27102:50;26985:174;:::o;27165:366::-;27307:3;27328:67;27392:2;27387:3;27328:67;:::i;:::-;27321:74;;27404:93;27493:3;27404:93;:::i;:::-;27522:2;27517:3;27513:12;27506:19;;27165:366;;;:::o;27537:419::-;27703:4;27741:2;27730:9;27726:18;27718:26;;27790:9;27784:4;27780:20;27776:1;27765:9;27761:17;27754:47;27818:131;27944:4;27818:131;:::i;:::-;27810:139;;27537:419;;;:::o;27962:348::-;28002:7;28025:20;28043:1;28025:20;:::i;:::-;28020:25;;28059:20;28077:1;28059:20;:::i;:::-;28054:25;;28247:1;28179:66;28175:74;28172:1;28169:81;28164:1;28157:9;28150:17;28146:105;28143:131;;;28254:18;;:::i;:::-;28143:131;28302:1;28299;28295:9;28284:20;;27962:348;;;;:::o;28316:180::-;28364:77;28361:1;28354:88;28461:4;28458:1;28451:15;28485:4;28482:1;28475:15;28502:185;28542:1;28559:20;28577:1;28559:20;:::i;:::-;28554:25;;28593:20;28611:1;28593:20;:::i;:::-;28588:25;;28632:1;28622:35;;28637:18;;:::i;:::-;28622:35;28679:1;28676;28672:9;28667:14;;28502:185;;;;:::o;28693:191::-;28733:4;28753:20;28771:1;28753:20;:::i;:::-;28748:25;;28787:20;28805:1;28787:20;:::i;:::-;28782:25;;28826:1;28823;28820:8;28817:34;;;28831:18;;:::i;:::-;28817:34;28876:1;28873;28869:9;28861:17;;28693:191;;;;:::o;28890:225::-;29030:34;29026:1;29018:6;29014:14;29007:58;29099:8;29094:2;29086:6;29082:15;29075:33;28890:225;:::o;29121:366::-;29263:3;29284:67;29348:2;29343:3;29284:67;:::i;:::-;29277:74;;29360:93;29449:3;29360:93;:::i;:::-;29478:2;29473:3;29469:12;29462:19;;29121:366;;;:::o;29493:419::-;29659:4;29697:2;29686:9;29682:18;29674:26;;29746:9;29740:4;29736:20;29732:1;29721:9;29717:17;29710:47;29774:131;29900:4;29774:131;:::i;:::-;29766:139;;29493:419;;;:::o;29918:179::-;30058:31;30054:1;30046:6;30042:14;30035:55;29918:179;:::o;30103:366::-;30245:3;30266:67;30330:2;30325:3;30266:67;:::i;:::-;30259:74;;30342:93;30431:3;30342:93;:::i;:::-;30460:2;30455:3;30451:12;30444:19;;30103:366;;;:::o;30475:419::-;30641:4;30679:2;30668:9;30664:18;30656:26;;30728:9;30722:4;30718:20;30714:1;30703:9;30699:17;30692:47;30756:131;30882:4;30756:131;:::i;:::-;30748:139;;30475:419;;;:::o;30900:147::-;31001:11;31038:3;31023:18;;30900:147;;;;:::o;31053:114::-;;:::o;31173:398::-;31332:3;31353:83;31434:1;31429:3;31353:83;:::i;:::-;31346:90;;31445:93;31534:3;31445:93;:::i;:::-;31563:1;31558:3;31554:11;31547:18;;31173:398;;;:::o;31577:379::-;31761:3;31783:147;31926:3;31783:147;:::i;:::-;31776:154;;31947:3;31940:10;;31577:379;;;:::o
Swarm Source
ipfs://1d6c50b6ca83f3438567271b1ec2664ce7aed5de6736482806689d18d0edf16e
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.