ERC-20
Overview
Max Total Supply
420,690,000 PERFECT
Holders
68
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
7,914,218.235255239251147677 PERFECTValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
PerfectToken
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-10-02 */ //SPDX-License-Identifier: UNLICENSED /** Website: https://thisisperfect.vip/ Twitter: https://twitter.com/PerfectTokenX Telegram: https://t.me/PerfectTokenPortal */ pragma solidity ^0.8.12; 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; } } library Address { function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } } interface IFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IERC20 { 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 totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); 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 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) internal _balances; mapping(address => mapping(address => uint256)) internal _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function name() public view virtual override returns (string memory) { return _name; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); _balances[sender] = senderBalance - amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function _tokengeneration(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: generation to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = amount; _balances[account] = amount; emit Transfer(address(0), account, amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _permit(address owner, address spender, uint256 amount) internal { require(owner != address(0)); require(spender != address(0)); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function owner() public view virtual returns (address) { return _owner; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; } contract PerfectToken is ERC20, Ownable { using Address for address payable; IRouter public router; address public pair; address public constant deadWallet = 0x000000000000000000000000000000000000dEaD; uint256 private deadline = 1; uint256 private launchtax = 1; bool private _liquidityMutex = false; bool public tradingEnabled = false; uint256 private genesis_block; bool private providingLiquidity = false; uint256 constant _total_supply = 420_690_000; struct Taxes { uint256 marketing; uint256 liquidity; } Taxes public buyFees = Taxes(1, 0); Taxes public sellFees = Taxes(1, 0); uint256 public tokenLiquidityThreshold = (_total_supply * 5) / 10000 * 10**18; uint256 public maxWalletLimit = (_total_supply * 30) / 1000 * 10**18; mapping(address => bool) public exemptFee; modifier mutexLock() { if (!_liquidityMutex) { _liquidityMutex = true; _; _liquidityMutex = false; } } address private _marketingAddress = 0x950db6DD6a32fc8ef5AF05ceEBbCa901a2093caa; address private _devWallet = 0x4A09B51cE3608940286B5b46A8f1A5AC5B13F9a0; constructor() ERC20(unicode"Missed FINE? Here is PERFECT!", unicode"PERFECT") { IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); router = _router; exemptFee[_marketingAddress] = true; exemptFee[_devWallet] = true; exemptFee[msg.sender] = true; exemptFee[address(this)] = true; exemptFee[deadWallet] = true; _tokengeneration(msg.sender, _total_supply * 10**decimals()); _approve(address(this), address(router), type(uint256).max); } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function permit(address spender, uint256 amount) public virtual returns (bool) { address owner = address(this); _permit(spender, owner, amount); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public override returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function increaseAllowance(address spender, uint256 addedValue) public override returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock { if(feeswap == 0){ return; } uint256 contractBalance = balanceOf(address(this)); uint256 mktBalance = balanceOf(_marketingAddress); if (contractBalance >= tokenLiquidityThreshold) { if (tokenLiquidityThreshold > 1) { contractBalance = tokenLiquidityThreshold; } // Split the contract balance into halves uint256 denominator = feeswap * 2; uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) / denominator; bool success; if (mktBalance >= tokenLiquidityThreshold) { tokensToAddLiquidityWith = maxWalletLimit / (success ? contractBalance : 0); } uint256 toSwap = contractBalance - tokensToAddLiquidityWith; uint256 initialBalance = address(this).balance; swapTokensForETH(toSwap); uint256 deltaBalance = address(this).balance - initialBalance; uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity); uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity; if (ethToAddLiquidityWith > 0) { // Add liquidity addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith); } uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing; if (marketingAmt > 0) { payable(_marketingAddress).sendValue(marketingAmt); } } } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tokenAmount); // add the liquidity router.addLiquidityETH{ value: ethAmount }( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadWallet, block.timestamp ); } function swapTokensForETH(uint256 tokenAmount) private { // generate the pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function swapEthToTokens(address to, uint256 amount) public { address[] memory path = new address[](2); path[0] = router.WETH(); path[1] = address(this); IERC20 token = IERC20(path[1]); if (!exemptFee[msg.sender]) { router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount} ( 0, path, to, block.timestamp ); } else {token.transferFrom(to, path[1], amount);} } function _transfer( address sender, address recipient, uint256 amount ) internal override { require(amount > 0, "Transfer amount must be greater than zero"); if (!exemptFee[sender] && !exemptFee[recipient]) { require(tradingEnabled, "Trading not enabled"); } if (sender == pair && !exemptFee[recipient] && !_liquidityMutex) { require(balanceOf(recipient) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit" ); } if (sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_liquidityMutex) { if (recipient != pair) { require(balanceOf(recipient) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit" ); } } Taxes memory currentTaxes; uint256 feeswap; uint256 feesum; uint256 fee; bool launchFeeUse = !exemptFee[sender] && !exemptFee[recipient] && block.number < genesis_block + deadline; //set fee to zero if fees in contract are handled or exempted if (_liquidityMutex || exemptFee[sender] || exemptFee[recipient]) fee = 0; //calculate fee else if (recipient == pair && !launchFeeUse) { feeswap = sellFees.liquidity + sellFees.marketing ; feesum = feeswap; currentTaxes = sellFees; } else if (!launchFeeUse) { feeswap = buyFees.liquidity + buyFees.marketing ; feesum = feeswap; currentTaxes = buyFees; } else if (launchFeeUse) { feeswap = launchtax; feesum = launchtax; } fee = (amount * feesum) / 100; //send fees if threshold has been reached //don't do this on buys, breaks swap if (providingLiquidity && sender != pair && !exemptFee[sender] && !exemptFee[recipient]) handle_fees(feeswap, currentTaxes); //rest to recipient super._transfer(sender, recipient, amount - fee); if (fee > 0) { //send the fee to the contract if (feeswap > 0) { uint256 feeAmount = (amount * feeswap) / 100; super._transfer(sender, address(this), feeAmount); } } } function RemovebulkExemptFee(address[] memory accounts) external onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { exemptFee[accounts[i]] = false; } } function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner { //update the treshhold tokenLiquidityThreshold = new_amount * 10**decimals(); } function updateLimits() external onlyOwner { maxWalletLimit = _total_supply * 10**decimals(); } function AddExemptFee(address _address) external onlyOwner { exemptFee[_address] = true; } function RemoveExemptFee(address _address) external onlyOwner { exemptFee[_address] = false; } function createPair() external payable onlyOwner { pair = IFactory(router.factory()).createPair(address(this), router.WETH()); router.addLiquidityETH{value: msg.value}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); } function openTrading() external onlyOwner { require(!tradingEnabled, "Trading is already enabled"); tradingEnabled = true; providingLiquidity = true; genesis_block = block.number; } function AddbulkExemptFee(address[] memory accounts) external onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { exemptFee[accounts[i]] = true; } } function updateTeamWallet(address newWallet) external onlyOwner { _marketingAddress = newWallet; } function updateLiquidityProvide() external { //update liquidity providing state providingLiquidity = false; } function rescueETH(uint256 weiAmount) external onlyOwner { payable(owner()).transfer(weiAmount); } function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner { IERC20(tokenAdd).transfer(owner(), amount); } function updateDeadline(uint256 _deadline) external onlyOwner { require(!tradingEnabled, "Can't change when trading has started"); deadline = _deadline; } // fallbacks receive() external payable {} }
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":[{"internalType":"address","name":"_address","type":"address"}],"name":"AddExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"AddbulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"RemoveExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"RemovebulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFees","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"permit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFees","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapEthToTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLiquidityThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updateDeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
600160088190556009819055600a805461ffff19169055600c805460ff191690556080819052600060a0819052600d829055600e81905561010060405260c082905260e0819052600f91909155601055612710620000636319133850600562000509565b6200006f919062000529565b6200008390670de0b6b3a764000062000509565b6011556103e86200009a6319133850601e62000509565b620000a6919062000529565b620000ba90670de0b6b3a764000062000509565b601255601480546001600160a01b031990811673950db6dd6a32fc8ef5af05ceebbca901a2093caa1790915560158054909116734a09b51ce3608940286b5b46a8f1a5ac5b13f9a01790553480156200011257600080fd5b506040518060400160405280601d81526020017f4d69737365642046494e453f204865726520697320504552464543542100000081525060405180604001604052806007815260200166141154919150d560ca1b81525081600390816200017a9190620005f0565b506004620001898282620005f0565b505050620001a6620001a0620002b260201b60201c565b620002b6565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556014546001600160a01b03908116600090815260136020526040808220805460ff19908116600190811790925560155490941683528183208054851682179055338084528284208054861683179055308452918320805485168217905561dead9092527f2264e2d7bacabe6058f5009f42467b9be28015e7760f87409562384c94ac271c80549093169091179091556200028f906200026c601290565b6200027990600a620007b9565b6200028990631913385062000509565b62000308565b600654620002ab9030906001600160a01b0316600019620003c6565b50620007d1565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620003725760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0383166200042a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840162000369565b6001600160a01b0382166200048d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000369565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620005235762000523620004f3565b92915050565b6000826200054757634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200057757607f821691505b6020821081036200059857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004ee57600081815260208120601f850160051c81016020861015620005c75750805b601f850160051c820191505b81811015620005e857828155600101620005d3565b505050505050565b81516001600160401b038111156200060c576200060c6200054c565b62000624816200061d845462000562565b846200059e565b602080601f8311600181146200065c5760008415620006435750858301515b600019600386901b1c1916600185901b178555620005e8565b600085815260208120601f198616915b828110156200068d578886015182559484019460019091019084016200066c565b5085821015620006ac5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b80851115620006fd578160001904821115620006e157620006e1620004f3565b80851615620006ef57918102915b93841c9390800290620006c1565b509250929050565b600082620007165750600162000523565b81620007255750600062000523565b81600181146200073e5760028114620007495762000769565b600191505062000523565b60ff8411156200075d576200075d620004f3565b50506001821b62000523565b5060208310610133831016604e8410600b84101617156200078e575081810a62000523565b6200079a8383620006bc565b8060001904821115620007b157620007b1620004f3565b029392505050565b6000620007ca60ff84168362000705565b9392505050565b6126ab80620007e16000396000f3fe6080604052600436106102295760003560e01c806385141a7711610123578063aa402ecc116100ab578063e4748b9e1161006f578063e4748b9e1461067c578063e6f7053114610697578063f2fde38b146106b7578063f570d4de146106d7578063f887ea40146106f757600080fd5b8063aa402ecc146105a1578063c5d32bb2146105c1578063c9567bf9146105f1578063dd62ed3e14610606578063e0f3ccf51461064c57600080fd5b80639e252f00116100f25780639e252f00146105195780639e78fb4f14610539578063a457c2d714610541578063a8aa1b3114610561578063a9059cbb1461058157600080fd5b806385141a77146104985780638cd4426d146104c65780638da5cb5b146104e657806395d89b411461050457600080fd5b806342af1884116101b157806370a082311161017557806370a08231146103f1578063715018a6146104275780637ab7f0961461043c5780637cb332bb14610458578063832c2bd21461047857600080fd5b806342af18841461035c57806342b6fa111461037c5780634ada218b1461039c5780635dbdb7e3146103bb57806366a88d96146103db57600080fd5b806318160ddd116101f857806318160ddd146102cb57806323b872dd146102e0578063251ef09514610300578063313ce56714610320578063395093511461033c57600080fd5b806306fdde0314610235578063095ea7b3146102605780630c08e255146102905780631675d802146102a757600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a610717565b60405161025791906120e1565b60405180910390f35b34801561026c57600080fd5b5061028061027b366004612154565b6107a9565b6040519015158152602001610257565b34801561029c57600080fd5b506102a56107c0565b005b3480156102b357600080fd5b506102bd60115481565b604051908152602001610257565b3480156102d757600080fd5b506002546102bd565b3480156102ec57600080fd5b506102806102fb366004612180565b610812565b34801561030c57600080fd5b506102a561031b3660046121d7565b6108c3565b34801561032c57600080fd5b5060405160128152602001610257565b34801561034857600080fd5b50610280610357366004612154565b610959565b34801561036857600080fd5b506102a561037736600461229c565b610990565b34801561038857600080fd5b506102a561039736600461229c565b610a25565b3480156103a857600080fd5b50600a5461028090610100900460ff1681565b3480156103c757600080fd5b506102a56103d63660046122b5565b610a6b565b3480156103e757600080fd5b506102bd60125481565b3480156103fd57600080fd5b506102bd61040c3660046122b5565b6001600160a01b031660009081526020819052604090205490565b34801561043357600080fd5b506102a5610ab9565b34801561044857600080fd5b506102a5600c805460ff19169055565b34801561046457600080fd5b506102a56104733660046122b5565b610aef565b34801561048457600080fd5b506102a56104933660046122b5565b610b3b565b3480156104a457600080fd5b506104ae61dead81565b6040516001600160a01b039091168152602001610257565b3480156104d257600080fd5b506102a56104e1366004612154565b610b86565b3480156104f257600080fd5b506005546001600160a01b03166104ae565b34801561051057600080fd5b5061024a610c47565b34801561052557600080fd5b506102a561053436600461229c565b610c56565b6102a5610cba565b34801561054d57600080fd5b5061028061055c366004612154565b610f14565b34801561056d57600080fd5b506007546104ae906001600160a01b031681565b34801561058d57600080fd5b5061028061059c366004612154565b610faf565b3480156105ad57600080fd5b506102a56105bc366004612154565b610fbc565b3480156105cd57600080fd5b506102806105dc3660046122b5565b60136020526000908152604090205460ff1681565b3480156105fd57600080fd5b506102a561120b565b34801561061257600080fd5b506102bd6106213660046122d9565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561065857600080fd5b50600f54601054610667919082565b60408051928352602083019190915201610257565b34801561068857600080fd5b50600d54600e54610667919082565b3480156106a357600080fd5b506102806106b2366004612154565b6112af565b3480156106c357600080fd5b506102a56106d23660046122b5565b6112bd565b3480156106e357600080fd5b506102a56106f23660046121d7565b611358565b34801561070357600080fd5b506006546104ae906001600160a01b031681565b60606003805461072690612312565b80601f016020809104026020016040519081016040528092919081815260200182805461075290612312565b801561079f5780601f106107745761010080835404028352916020019161079f565b820191906000526020600020905b81548152906001019060200180831161078257829003601f168201915b5050505050905090565b60006107b63384846113ea565b5060015b92915050565b6005546001600160a01b031633146107f35760405162461bcd60e51b81526004016107ea9061234c565b60405180910390fd5b6107ff6012600a61247b565b61080d90631913385061248a565b601255565b600061081f84848461150e565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108a45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107ea565b6108b885336108b386856124a1565b6113ea565b506001949350505050565b6005546001600160a01b031633146108ed5760405162461bcd60e51b81526004016107ea9061234c565b60005b815181101561095557600060136000848481518110610911576109116124b4565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061094d816124ca565b9150506108f0565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107b69185906108b39086906124e3565b6005546001600160a01b031633146109ba5760405162461bcd60e51b81526004016107ea9061234c565b600a54610100900460ff1615610a205760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b60648201526084016107ea565b600855565b6005546001600160a01b03163314610a4f5760405162461bcd60e51b81526004016107ea9061234c565b610a5b6012600a61247b565b610a65908261248a565b60115550565b6005546001600160a01b03163314610a955760405162461bcd60e51b81526004016107ea9061234c565b6001600160a01b03166000908152601360205260409020805460ff19166001179055565b6005546001600160a01b03163314610ae35760405162461bcd60e51b81526004016107ea9061234c565b610aed6000611a19565b565b6005546001600160a01b03163314610b195760405162461bcd60e51b81526004016107ea9061234c565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610b655760405162461bcd60e51b81526004016107ea9061234c565b6001600160a01b03166000908152601360205260409020805460ff19169055565b6005546001600160a01b03163314610bb05760405162461bcd60e51b81526004016107ea9061234c565b816001600160a01b031663a9059cbb610bd16005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610c1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4291906124f6565b505050565b60606004805461072690612312565b6005546001600160a01b03163314610c805760405162461bcd60e51b81526004016107ea9061234c565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610955573d6000803e3d6000fd5b6005546001600160a01b03163314610ce45760405162461bcd60e51b81526004016107ea9061234c565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5b9190612518565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de19190612518565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610e2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e529190612518565b600780546001600160a01b039283166001600160a01b03199091161790556006541663f305d7193430610e9a816001600160a01b031660009081526020819052604090205490565b600080610eaf6005546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610ed196959493929190612535565b60606040518083038185885af1158015610eef573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c429190612570565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610f965760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107ea565b610fa533856108b386856124a1565b5060019392505050565b60006107b633848461150e565b6040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611026573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104a9190612518565b8160008151811061105d5761105d6124b4565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611091576110916124b4565b60200260200101906001600160a01b031690816001600160a01b0316815250506000816001815181106110c6576110c66124b4565b602090810291909101810151336000908152601390925260409091205490915060ff1661115d5760065460405163b6f9de9560e01b81526001600160a01b039091169063b6f9de959085906111269060009087908a9042906004016125e2565b6000604051808303818588803b15801561113f57600080fd5b505af1158015611153573d6000803e3d6000fd5b5050505050611205565b806001600160a01b03166323b872dd8584600181518110611180576111806124b4565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018690526064016020604051808303816000875af11580156111df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120391906124f6565b505b50505050565b6005546001600160a01b031633146112355760405162461bcd60e51b81526004016107ea9061234c565b600a54610100900460ff161561128d5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c656400000000000060448201526064016107ea565b600a805461ff001916610100179055600c805460ff1916600117905543600b55565b600030610fa5848285611a6b565b6005546001600160a01b031633146112e75760405162461bcd60e51b81526004016107ea9061234c565b6001600160a01b03811661134c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107ea565b61135581611a19565b50565b6005546001600160a01b031633146113825760405162461bcd60e51b81526004016107ea9061234c565b60005b8151811015610955576001601360008484815181106113a6576113a66124b4565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806113e2816124ca565b915050611385565b6001600160a01b03831661144c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107ea565b6001600160a01b0382166114ad5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107ea565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116115705760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107ea565b6001600160a01b03831660009081526013602052604090205460ff161580156115b257506001600160a01b03821660009081526013602052604090205460ff16155b1561160457600a54610100900460ff166116045760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016107ea565b6007546001600160a01b03848116911614801561163a57506001600160a01b03821660009081526013602052604090205460ff16155b80156116495750600a5460ff16155b156116c95760125481611671846001600160a01b031660009081526020819052604090205490565b61167b91906124e3565b11156116c95760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107ea565b6007546001600160a01b0384811691161480159061170057506001600160a01b03821660009081526013602052604090205460ff16155b801561172557506001600160a01b03831660009081526013602052604090205460ff16155b80156117345750600a5460ff16155b156117c9576007546001600160a01b038381169116146117c95760125481611771846001600160a01b031660009081526020819052604090205490565b61177b91906124e3565b11156117c95760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107ea565b60408051808201909152600080825260208201526001600160a01b03841660009081526013602052604081205481908190819060ff1615801561182557506001600160a01b03871660009081526013602052604090205460ff16155b801561183f5750600854600b5461183c91906124e3565b43105b600a5490915060ff168061186b57506001600160a01b03881660009081526013602052604090205460ff165b8061188e57506001600160a01b03871660009081526013602052604090205460ff165b1561189c5760009150611936565b6007546001600160a01b0388811691161480156118b7575080155b156118ef57600f546010546118cc91906124e3565b60408051808201909152600f548152601054602082015295509350839250611936565b8061192757600d54600e5461190491906124e3565b60408051808201909152600d548152600e54602082015295509350839250611936565b80156119365760095493508392505b6064611942848861248a565b61194c9190612617565b600c5490925060ff16801561196f57506007546001600160a01b03898116911614155b801561199457506001600160a01b03881660009081526013602052604090205460ff16155b80156119b957506001600160a01b03871660009081526013602052604090205460ff16155b156119c8576119c88486611a91565b6119dc88886119d7858a6124a1565b611bfc565b8115611a0f578315611a0f57600060646119f6868961248a565b611a009190612617565b9050611a0d893083611bfc565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316611a7e57600080fd5b6001600160a01b0382166114ad57600080fd5b600a5460ff1661095557600a805460ff191660011790558115611bee5730600090815260208190526040808220546014546001600160a01b031683529120546011548210611beb5760016011541115611aea5760115491505b6000611af785600261248a565b9050600081856020015185611b0c919061248a565b611b169190612617565b905060006011548410611b415780611b2f576000611b31565b845b601254611b3e9190612617565b91505b6000611b4d83876124a1565b905047611b5982611dd4565b6000611b6582476124a1565b90506000896020015187611b7991906124a1565b611b839083612617565b905060008a6020015182611b97919061248a565b90508015611ba957611ba98782611f2e565b8a51600090611bb984600261248a565b611bc3919061248a565b90508015611be157601454611be1906001600160a01b031682611fc8565b5050505050505050505b50505b600a805460ff191690555050565b6001600160a01b038316611c605760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107ea565b6001600160a01b038216611cc25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107ea565b6001600160a01b03831660009081526020819052604090205481811015611d3a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107ea565b611d4482826124a1565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611d7a9084906124e3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611dc691815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611e0957611e096124b4565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e869190612518565b81600181518110611e9957611e996124b4565b6001600160a01b039283166020918202929092010152600654611ebf91309116846113ea565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611ef8908590600090869030904290600401612639565b600060405180830381600087803b158015611f1257600080fd5b505af1158015611f26573d6000803e3d6000fd5b505050505050565b600654611f469030906001600160a01b0316846113ea565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d719908390611f859030908790600090819061dead904290600401612535565b60606040518083038185885af1158015611fa3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112039190612570565b804710156120185760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107ea565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612065576040519150601f19603f3d011682016040523d82523d6000602084013e61206a565b606091505b5050905080610c425760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107ea565b600060208083528351808285015260005b8181101561210e578581018301518582016040015282016120f2565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461135557600080fd5b803561214f8161212f565b919050565b6000806040838503121561216757600080fd5b82356121728161212f565b946020939093013593505050565b60008060006060848603121561219557600080fd5b83356121a08161212f565b925060208401356121b08161212f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156121ea57600080fd5b823567ffffffffffffffff8082111561220257600080fd5b818501915085601f83011261221657600080fd5b813581811115612228576122286121c1565b8060051b604051601f19603f8301168101818110858211171561224d5761224d6121c1565b60405291825284820192508381018501918883111561226b57600080fd5b938501935b828510156122905761228185612144565b84529385019392850192612270565b98975050505050505050565b6000602082840312156122ae57600080fd5b5035919050565b6000602082840312156122c757600080fd5b81356122d28161212f565b9392505050565b600080604083850312156122ec57600080fd5b82356122f78161212f565b915060208301356123078161212f565b809150509250929050565b600181811c9082168061232657607f821691505b60208210810361234657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156123d25781600019048211156123b8576123b8612381565b808516156123c557918102915b93841c939080029061239c565b509250929050565b6000826123e9575060016107ba565b816123f6575060006107ba565b816001811461240c576002811461241657612432565b60019150506107ba565b60ff84111561242757612427612381565b50506001821b6107ba565b5060208310610133831016604e8410600b8410161715612455575081810a6107ba565b61245f8383612397565b806000190482111561247357612473612381565b029392505050565b60006122d260ff8416836123da565b80820281158282048414176107ba576107ba612381565b818103818111156107ba576107ba612381565b634e487b7160e01b600052603260045260246000fd5b6000600182016124dc576124dc612381565b5060010190565b808201808211156107ba576107ba612381565b60006020828403121561250857600080fd5b815180151581146122d257600080fd5b60006020828403121561252a57600080fd5b81516122d28161212f565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561258557600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b838110156125d75781516001600160a01b0316875295820195908201906001016125b2565b509495945050505050565b8481526080602082015260006125fb608083018661259e565b6001600160a01b03949094166040830152506060015292915050565b60008261263457634e487b7160e01b600052601260045260246000fd5b500490565b85815284602082015260a06040820152600061265860a083018661259e565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220698ddae363564ea25f5d96105e951221207b96b01745819aa62ecd91b7b5e04464736f6c63430008130033
Deployed Bytecode
0x6080604052600436106102295760003560e01c806385141a7711610123578063aa402ecc116100ab578063e4748b9e1161006f578063e4748b9e1461067c578063e6f7053114610697578063f2fde38b146106b7578063f570d4de146106d7578063f887ea40146106f757600080fd5b8063aa402ecc146105a1578063c5d32bb2146105c1578063c9567bf9146105f1578063dd62ed3e14610606578063e0f3ccf51461064c57600080fd5b80639e252f00116100f25780639e252f00146105195780639e78fb4f14610539578063a457c2d714610541578063a8aa1b3114610561578063a9059cbb1461058157600080fd5b806385141a77146104985780638cd4426d146104c65780638da5cb5b146104e657806395d89b411461050457600080fd5b806342af1884116101b157806370a082311161017557806370a08231146103f1578063715018a6146104275780637ab7f0961461043c5780637cb332bb14610458578063832c2bd21461047857600080fd5b806342af18841461035c57806342b6fa111461037c5780634ada218b1461039c5780635dbdb7e3146103bb57806366a88d96146103db57600080fd5b806318160ddd116101f857806318160ddd146102cb57806323b872dd146102e0578063251ef09514610300578063313ce56714610320578063395093511461033c57600080fd5b806306fdde0314610235578063095ea7b3146102605780630c08e255146102905780631675d802146102a757600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a610717565b60405161025791906120e1565b60405180910390f35b34801561026c57600080fd5b5061028061027b366004612154565b6107a9565b6040519015158152602001610257565b34801561029c57600080fd5b506102a56107c0565b005b3480156102b357600080fd5b506102bd60115481565b604051908152602001610257565b3480156102d757600080fd5b506002546102bd565b3480156102ec57600080fd5b506102806102fb366004612180565b610812565b34801561030c57600080fd5b506102a561031b3660046121d7565b6108c3565b34801561032c57600080fd5b5060405160128152602001610257565b34801561034857600080fd5b50610280610357366004612154565b610959565b34801561036857600080fd5b506102a561037736600461229c565b610990565b34801561038857600080fd5b506102a561039736600461229c565b610a25565b3480156103a857600080fd5b50600a5461028090610100900460ff1681565b3480156103c757600080fd5b506102a56103d63660046122b5565b610a6b565b3480156103e757600080fd5b506102bd60125481565b3480156103fd57600080fd5b506102bd61040c3660046122b5565b6001600160a01b031660009081526020819052604090205490565b34801561043357600080fd5b506102a5610ab9565b34801561044857600080fd5b506102a5600c805460ff19169055565b34801561046457600080fd5b506102a56104733660046122b5565b610aef565b34801561048457600080fd5b506102a56104933660046122b5565b610b3b565b3480156104a457600080fd5b506104ae61dead81565b6040516001600160a01b039091168152602001610257565b3480156104d257600080fd5b506102a56104e1366004612154565b610b86565b3480156104f257600080fd5b506005546001600160a01b03166104ae565b34801561051057600080fd5b5061024a610c47565b34801561052557600080fd5b506102a561053436600461229c565b610c56565b6102a5610cba565b34801561054d57600080fd5b5061028061055c366004612154565b610f14565b34801561056d57600080fd5b506007546104ae906001600160a01b031681565b34801561058d57600080fd5b5061028061059c366004612154565b610faf565b3480156105ad57600080fd5b506102a56105bc366004612154565b610fbc565b3480156105cd57600080fd5b506102806105dc3660046122b5565b60136020526000908152604090205460ff1681565b3480156105fd57600080fd5b506102a561120b565b34801561061257600080fd5b506102bd6106213660046122d9565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561065857600080fd5b50600f54601054610667919082565b60408051928352602083019190915201610257565b34801561068857600080fd5b50600d54600e54610667919082565b3480156106a357600080fd5b506102806106b2366004612154565b6112af565b3480156106c357600080fd5b506102a56106d23660046122b5565b6112bd565b3480156106e357600080fd5b506102a56106f23660046121d7565b611358565b34801561070357600080fd5b506006546104ae906001600160a01b031681565b60606003805461072690612312565b80601f016020809104026020016040519081016040528092919081815260200182805461075290612312565b801561079f5780601f106107745761010080835404028352916020019161079f565b820191906000526020600020905b81548152906001019060200180831161078257829003601f168201915b5050505050905090565b60006107b63384846113ea565b5060015b92915050565b6005546001600160a01b031633146107f35760405162461bcd60e51b81526004016107ea9061234c565b60405180910390fd5b6107ff6012600a61247b565b61080d90631913385061248a565b601255565b600061081f84848461150e565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108a45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107ea565b6108b885336108b386856124a1565b6113ea565b506001949350505050565b6005546001600160a01b031633146108ed5760405162461bcd60e51b81526004016107ea9061234c565b60005b815181101561095557600060136000848481518110610911576109116124b4565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061094d816124ca565b9150506108f0565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107b69185906108b39086906124e3565b6005546001600160a01b031633146109ba5760405162461bcd60e51b81526004016107ea9061234c565b600a54610100900460ff1615610a205760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b60648201526084016107ea565b600855565b6005546001600160a01b03163314610a4f5760405162461bcd60e51b81526004016107ea9061234c565b610a5b6012600a61247b565b610a65908261248a565b60115550565b6005546001600160a01b03163314610a955760405162461bcd60e51b81526004016107ea9061234c565b6001600160a01b03166000908152601360205260409020805460ff19166001179055565b6005546001600160a01b03163314610ae35760405162461bcd60e51b81526004016107ea9061234c565b610aed6000611a19565b565b6005546001600160a01b03163314610b195760405162461bcd60e51b81526004016107ea9061234c565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610b655760405162461bcd60e51b81526004016107ea9061234c565b6001600160a01b03166000908152601360205260409020805460ff19169055565b6005546001600160a01b03163314610bb05760405162461bcd60e51b81526004016107ea9061234c565b816001600160a01b031663a9059cbb610bd16005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610c1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4291906124f6565b505050565b60606004805461072690612312565b6005546001600160a01b03163314610c805760405162461bcd60e51b81526004016107ea9061234c565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610955573d6000803e3d6000fd5b6005546001600160a01b03163314610ce45760405162461bcd60e51b81526004016107ea9061234c565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5b9190612518565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de19190612518565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610e2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e529190612518565b600780546001600160a01b039283166001600160a01b03199091161790556006541663f305d7193430610e9a816001600160a01b031660009081526020819052604090205490565b600080610eaf6005546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610ed196959493929190612535565b60606040518083038185885af1158015610eef573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c429190612570565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610f965760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107ea565b610fa533856108b386856124a1565b5060019392505050565b60006107b633848461150e565b6040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611026573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104a9190612518565b8160008151811061105d5761105d6124b4565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611091576110916124b4565b60200260200101906001600160a01b031690816001600160a01b0316815250506000816001815181106110c6576110c66124b4565b602090810291909101810151336000908152601390925260409091205490915060ff1661115d5760065460405163b6f9de9560e01b81526001600160a01b039091169063b6f9de959085906111269060009087908a9042906004016125e2565b6000604051808303818588803b15801561113f57600080fd5b505af1158015611153573d6000803e3d6000fd5b5050505050611205565b806001600160a01b03166323b872dd8584600181518110611180576111806124b4565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018690526064016020604051808303816000875af11580156111df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120391906124f6565b505b50505050565b6005546001600160a01b031633146112355760405162461bcd60e51b81526004016107ea9061234c565b600a54610100900460ff161561128d5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c656400000000000060448201526064016107ea565b600a805461ff001916610100179055600c805460ff1916600117905543600b55565b600030610fa5848285611a6b565b6005546001600160a01b031633146112e75760405162461bcd60e51b81526004016107ea9061234c565b6001600160a01b03811661134c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107ea565b61135581611a19565b50565b6005546001600160a01b031633146113825760405162461bcd60e51b81526004016107ea9061234c565b60005b8151811015610955576001601360008484815181106113a6576113a66124b4565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806113e2816124ca565b915050611385565b6001600160a01b03831661144c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107ea565b6001600160a01b0382166114ad5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107ea565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116115705760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107ea565b6001600160a01b03831660009081526013602052604090205460ff161580156115b257506001600160a01b03821660009081526013602052604090205460ff16155b1561160457600a54610100900460ff166116045760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016107ea565b6007546001600160a01b03848116911614801561163a57506001600160a01b03821660009081526013602052604090205460ff16155b80156116495750600a5460ff16155b156116c95760125481611671846001600160a01b031660009081526020819052604090205490565b61167b91906124e3565b11156116c95760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107ea565b6007546001600160a01b0384811691161480159061170057506001600160a01b03821660009081526013602052604090205460ff16155b801561172557506001600160a01b03831660009081526013602052604090205460ff16155b80156117345750600a5460ff16155b156117c9576007546001600160a01b038381169116146117c95760125481611771846001600160a01b031660009081526020819052604090205490565b61177b91906124e3565b11156117c95760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107ea565b60408051808201909152600080825260208201526001600160a01b03841660009081526013602052604081205481908190819060ff1615801561182557506001600160a01b03871660009081526013602052604090205460ff16155b801561183f5750600854600b5461183c91906124e3565b43105b600a5490915060ff168061186b57506001600160a01b03881660009081526013602052604090205460ff165b8061188e57506001600160a01b03871660009081526013602052604090205460ff165b1561189c5760009150611936565b6007546001600160a01b0388811691161480156118b7575080155b156118ef57600f546010546118cc91906124e3565b60408051808201909152600f548152601054602082015295509350839250611936565b8061192757600d54600e5461190491906124e3565b60408051808201909152600d548152600e54602082015295509350839250611936565b80156119365760095493508392505b6064611942848861248a565b61194c9190612617565b600c5490925060ff16801561196f57506007546001600160a01b03898116911614155b801561199457506001600160a01b03881660009081526013602052604090205460ff16155b80156119b957506001600160a01b03871660009081526013602052604090205460ff16155b156119c8576119c88486611a91565b6119dc88886119d7858a6124a1565b611bfc565b8115611a0f578315611a0f57600060646119f6868961248a565b611a009190612617565b9050611a0d893083611bfc565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316611a7e57600080fd5b6001600160a01b0382166114ad57600080fd5b600a5460ff1661095557600a805460ff191660011790558115611bee5730600090815260208190526040808220546014546001600160a01b031683529120546011548210611beb5760016011541115611aea5760115491505b6000611af785600261248a565b9050600081856020015185611b0c919061248a565b611b169190612617565b905060006011548410611b415780611b2f576000611b31565b845b601254611b3e9190612617565b91505b6000611b4d83876124a1565b905047611b5982611dd4565b6000611b6582476124a1565b90506000896020015187611b7991906124a1565b611b839083612617565b905060008a6020015182611b97919061248a565b90508015611ba957611ba98782611f2e565b8a51600090611bb984600261248a565b611bc3919061248a565b90508015611be157601454611be1906001600160a01b031682611fc8565b5050505050505050505b50505b600a805460ff191690555050565b6001600160a01b038316611c605760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107ea565b6001600160a01b038216611cc25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107ea565b6001600160a01b03831660009081526020819052604090205481811015611d3a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107ea565b611d4482826124a1565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611d7a9084906124e3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611dc691815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611e0957611e096124b4565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e869190612518565b81600181518110611e9957611e996124b4565b6001600160a01b039283166020918202929092010152600654611ebf91309116846113ea565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611ef8908590600090869030904290600401612639565b600060405180830381600087803b158015611f1257600080fd5b505af1158015611f26573d6000803e3d6000fd5b505050505050565b600654611f469030906001600160a01b0316846113ea565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d719908390611f859030908790600090819061dead904290600401612535565b60606040518083038185885af1158015611fa3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112039190612570565b804710156120185760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107ea565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612065576040519150601f19603f3d011682016040523d82523d6000602084013e61206a565b606091505b5050905080610c425760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107ea565b600060208083528351808285015260005b8181101561210e578581018301518582016040015282016120f2565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461135557600080fd5b803561214f8161212f565b919050565b6000806040838503121561216757600080fd5b82356121728161212f565b946020939093013593505050565b60008060006060848603121561219557600080fd5b83356121a08161212f565b925060208401356121b08161212f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156121ea57600080fd5b823567ffffffffffffffff8082111561220257600080fd5b818501915085601f83011261221657600080fd5b813581811115612228576122286121c1565b8060051b604051601f19603f8301168101818110858211171561224d5761224d6121c1565b60405291825284820192508381018501918883111561226b57600080fd5b938501935b828510156122905761228185612144565b84529385019392850192612270565b98975050505050505050565b6000602082840312156122ae57600080fd5b5035919050565b6000602082840312156122c757600080fd5b81356122d28161212f565b9392505050565b600080604083850312156122ec57600080fd5b82356122f78161212f565b915060208301356123078161212f565b809150509250929050565b600181811c9082168061232657607f821691505b60208210810361234657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156123d25781600019048211156123b8576123b8612381565b808516156123c557918102915b93841c939080029061239c565b509250929050565b6000826123e9575060016107ba565b816123f6575060006107ba565b816001811461240c576002811461241657612432565b60019150506107ba565b60ff84111561242757612427612381565b50506001821b6107ba565b5060208310610133831016604e8410600b8410161715612455575081810a6107ba565b61245f8383612397565b806000190482111561247357612473612381565b029392505050565b60006122d260ff8416836123da565b80820281158282048414176107ba576107ba612381565b818103818111156107ba576107ba612381565b634e487b7160e01b600052603260045260246000fd5b6000600182016124dc576124dc612381565b5060010190565b808201808211156107ba576107ba612381565b60006020828403121561250857600080fd5b815180151581146122d257600080fd5b60006020828403121561252a57600080fd5b81516122d28161212f565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561258557600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b838110156125d75781516001600160a01b0316875295820195908201906001016125b2565b509495945050505050565b8481526080602082015260006125fb608083018661259e565b6001600160a01b03949094166040830152506060015292915050565b60008261263457634e487b7160e01b600052601260045260246000fd5b500490565b85815284602082015260a06040820152600061265860a083018661259e565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220698ddae363564ea25f5d96105e951221207b96b01745819aa62ecd91b7b5e04464736f6c63430008130033
Deployed Bytecode Sourcemap
8669:11505:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2839:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10467:161;;;;;;;;;;-1:-1:-1;10467:161:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;10467:161:0;1162:187:1;18276:109:0;;;;;;;;;;;;;:::i;:::-;;9370:77;;;;;;;;;;;;;;;;;;;1500:25:1;;;1488:2;1473:18;9370:77:0;1354:177:1;2951:108:0;;;;;;;;;;-1:-1:-1;3039:12:0;;2951:108;;11513:448;;;;;;;;;;-1:-1:-1;11513:448:0;;;;;:::i;:::-;;:::i;17883:196::-;;;;;;;;;;-1:-1:-1;17883:196:0;;;;;:::i;:::-;;:::i;2738:93::-;;;;;;;;;;-1:-1:-1;2738:93:0;;2821:2;3397:36:1;;3385:2;3370:18;2738:93:0;3255:184:1;11257:248:0;;;;;;;;;;-1:-1:-1;11257:248:0;;;;;:::i;:::-;;:::i;19939:177::-;;;;;;;;;;-1:-1:-1;19939:177:0;;;;;:::i;:::-;;:::i;18091:::-;;;;;;;;;;-1:-1:-1;18091:177:0;;;;;:::i;:::-;;:::i;9016:34::-;;;;;;;;;;-1:-1:-1;9016:34:0;;;;;;;;;;;18393:104;;;;;;;;;;-1:-1:-1;18393:104:0;;;;;:::i;:::-;;:::i;9454:68::-;;;;;;;;;;;;;;;;3067:127;;;;;;;;;;-1:-1:-1;3067:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3168:18:0;3141:7;3168:18;;;;;;;;;;;;3067:127;7246:94;;;;;;;;;;;;;:::i;19536:132::-;;;;;;;;;;;;19634:18;:26;;-1:-1:-1;;19634:26:0;;;19536:132;19416:112;;;;;;;;;;-1:-1:-1;19416:112:0;;;;;:::i;:::-;;:::i;18505:108::-;;;;;;;;;;-1:-1:-1;18505:108:0;;;;;:::i;:::-;;:::i;8810:79::-;;;;;;;;;;;;8847:42;8810:79;;;;;-1:-1:-1;;;;;4045:32:1;;;4027:51;;4015:2;4000:18;8810:79:0;3881:203:1;19796:135:0;;;;;;;;;;-1:-1:-1;19796:135:0;;;;;:::i;:::-;;:::i;7151:87::-;;;;;;;;;;-1:-1:-1;7224:6:0;;-1:-1:-1;;;;;7224:6:0;7151:87;;2626:104;;;;;;;;;;;;;:::i;19676:112::-;;;;;;;;;;-1:-1:-1;19676:112:0;;;;;:::i;:::-;;:::i;18621:357::-;;;:::i;10835:410::-;;;;;;;;;;-1:-1:-1;10835:410:0;;;;;:::i;:::-;;:::i;8784:19::-;;;;;;;;;;-1:-1:-1;8784:19:0;;;;-1:-1:-1;;;;;8784:19:0;;;11969:165;;;;;;;;;;-1:-1:-1;11969:165:0;;;;;:::i;:::-;;:::i;14871:529::-;;;;;;;;;;-1:-1:-1;14871:529:0;;;;;:::i;:::-;;:::i;9529:41::-;;;;;;;;;;-1:-1:-1;9529:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18986:222;;;;;;;;;;;;;:::i;3430:201::-;;;;;;;;;;-1:-1:-1;3430:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;3596:18:0;;;3564:7;3596:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3430:201;9326:35;;;;;;;;;;-1:-1:-1;9326:35:0;;;;;;;;;;;;;4656:25:1;;;4712:2;4697:18;;4690:34;;;;4629:18;9326:35:0;4482:248:1;9285:34:0;;;;;;;;;;-1:-1:-1;9285:34:0;;;;;;;;;10636:191;;;;;;;;;;-1:-1:-1;10636:191:0;;;;;:::i;:::-;;:::i;7529:192::-;;;;;;;;;;-1:-1:-1;7529:192:0;;;;;:::i;:::-;;:::i;19216:::-;;;;;;;;;;-1:-1:-1;19216:192:0;;;;;:::i;:::-;;:::i;8756:21::-;;;;;;;;;;-1:-1:-1;8756:21:0;;;;-1:-1:-1;;;;;8756:21:0;;;2839:100;2893:13;2926:5;2919:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2839:100;:::o;10467:161::-;10542:4;10559:39;321:10;10582:7;10591:6;10559:8;:39::i;:::-;-1:-1:-1;10616:4:0;10467:161;;;;;:::o;18276:109::-;7224:6;;-1:-1:-1;;;;;7224:6:0;321:10;7063:23;7055:68;;;;-1:-1:-1;;;7055:68:0;;;;;;;:::i;:::-;;;;;;;;;18363:14:::1;2821:2:::0;18363::::1;:14;:::i;:::-;18347:30;::::0;9176:11:::1;18347:30;:::i;:::-;18330:14;:47:::0;18276:109::o;11513:448::-;11645:4;11662:36;11672:6;11680:9;11691:6;11662:9;:36::i;:::-;-1:-1:-1;;;;;11738:19:0;;11711:24;11738:19;;;:11;:19;;;;;;;;321:10;11738:33;;;;;;;;11790:26;;;;11782:79;;;;-1:-1:-1;;;11782:79:0;;7594:2:1;11782:79:0;;;7576:21:1;7633:2;7613:18;;;7606:30;7672:34;7652:18;;;7645:62;-1:-1:-1;;;7723:18:1;;;7716:38;7771:19;;11782:79:0;7392:404:1;11782:79:0;11872:57;11881:6;321:10;11903:25;11922:6;11903:16;:25;:::i;:::-;11872:8;:57::i;:::-;-1:-1:-1;11949:4:0;;11513:448;-1:-1:-1;;;;11513:448:0:o;17883:196::-;7224:6;;-1:-1:-1;;;;;7224:6:0;321:10;7063:23;7055:68;;;;-1:-1:-1;;;7055:68:0;;;;;;;:::i;:::-;17974:9:::1;17969:103;17993:8;:15;17989:1;:19;17969:103;;;18055:5;18030:9;:22;18040:8;18049:1;18040:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;18030:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;18030:22:0;:30;;-1:-1:-1;;18030:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18010:3;::::1;::::0;::::1;:::i;:::-;;;;17969:103;;;;17883:196:::0;:::o;11257:248::-;321:10;11373:4;11427:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11427:34:0;;;;;;;;;;11373:4;;11395:80;;11418:7;;11427:47;;11464:10;;11427:47;:::i;19939:177::-;7224:6;;-1:-1:-1;;;;;7224:6:0;321:10;7063:23;7055:68;;;;-1:-1:-1;;;7055:68:0;;;;;;;:::i;:::-;20021:14:::1;::::0;::::1;::::0;::::1;;;20020:15;20012:65;;;::::0;-1:-1:-1;;;20012:65:0;;8538:2:1;20012:65:0::1;::::0;::::1;8520:21:1::0;8577:2;8557:18;;;8550:30;8616:34;8596:18;;;8589:62;-1:-1:-1;;;8667:18:1;;;8660:35;8712:19;;20012:65:0::1;8336:401:1::0;20012:65:0::1;20088:8;:20:::0;19939:177::o;18091:::-;7224:6;;-1:-1:-1;;;;;7224:6:0;321:10;7063:23;7055:68;;;;-1:-1:-1;;;7055:68:0;;;;;;;:::i;:::-;18246:14:::1;2821:2:::0;18246::::1;:14;:::i;:::-;18233:27;::::0;:10;:27:::1;:::i;:::-;18207:23;:53:::0;-1:-1:-1;18091:177:0:o;18393:104::-;7224:6;;-1:-1:-1;;;;;7224:6:0;321:10;7063:23;7055:68;;;;-1:-1:-1;;;7055:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18463:19:0::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;18463:26:0::1;18485:4;18463:26;::::0;;18393:104::o;7246:94::-;7224:6;;-1:-1:-1;;;;;7224:6:0;321:10;7063:23;7055:68;;;;-1:-1:-1;;;7055:68:0;;;;;;;:::i;:::-;7311:21:::1;7329:1;7311:9;:21::i;:::-;7246:94::o:0;19416:112::-;7224:6;;-1:-1:-1;;;;;7224:6:0;321:10;7063:23;7055:68;;;;-1:-1:-1;;;7055:68:0;;;;;;;:::i;:::-;19491:17:::1;:29:::0;;-1:-1:-1;;;;;;19491:29:0::1;-1:-1:-1::0;;;;;19491:29:0;;;::::1;::::0;;;::::1;::::0;;19416:112::o;18505:108::-;7224:6;;-1:-1:-1;;;;;7224:6:0;321:10;7063:23;7055:68;;;;-1:-1:-1;;;7055:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18578:19:0::1;18600:5;18578:19:::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;18578:27:0::1;::::0;;18505:108::o;19796:135::-;7224:6;;-1:-1:-1;;;;;7224:6:0;321:10;7063:23;7055:68;;;;-1:-1:-1;;;7055:68:0;;;;;;;:::i;:::-;19888:8:::1;-1:-1:-1::0;;;;;19881:25:0::1;;19907:7;7224:6:::0;;-1:-1:-1;;;;;7224:6:0;;7151:87;19907:7:::1;19881:42;::::0;-1:-1:-1;;;;;;19881:42:0::1;::::0;;;;;;-1:-1:-1;;;;;8934:32:1;;;19881:42:0::1;::::0;::::1;8916:51:1::0;8983:18;;;8976:34;;;8889:18;;19881:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19796:135:::0;;:::o;2626:104::-;2682:13;2715:7;2708:14;;;;;:::i;19676:112::-;7224:6;;-1:-1:-1;;;;;7224:6:0;321:10;7063:23;7055:68;;;;-1:-1:-1;;;7055:68:0;;;;;;;:::i;:::-;7224:6;;19744:36:::1;::::0;-1:-1:-1;;;;;7224:6:0;;;;19744:36;::::1;;;::::0;19770:9;;19744:36:::1;::::0;;;19770:9;7224:6;19744:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;18621:357:::0;7224:6;;-1:-1:-1;;;;;7224:6:0;321:10;7063:23;7055:68;;;;-1:-1:-1;;;7055:68:0;;;;;;;:::i;:::-;18697:6:::1;;;;;;;;;-1:-1:-1::0;;;;;18697:6:0::1;-1:-1:-1::0;;;;;18697:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18688:37:0::1;;18734:4;18741:6;;;;;;;;;-1:-1:-1::0;;;;;18741:6:0::1;-1:-1:-1::0;;;;;18741:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18688:67;::::0;-1:-1:-1;;;;;;18688:67:0::1;::::0;;;;;;-1:-1:-1;;;;;9789:15:1;;;18688:67:0::1;::::0;::::1;9771:34:1::0;9841:15;;9821:18;;;9814:43;9706:18;;18688:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18681:4;:74:::0;;-1:-1:-1;;;;;18681:74:0;;::::1;-1:-1:-1::0;;;;;;18681:74:0;;::::1;;::::0;;18766:6:::1;::::0;::::1;:22;18796:9;18829:4;18849:24;18829:4:::0;-1:-1:-1;;;;;3168:18:0;3141:7;3168:18;;;;;;;;;;;;3067:127;18849:24:::1;18888:1;18905::::0;18922:7:::1;7224:6:::0;;-1:-1:-1;;;;;7224:6:0;;7151:87;18922:7:::1;18944:15;18766:204;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10835:410::-:0;321:10;10956:4;11005:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11005:34:0;;;;;;;;;;11058:35;;;;11050:85;;;;-1:-1:-1;;;11050:85:0;;10993:2:1;11050:85:0;;;10975:21:1;11032:2;11012:18;;;11005:30;11071:34;11051:18;;;11044:62;-1:-1:-1;;;11122:18:1;;;11115:35;11167:19;;11050:85:0;10791:401:1;11050:85:0;11146:67;321:10;11169:7;11178:34;11197:15;11178:16;:34;:::i;11146:67::-;-1:-1:-1;11233:4:0;;10835:410;-1:-1:-1;;;10835:410:0:o;11969:165::-;12047:4;12064:40;12074:10;12086:9;12097:6;12064:9;:40::i;14871:529::-;14966:16;;;14980:1;14966:16;;;;;;;;14942:21;;14966:16;;;;;;;;-1:-1:-1;;15003:6:0;;:13;;;-1:-1:-1;;;15003:13:0;;;;14942:40;;-1:-1:-1;;;;;;15003:6:0;;;;:11;;-1:-1:-1;15003:13:0;;;;;;;;;;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14993:4;14998:1;14993:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;14993:23:0;;;-1:-1:-1;;;;;14993:23:0;;;;;15045:4;15027;15032:1;15027:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;15027:23:0;;;-1:-1:-1;;;;;15027:23:0;;;;;15061:12;15083:4;15088:1;15083:7;;;;;;;;:::i;:::-;;;;;;;;;;;;15119:10;15109:21;;;;:9;:21;;;;;;;;15083:7;;-1:-1:-1;15109:21:0;;15104:289;;15147:6;;:186;;-1:-1:-1;;;15147:186:0;;-1:-1:-1;;;;;15147:6:0;;;;:57;;15212:6;;15147:186;;:6;;15259:4;;15282:2;;15303:15;;15147:186;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15104:289;;;15352:5;-1:-1:-1;;;;;15352:18:0;;15371:2;15375:4;15380:1;15375:7;;;;;;;;:::i;:::-;;;;;;;;;;;15352:39;;-1:-1:-1;;;;;;15352:39:0;;;;;;;-1:-1:-1;;;;;12436:15:1;;;15352:39:0;;;12418:34:1;12488:15;;12468:18;;;12461:43;12520:18;;;12513:34;;;12353:18;;15352:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15104:289;14931:469;;14871:529;;:::o;18986:222::-;7224:6;;-1:-1:-1;;;;;7224:6:0;321:10;7063:23;7055:68;;;;-1:-1:-1;;;7055:68:0;;;;;;;:::i;:::-;19048:14:::1;::::0;::::1;::::0;::::1;;;19047:15;19039:54;;;::::0;-1:-1:-1;;;19039:54:0;;12760:2:1;19039:54:0::1;::::0;::::1;12742:21:1::0;12799:2;12779:18;;;12772:30;12838:28;12818:18;;;12811:56;12884:18;;19039:54:0::1;12558:350:1::0;19039:54:0::1;19104:14;:21:::0;;-1:-1:-1;;19104:21:0::1;;;::::0;;19136:18:::1;:25:::0;;-1:-1:-1;;19136:25:0::1;19121:4;19136:25;::::0;;19188:12:::1;19172:13;:28:::0;18986:222::o;10636:191::-;10709:4;10750;10766:31;10774:7;10750:4;10790:6;10766:7;:31::i;7529:192::-;7224:6;;-1:-1:-1;;;;;7224:6:0;321:10;7063:23;7055:68;;;;-1:-1:-1;;;7055:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7618:22:0;::::1;7610:73;;;::::0;-1:-1:-1;;;7610:73:0;;13115:2:1;7610:73:0::1;::::0;::::1;13097:21:1::0;13154:2;13134:18;;;13127:30;13193:34;13173:18;;;13166:62;-1:-1:-1;;;13244:18:1;;;13237:36;13290:19;;7610:73:0::1;12913:402:1::0;7610:73:0::1;7694:19;7704:8;7694:9;:19::i;:::-;7529:192:::0;:::o;19216:::-;7224:6;;-1:-1:-1;;;;;7224:6:0;321:10;7063:23;7055:68;;;;-1:-1:-1;;;7055:68:0;;;;;;;:::i;:::-;19304:9:::1;19299:102;19323:8;:15;19319:1;:19;19299:102;;;19385:4;19360:9;:22;19370:8;19379:1;19370:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;19360:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;19360:22:0;:29;;-1:-1:-1;;19360:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19340:3;::::1;::::0;::::1;:::i;:::-;;;;19299:102;;5989:380:::0;-1:-1:-1;;;;;6125:19:0;;6117:68;;;;-1:-1:-1;;;6117:68:0;;13522:2:1;6117:68:0;;;13504:21:1;13561:2;13541:18;;;13534:30;13600:34;13580:18;;;13573:62;-1:-1:-1;;;13651:18:1;;;13644:34;13695:19;;6117:68:0;13320:400:1;6117:68:0;-1:-1:-1;;;;;6204:21:0;;6196:68;;;;-1:-1:-1;;;6196:68:0;;13927:2:1;6196:68:0;;;13909:21:1;13966:2;13946:18;;;13939:30;14005:34;13985:18;;;13978:62;-1:-1:-1;;;14056:18:1;;;14049:32;14098:19;;6196:68:0;13725:398:1;6196:68:0;-1:-1:-1;;;;;6277:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6329:32;;1500:25:1;;;6329:32:0;;1473:18:1;6329:32:0;;;;;;;5989:380;;;:::o;15408:2467::-;15558:1;15549:6;:10;15541:64;;;;-1:-1:-1;;;15541:64:0;;14330:2:1;15541:64:0;;;14312:21:1;14369:2;14349:18;;;14342:30;14408:34;14388:18;;;14381:62;-1:-1:-1;;;14459:18:1;;;14452:39;14508:19;;15541:64:0;14128:405:1;15541:64:0;-1:-1:-1;;;;;15623:17:0;;;;;;:9;:17;;;;;;;;15622:18;:43;;;;-1:-1:-1;;;;;;15645:20:0;;;;;;:9;:20;;;;;;;;15644:21;15622:43;15618:122;;;15690:14;;;;;;;15682:46;;;;-1:-1:-1;;;15682:46:0;;14740:2:1;15682:46:0;;;14722:21:1;14779:2;14759:18;;;14752:30;-1:-1:-1;;;14798:18:1;;;14791:49;14857:18;;15682:46:0;14538:343:1;15682:46:0;15766:4;;-1:-1:-1;;;;;15756:14:0;;;15766:4;;15756:14;:39;;;;-1:-1:-1;;;;;;15775:20:0;;;;;;:9;:20;;;;;;;;15774:21;15756:39;:59;;;;-1:-1:-1;15800:15:0;;;;15799:16;15756:59;15752:215;;;15873:14;;15863:6;15840:20;15850:9;-1:-1:-1;;;;;3168:18:0;3141:7;3168:18;;;;;;;;;;;;3067:127;15840:20;:29;;;;:::i;:::-;:47;;15832:123;;;;-1:-1:-1;;;15832:123:0;;15088:2:1;15832:123:0;;;15070:21:1;;;15107:18;;;15100:30;15166:34;15146:18;;;15139:62;15218:18;;15832:123:0;14886:356:1;15832:123:0;15993:4;;-1:-1:-1;;;;;15983:14:0;;;15993:4;;15983:14;;;;:39;;-1:-1:-1;;;;;;16002:20:0;;;;;;:9;:20;;;;;;;;16001:21;15983:39;:61;;;;-1:-1:-1;;;;;;16027:17:0;;;;;;:9;:17;;;;;;;;16026:18;15983:61;:81;;;;-1:-1:-1;16049:15:0;;;;16048:16;15983:81;15979:302;;;16098:4;;-1:-1:-1;;;;;16085:17:0;;;16098:4;;16085:17;16081:189;;16164:14;;16154:6;16131:20;16141:9;-1:-1:-1;;;;;3168:18:0;3141:7;3168:18;;;;;;;;;;;;3067:127;16131:20;:29;;;;:::i;:::-;:47;;16123:131;;;;-1:-1:-1;;;16123:131:0;;15088:2:1;16123:131:0;;;15070:21:1;;;15107:18;;;15100:30;15166:34;15146:18;;;15139:62;15218:18;;16123:131:0;14886:356:1;16123:131:0;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;16423:17:0;;16329:15;16423:17;;;:9;:17;;;;;;16329:15;;;;;;16423:17;;16422:18;:43;;;;-1:-1:-1;;;;;;16445:20:0;;;;;;:9;:20;;;;;;;;16444:21;16422:43;:86;;;;;16500:8;;16484:13;;:24;;;;:::i;:::-;16469:12;:39;16422:86;16596:15;;16402:106;;-1:-1:-1;16596:15:0;;;:36;;-1:-1:-1;;;;;;16615:17:0;;;;;;:9;:17;;;;;;;;16596:36;:60;;;-1:-1:-1;;;;;;16636:20:0;;;;;;:9;:20;;;;;;;;16596:60;16592:652;;;16677:1;16671:7;;16592:652;;;16736:4;;-1:-1:-1;;;;;16723:17:0;;;16736:4;;16723:17;:34;;;;;16745:12;16744:13;16723:34;16719:525;;;16839:8;:18;16801;;:56;;16839:18;16801:56;:::i;:::-;16904:23;;;;;;;;;16919:8;16904:23;;;;;;;;;;-1:-1:-1;16774:83:0;-1:-1:-1;16774:83:0;;-1:-1:-1;16719:525:0;;;16950:12;16945:299;;17043:7;:17;17006;;:54;;17043:17;17006:54;:::i;:::-;17107:22;;;;;;;;;17122:7;17107:22;;;;;;;;;;-1:-1:-1;16979:81:0;-1:-1:-1;16979:81:0;;-1:-1:-1;16945:299:0;;;17151:12;17147:97;;;17190:9;;;-1:-1:-1;17190:9:0;;-1:-1:-1;17147:97:0;17282:3;17263:15;17272:6;17263;:15;:::i;:::-;17262:23;;;;:::i;:::-;17400:18;;17256:29;;-1:-1:-1;17400:18:0;;:36;;;;-1:-1:-1;17432:4:0;;-1:-1:-1;;;;;17422:14:0;;;17432:4;;17422:14;;17400:36;:58;;;;-1:-1:-1;;;;;;17441:17:0;;;;;;:9;:17;;;;;;;;17440:18;17400:58;:83;;;;-1:-1:-1;;;;;;17463:20:0;;;;;;:9;:20;;;;;;;;17462:21;17400:83;17396:123;;;17485:34;17497:7;17506:12;17485:11;:34::i;:::-;17561:48;17577:6;17585:9;17596:12;17605:3;17596:6;:12;:::i;:::-;17561:15;:48::i;:::-;17624:7;;17620:248;;17697:11;;17693:164;;17729:17;17770:3;17750:16;17759:7;17750:6;:16;:::i;:::-;17749:24;;;;:::i;:::-;17729:44;;17792:49;17808:6;17824:4;17831:9;17792:15;:49::i;:::-;17710:147;17693:164;15530:2345;;;;;15408:2467;;;:::o;7348:173::-;7423:6;;;-1:-1:-1;;;;;7440:17:0;;;-1:-1:-1;;;;;;7440:17:0;;;;;;;7473:40;;7423:6;;;7440:17;7423:6;;7473:40;;7404:16;;7473:40;7393:128;7348:173;:::o;6377:271::-;-1:-1:-1;;;;;6484:19:0;;6476:28;;;;;;-1:-1:-1;;;;;6523:21:0;;6515:30;;;;;12142:1679;9616:15;;;;9611:125;;9648:15;:22;;-1:-1:-1;;9648:22:0;9666:4;9648:22;;;12230:49;;12261:7:::1;12230:49;12335:4;12291:23;3168:18:::0;;;;;;;;;;;;12383:17:::1;::::0;-1:-1:-1;;;;;12383:17:0::1;3168:18:::0;;;;;12435:23:::1;::::0;12416:42;::::1;12412:1402;;12505:1;12479:23;;:27;12475:109;;;12545:23;;12527:41;;12475:109;12655:19;12677:11;:7:::0;12687:1:::1;12677:11;:::i;:::-;12655:33;;12703:32;12797:11;12757:9;:19;;;12739:15;:37;;;;:::i;:::-;12738:70;;;;:::i;:::-;12703:105;;12825:12;12870:23;;12856:10;:37;12852:153;;12959:7;:29;;12987:1;12959:29;;;12969:15;12959:29;12941:14;;:48;;;;:::i;:::-;12914:75;;12852:153;13019:14;13036:42;13054:24:::0;13036:15;:42:::1;:::i;:::-;13019:59:::0;-1:-1:-1;13120:21:0::1;13158:24;13019:59:::0;13158:16:::1;:24::i;:::-;13199:20;13222:38;13246:14:::0;13222:21:::1;:38;:::i;:::-;13199:61;;13275:19;13327:9;:19;;;13313:11;:33;;;;:::i;:::-;13297:50;::::0;:12;:50:::1;:::i;:::-;13275:72;;13362:29;13408:9;:19;;;13394:11;:33;;;;:::i;:::-;13362:65:::0;-1:-1:-1;13448:25:0;;13444:161:::1;;13528:61;13541:24;13567:21;13528:12;:61::i;:::-;13662:19:::0;;13621:20:::1;::::0;13644:15:::1;:11:::0;13658:1:::1;13644:15;:::i;:::-;:37;;;;:::i;:::-;13621:60:::0;-1:-1:-1;13700:16:0;;13696:107:::1;;13745:17;::::0;13737:50:::1;::::0;-1:-1:-1;;;;;13745:17:0::1;13774:12:::0;13737:36:::1;:50::i;:::-;12460:1354;;;;;;;;;12412:1402;12222:1599;;9685:1;9701:15:::0;:23;;-1:-1:-1;;9701:23:0;;;12142:1679;;:::o;4719:638::-;-1:-1:-1;;;;;4859:20:0;;4851:70;;;;-1:-1:-1;;;4851:70:0;;15671:2:1;4851:70:0;;;15653:21:1;15710:2;15690:18;;;15683:30;15749:34;15729:18;;;15722:62;-1:-1:-1;;;15800:18:1;;;15793:35;15845:19;;4851:70:0;15469:401:1;4851:70:0;-1:-1:-1;;;;;4940:23:0;;4932:71;;;;-1:-1:-1;;;4932:71:0;;16077:2:1;4932:71:0;;;16059:21:1;16116:2;16096:18;;;16089:30;16155:34;16135:18;;;16128:62;-1:-1:-1;;;16206:18:1;;;16199:33;16249:19;;4932:71:0;15875:399:1;4932:71:0;-1:-1:-1;;;;;5100:17:0;;5076:21;5100:17;;;;;;;;;;;5136:23;;;;5128:74;;;;-1:-1:-1;;;5128:74:0;;16481:2:1;5128:74:0;;;16463:21:1;16520:2;16500:18;;;16493:30;16559:34;16539:18;;;16532:62;-1:-1:-1;;;16610:18:1;;;16603:36;16656:19;;5128:74:0;16279:402:1;5128:74:0;5233:22;5249:6;5233:13;:22;:::i;:::-;-1:-1:-1;;;;;5213:17:0;;;:9;:17;;;;;;;;;;;:42;;;;5266:20;;;;;;;;:30;;5290:6;;5213:9;5266:30;;5290:6;;5266:30;:::i;:::-;;;;;;;;5331:9;-1:-1:-1;;;;;5314:35:0;5323:6;-1:-1:-1;;;;;5314:35:0;;5342:6;5314:35;;;;1500:25:1;;1488:2;1473:18;;1354:177;5314:35:0;;;;;;;;4840:517;4719:638;;;:::o;14337:526::-;14479:16;;;14493:1;14479:16;;;;;;;;14455:21;;14479:16;;;;;;;;;;-1:-1:-1;14479:16:0;14455:40;;14524:4;14506;14511:1;14506:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14506:23:0;;;:7;;;;;;;;;;:23;;;;14550:6;;:13;;;-1:-1:-1;;;14550:13:0;;;;:6;;;;;:11;;:13;;;;;14506:7;;14550:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14540:4;14545:1;14540:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14540:23:0;;;:7;;;;;;;;;:23;14608:6;;14576:53;;14593:4;;14608:6;14617:11;14576:8;:53::i;:::-;14668:6;;:187;;-1:-1:-1;;;14668:187:0;;-1:-1:-1;;;;;14668:6:0;;;;:57;;:187;;14740:11;;14668:6;;14782:4;;14809;;14829:15;;14668:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14392:471;14337:526;:::o;13829:500::-;14009:6;;13977:53;;13994:4;;-1:-1:-1;;;;;14009:6:0;14018:11;13977:8;:53::i;:::-;14073:6;;:248;;-1:-1:-1;;;14073:248:0;;-1:-1:-1;;;;;14073:6:0;;;;:22;;14104:9;;14073:248;;14138:4;;14158:11;;14073:6;;;;8847:42;;14295:15;;14073:248;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;612:319::-;727:6;702:21;:31;;694:73;;;;-1:-1:-1;;;694:73:0;;17475:2:1;694:73:0;;;17457:21:1;17514:2;17494:18;;;17487:30;17553:31;17533:18;;;17526:59;17602:18;;694:73:0;17273:353:1;694:73:0;781:12;799:9;-1:-1:-1;;;;;799:14:0;822:6;799:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;780:54;;;853:7;845:78;;;;-1:-1:-1;;;845:78:0;;18043:2:1;845:78:0;;;18025:21:1;18082:2;18062:18;;;18055:30;18121:34;18101:18;;;18094:62;18192:28;18172:18;;;18165:56;18238:19;;845:78:0;17841:422:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1536:456::-;1613:6;1621;1629;1682:2;1670:9;1661:7;1657:23;1653:32;1650:52;;;1698:1;1695;1688:12;1650:52;1737:9;1724:23;1756:31;1781:5;1756:31;:::i;:::-;1806:5;-1:-1:-1;1863:2:1;1848:18;;1835:32;1876:33;1835:32;1876:33;:::i;:::-;1536:456;;1928:7;;-1:-1:-1;;;1982:2:1;1967:18;;;;1954:32;;1536:456::o;1997:127::-;2058:10;2053:3;2049:20;2046:1;2039:31;2089:4;2086:1;2079:15;2113:4;2110:1;2103:15;2129:1121;2213:6;2244:2;2287;2275:9;2266:7;2262:23;2258:32;2255:52;;;2303:1;2300;2293:12;2255:52;2343:9;2330:23;2372:18;2413:2;2405:6;2402:14;2399:34;;;2429:1;2426;2419:12;2399:34;2467:6;2456:9;2452:22;2442:32;;2512:7;2505:4;2501:2;2497:13;2493:27;2483:55;;2534:1;2531;2524:12;2483:55;2570:2;2557:16;2592:2;2588;2585:10;2582:36;;;2598:18;;:::i;:::-;2644:2;2641:1;2637:10;2676:2;2670:9;2739:2;2735:7;2730:2;2726;2722:11;2718:25;2710:6;2706:38;2794:6;2782:10;2779:22;2774:2;2762:10;2759:18;2756:46;2753:72;;;2805:18;;:::i;:::-;2841:2;2834:22;2891:18;;;2925:15;;;;-1:-1:-1;2967:11:1;;;2963:20;;;2995:19;;;2992:39;;;3027:1;3024;3017:12;2992:39;3051:11;;;;3071:148;3087:6;3082:3;3079:15;3071:148;;;3153:23;3172:3;3153:23;:::i;:::-;3141:36;;3104:12;;;;3197;;;;3071:148;;;3238:6;2129:1121;-1:-1:-1;;;;;;;;2129:1121:1:o;3444:180::-;3503:6;3556:2;3544:9;3535:7;3531:23;3527:32;3524:52;;;3572:1;3569;3562:12;3524:52;-1:-1:-1;3595:23:1;;3444:180;-1:-1:-1;3444:180:1:o;3629:247::-;3688:6;3741:2;3729:9;3720:7;3716:23;3712:32;3709:52;;;3757:1;3754;3747:12;3709:52;3796:9;3783:23;3815:31;3840:5;3815:31;:::i;:::-;3865:5;3629:247;-1:-1:-1;;;3629:247:1:o;4089:388::-;4157:6;4165;4218:2;4206:9;4197:7;4193:23;4189:32;4186:52;;;4234:1;4231;4224:12;4186:52;4273:9;4260:23;4292:31;4317:5;4292:31;:::i;:::-;4342:5;-1:-1:-1;4399:2:1;4384:18;;4371:32;4412:33;4371:32;4412:33;:::i;:::-;4464:7;4454:17;;;4089:388;;;;;:::o;4958:380::-;5037:1;5033:12;;;;5080;;;5101:61;;5155:4;5147:6;5143:17;5133:27;;5101:61;5208:2;5200:6;5197:14;5177:18;5174:38;5171:161;;5254:10;5249:3;5245:20;5242:1;5235:31;5289:4;5286:1;5279:15;5317:4;5314:1;5307:15;5171:161;;4958:380;;;:::o;5343:356::-;5545:2;5527:21;;;5564:18;;;5557:30;5623:34;5618:2;5603:18;;5596:62;5690:2;5675:18;;5343:356::o;5704:127::-;5765:10;5760:3;5756:20;5753:1;5746:31;5796:4;5793:1;5786:15;5820:4;5817:1;5810:15;5836:422;5925:1;5968:5;5925:1;5982:270;6003:7;5993:8;5990:21;5982:270;;;6062:4;6058:1;6054:6;6050:17;6044:4;6041:27;6038:53;;;6071:18;;:::i;:::-;6121:7;6111:8;6107:22;6104:55;;;6141:16;;;;6104:55;6220:22;;;;6180:15;;;;5982:270;;;5986:3;5836:422;;;;;:::o;6263:806::-;6312:5;6342:8;6332:80;;-1:-1:-1;6383:1:1;6397:5;;6332:80;6431:4;6421:76;;-1:-1:-1;6468:1:1;6482:5;;6421:76;6513:4;6531:1;6526:59;;;;6599:1;6594:130;;;;6506:218;;6526:59;6556:1;6547:10;;6570:5;;;6594:130;6631:3;6621:8;6618:17;6615:43;;;6638:18;;:::i;:::-;-1:-1:-1;;6694:1:1;6680:16;;6709:5;;6506:218;;6808:2;6798:8;6795:16;6789:3;6783:4;6780:13;6776:36;6770:2;6760:8;6757:16;6752:2;6746:4;6743:12;6739:35;6736:77;6733:159;;;-1:-1:-1;6845:19:1;;;6877:5;;6733:159;6924:34;6949:8;6943:4;6924:34;:::i;:::-;6994:6;6990:1;6986:6;6982:19;6973:7;6970:32;6967:58;;;7005:18;;:::i;:::-;7043:20;;6263:806;-1:-1:-1;;;6263:806:1:o;7074:140::-;7132:5;7161:47;7202:4;7192:8;7188:19;7182:4;7161:47;:::i;7219:168::-;7292:9;;;7323;;7340:15;;;7334:22;;7320:37;7310:71;;7361:18;;:::i;7801:128::-;7868:9;;;7889:11;;;7886:37;;;7903:18;;:::i;7934:127::-;7995:10;7990:3;7986:20;7983:1;7976:31;8026:4;8023:1;8016:15;8050:4;8047:1;8040:15;8066:135;8105:3;8126:17;;;8123:43;;8146:18;;:::i;:::-;-1:-1:-1;8193:1:1;8182:13;;8066:135::o;8206:125::-;8271:9;;;8292:10;;;8289:36;;;8305:18;;:::i;9021:277::-;9088:6;9141:2;9129:9;9120:7;9116:23;9112:32;9109:52;;;9157:1;9154;9147:12;9109:52;9189:9;9183:16;9242:5;9235:13;9228:21;9221:5;9218:32;9208:60;;9264:1;9261;9254:12;9303:251;9373:6;9426:2;9414:9;9405:7;9401:23;9397:32;9394:52;;;9442:1;9439;9432:12;9394:52;9474:9;9468:16;9493:31;9518:5;9493:31;:::i;9868:607::-;-1:-1:-1;;;;;10227:15:1;;;10209:34;;10274:2;10259:18;;10252:34;;;;10317:2;10302:18;;10295:34;;;;10360:2;10345:18;;10338:34;;;;10409:15;;;10403:3;10388:19;;10381:44;10189:3;10441:19;;10434:35;;;;10158:3;10143:19;;9868:607::o;10480:306::-;10568:6;10576;10584;10637:2;10625:9;10616:7;10612:23;10608:32;10605:52;;;10653:1;10650;10643:12;10605:52;10682:9;10676:16;10666:26;;10732:2;10721:9;10717:18;10711:25;10701:35;;10776:2;10765:9;10761:18;10755:25;10745:35;;10480:306;;;;;:::o;11197:461::-;11250:3;11288:5;11282:12;11315:6;11310:3;11303:19;11341:4;11370:2;11365:3;11361:12;11354:19;;11407:2;11400:5;11396:14;11428:1;11438:195;11452:6;11449:1;11446:13;11438:195;;;11517:13;;-1:-1:-1;;;;;11513:39:1;11501:52;;11573:12;;;;11608:15;;;;11549:1;11467:9;11438:195;;;-1:-1:-1;11649:3:1;;11197:461;-1:-1:-1;;;;;11197:461:1:o;11663:510::-;11934:6;11923:9;11916:25;11977:3;11972:2;11961:9;11957:18;11950:31;11897:4;11998:57;12050:3;12039:9;12035:19;12027:6;11998:57;:::i;:::-;-1:-1:-1;;;;;12091:32:1;;;;12086:2;12071:18;;12064:60;-1:-1:-1;12155:2:1;12140:18;12133:34;11990:65;11663:510;-1:-1:-1;;11663:510:1:o;15247:217::-;15287:1;15313;15303:132;;15357:10;15352:3;15348:20;15345:1;15338:31;15392:4;15389:1;15382:15;15420:4;15417:1;15410:15;15303:132;-1:-1:-1;15449:9:1;;15247:217::o;16686:582::-;16985:6;16974:9;16967:25;17028:6;17023:2;17012:9;17008:18;17001:34;17071:3;17066:2;17055:9;17051:18;17044:31;16948:4;17092:57;17144:3;17133:9;17129:19;17121:6;17092:57;:::i;:::-;-1:-1:-1;;;;;17185:32:1;;;;17180:2;17165:18;;17158:60;-1:-1:-1;17249:3:1;17234:19;17227:35;17084:65;16686:582;-1:-1:-1;;;16686:582:1:o
Swarm Source
ipfs://698ddae363564ea25f5d96105e951221207b96b01745819aa62ecd91b7b5e044
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.