ERC-20
Overview
Max Total Supply
1,000,000 FARM
Holders
6
Market
Price
$0.00 @ 0.000000 S
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
9,378.001326772082339079 FARMValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
FARMER
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2025-03-02 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.20; // OpenZeppelin Contracts v5.0.1 /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, 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 from, address to, 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); } /** * @dev Contract module that helps prevent reentrant calls to a function. */ abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } modifier nonReentrant() { require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); _status = _ENTERED; _; _status = _NOT_ENTERED; } } /** * @dev Contract module which provides a basic access control mechanism */ abstract contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor(address initialOwner) { if (initialOwner == address(0)) { revert("Ownable: new owner is the zero address"); } _transferOwnership(initialOwner); } modifier onlyOwner() { _checkOwner(); _; } function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { require(owner() == msg.sender, "Ownable: caller is not the owner"); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } /** * @dev Implementation of the {IERC20} interface. */ abstract contract ERC20 is IERC20 { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual returns (string memory) { return _name; } function symbol() public view virtual returns (string memory) { return _symbol; } function decimals() public view virtual returns (uint8) { return 18; } function totalSupply() public view virtual returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual returns (uint256) { return _balances[account]; } function transfer(address to, uint256 amount) public virtual returns (bool) { address owner = msg.sender; _transfer(owner, to, amount); return true; } function allowance(address owner, address spender) public view virtual returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual returns (bool) { address owner = msg.sender; _approve(owner, spender, amount); return true; } function transferFrom(address from, address to, uint256 amount) public virtual returns (bool) { address spender = msg.sender; _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} } interface IMetropolisRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface IMetropolisFactory { function getPair(address tokenA, address tokenB) external view returns (address pair); function createPair(address tokenA, address tokenB) external returns (address pair); } // FARMER Token Contract contract FARMER is ERC20, ReentrancyGuard, Ownable { // Constants uint256 public constant TOTAL_SUPPLY = 1_000_000 * 10**18; uint256 public constant TAX_RATE = 5; // 5% uint256 public constant LIQUIDITY_TAX = 25; // 2.5% uint256 public constant AIRDROP_TAX = 25; // 2.5% uint256 public constant MIN_HOLDER_AMOUNT = 10 * 10**18; // 10 tokens uint256 public constant MIN_TOKENS_FOR_PROCESS = 100 * 10**18; // 100 token minimum for both operations // Metropolis DEX addresses IMetropolisRouter public metropolisRouter; IMetropolisFactory public immutable metropolisFactory; address public immutable sonicToken; address public liquidityPair; // Holder tracking mapping(address => bool) public isHolder; address[] public holders; // Events event LiquidityAdded(uint256 tokenAmount, uint256 sonicAmount); event AirdropDistributed(uint256 amount, uint256 holdersCount); event SwapFailed(string reason); event LiquidityAddFailed(string reason); event AirdropFailed(string reason); event ProcessStarted(uint256 tokensForLiquidity, uint256 tokensForAirdrop); event SwapSuccessful(uint256 tokensSwapped, uint256 wethReceived); uint256 private _pendingLiquidityTokens; uint256 private _pendingAirdropTokens; constructor() ERC20("FARMER", "FARM") Ownable(msg.sender) { metropolisRouter = IMetropolisRouter(0x95a7e403d7cF20F675fF9273D66e94d35ba49fA3); metropolisFactory = IMetropolisFactory(0x1570300e9cFEC66c9Fb0C8bc14366C86EB170Ad0); sonicToken = 0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38; // Doğru WETH adresi // Mint all tokens to contract first _mint(address(this), TOTAL_SUPPLY); // Create pair liquidityPair = metropolisFactory.createPair(address(this), sonicToken); // Approve router for full supply _approve(address(this), address(metropolisRouter), TOTAL_SUPPLY); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual override { super._beforeTokenTransfer(from, to, amount); } function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual override { super._afterTokenTransfer(from, to, amount); } function _transfer( address from, address to, uint256 amount ) internal virtual override { if (from == owner() || to == owner() || from == address(this) || to == address(this)) { super._transfer(from, to, amount); _updateHolder(from); _updateHolder(to); } else { bool isSellOrBuy = to == liquidityPair || from == liquidityPair; if (isSellOrBuy) { uint256 totalTax = (amount * TAX_RATE) / 100; // %5 uint256 liquidityTax = (amount * LIQUIDITY_TAX) / 1000; // %2.5 (25/1000) uint256 airdropTax = (amount * AIRDROP_TAX) / 1000; // %2.5 (25/1000) uint256 transferAmount = amount - totalTax; // Transfer the tax to contract super._transfer(from, address(this), totalTax); // Transfer the remaining amount super._transfer(from, to, transferAmount); // Accumulate tokens for liquidity and airdrop _pendingLiquidityTokens += liquidityTax; _pendingAirdropTokens += airdropTax; // Process when either liquidity or airdrop tokens reach minimum if ((_pendingLiquidityTokens >= MIN_TOKENS_FOR_PROCESS || _pendingAirdropTokens >= MIN_TOKENS_FOR_PROCESS) && holders.length > 0) { _processLiquidityAndAirdrop(); } } else { super._transfer(from, to, amount); } _updateHolder(from); _updateHolder(to); } } function _updateHolder(address account) private { if (account != liquidityPair && account != address(this)) { uint256 balance = balanceOf(account); bool isCurrentlyHolder = isHolder[account]; if (balance >= MIN_HOLDER_AMOUNT && !isCurrentlyHolder) { isHolder[account] = true; holders.push(account); } else if (balance < MIN_HOLDER_AMOUNT && isCurrentlyHolder) { isHolder[account] = false; _removeHolder(account); } } } function _removeHolder(address account) private { for (uint256 i = 0; i < holders.length; i++) { if (holders[i] == account) { holders[i] = holders[holders.length - 1]; holders.pop(); break; } } } function _processSwap(uint256 totalTokens) private returns (uint256) { address[] memory path = new address[](2); path[0] = address(this); path[1] = sonicToken; // metropolisRouter.WETH() yerine sonicToken kullanıyoruz // Router onayını kontrol et uint256 currentAllowance = IERC20(address(this)).allowance(address(this), address(metropolisRouter)); if (currentAllowance < totalTokens) { _approve(address(this), address(metropolisRouter), 0); _approve(address(this), address(metropolisRouter), type(uint256).max); } try metropolisRouter.swapExactTokensForTokens( totalTokens, 0, // minimum çıktı miktarı path, address(this), // WETH'leri kontrata gönder block.timestamp + 300 ) returns (uint[] memory) { uint256 wethBalance = IERC20(sonicToken).balanceOf(address(this)); emit SwapSuccessful(totalTokens, wethBalance); return wethBalance; } catch Error(string memory reason) { emit SwapFailed(reason); return 0; } catch { emit SwapFailed("Unknown error in swap"); return 0; } } function _processLiquidity(uint256 tokensForLiquidity, uint256 wethForLiquidity) private { if (wethForLiquidity > 0) { uint256 wethAllowance = IERC20(sonicToken).allowance(address(this), address(metropolisRouter)); if (wethAllowance < wethForLiquidity) { IERC20(sonicToken).approve(address(metropolisRouter), type(uint256).max); } try metropolisRouter.addLiquidity( address(this), sonicToken, tokensForLiquidity / 2, wethForLiquidity, 0, 0, address(this), block.timestamp ) { emit LiquidityAdded(tokensForLiquidity / 2, wethForLiquidity); } catch Error(string memory reason) { emit LiquidityAddFailed(reason); _pendingLiquidityTokens = tokensForLiquidity; } catch { emit LiquidityAddFailed("Unknown error in addLiquidity"); _pendingLiquidityTokens = tokensForLiquidity; } } } function _processAirdrop(uint256 wethForAirdrop) private { if (wethForAirdrop > 0 && holders.length > 0) { uint256 amountPerHolder = wethForAirdrop / holders.length; if (amountPerHolder > 0) { for (uint256 i = 0; i < holders.length && i < 100; i++) { try IERC20(sonicToken).transfer(holders[i], amountPerHolder) { // Transfer successful } catch Error(string memory reason) { emit AirdropFailed(reason); continue; } catch { emit AirdropFailed("Unknown error in WETH transfer"); continue; } } emit AirdropDistributed(wethForAirdrop, holders.length); } } } function _processLiquidityAndAirdrop() private { uint256 tokensForLiquidity = _pendingLiquidityTokens; uint256 tokensForAirdrop = _pendingAirdropTokens; uint256 totalTokens = tokensForLiquidity + tokensForAirdrop; emit ProcessStarted(tokensForLiquidity, tokensForAirdrop); // Önce kontrat bakiyesini kontrol et uint256 contractBalance = IERC20(address(this)).balanceOf(address(this)); require(contractBalance >= totalTokens, "Insufficient token balance for swap"); _pendingLiquidityTokens = 0; _pendingAirdropTokens = 0; // Router approval kontrolü uint256 currentAllowance = IERC20(address(this)).allowance(address(this), address(metropolisRouter)); if (currentAllowance < totalTokens) { _approve(address(this), address(metropolisRouter), 0); _approve(address(this), address(metropolisRouter), TOTAL_SUPPLY); } // Likidite havuzu kontrolü address pair = IMetropolisFactory(metropolisRouter.factory()).getPair(address(this), metropolisRouter.WETH()); require(pair != address(0), "Liquidity pair does not exist"); require(pair == liquidityPair, "Invalid liquidity pair"); // Process swap uint256 wethBalance = _processSwap(totalTokens); if (wethBalance > 0) { // Calculate proportions uint256 wethForLiquidity = (wethBalance * tokensForLiquidity) / totalTokens; uint256 wethForAirdrop = wethBalance - wethForLiquidity; // Process liquidity _processLiquidity(tokensForLiquidity, wethForLiquidity); // Process airdrop _processAirdrop(wethForAirdrop); } else { // If swap failed, restore pending amounts _pendingLiquidityTokens = tokensForLiquidity; _pendingAirdropTokens = tokensForAirdrop; } } // View functions function getHolderCount() external view returns (uint256) { return holders.length; } function getHolders() external view returns (address[] memory) { return holders; } // Initial liquidity function (must be called by owner with ETH) function addInitialLiquidity(uint256 tokenAmount) external payable onlyOwner { require(msg.value > 0, "Must provide ETH for initial liquidity"); require(tokenAmount > 0, "Must provide token amount for initial liquidity"); // Check contract balance require( IERC20(address(this)).balanceOf(address(this)) >= tokenAmount, "Insufficient token balance in contract" ); // Approve router to spend tokens directly from contract _approve(address(this), address(metropolisRouter), tokenAmount); // Add liquidity with minimal checks try metropolisRouter.addLiquidityETH{value: msg.value}( address(this), tokenAmount, 0, // No minimum token amount 0, // No minimum ETH amount msg.sender, // LP tokens will go to owner directly block.timestamp // Immediate execution ) { emit LiquidityAdded(tokenAmount, msg.value); } catch { // If failed, revert the approval _approve(address(this), address(metropolisRouter), 0); revert("Failed to add liquidity"); } // Return any unused ETH uint256 remainingETH = address(this).balance; if (remainingETH > 0) { payable(msg.sender).transfer(remainingETH); } } function setRouter(address _router) external onlyOwner { require(_router != address(0), "Invalid router address"); metropolisRouter = IMetropolisRouter(_router); } function rescueTokens(address _token, uint256 _amount) external onlyOwner { require(_token != address(this), "Cannot rescue FARMER tokens"); IERC20(_token).transfer(owner(), _amount); } // Transfer tokens to owner function withdrawTokensToOwner(uint256 amount) external onlyOwner { require( IERC20(address(this)).balanceOf(address(this)) >= amount, "Insufficient balance" ); _transfer(address(this), msg.sender, amount); } // View functions for pending amounts function getPendingLiquidityTokens() external view returns (uint256) { return _pendingLiquidityTokens; } function getPendingAirdropTokens() external view returns (uint256) { return _pendingAirdropTokens; } // Process liquidity and airdrop manually if needed function processLiquidityAndAirdrop() external onlyOwner { require(_pendingLiquidityTokens > 0 || _pendingAirdropTokens > 0, "No pending tokens"); require(holders.length > 0, "No holders"); _processLiquidityAndAirdrop(); } function checkAndRefreshAllowances() external onlyOwner { // Check and refresh FARM approval for router uint256 farmAllowance = IERC20(address(this)).allowance(address(this), address(metropolisRouter)); if (farmAllowance < TOTAL_SUPPLY) { _approve(address(this), address(metropolisRouter), TOTAL_SUPPLY); } // Check and refresh WETH approval for router uint256 wethBalance = IERC20(sonicToken).balanceOf(address(this)); if (wethBalance > 0) { uint256 wethAllowance = IERC20(sonicToken).allowance(address(this), address(metropolisRouter)); if (wethAllowance < wethBalance) { IERC20(sonicToken).approve(address(metropolisRouter), type(uint256).max); } } } // Debug function function getSwapInfo() external view returns ( uint256 contractBalance, uint256 routerAllowance, bool pairExists, address pair, uint256 pendingLiq, uint256 pendingAirdrop ) { contractBalance = IERC20(address(this)).balanceOf(address(this)); routerAllowance = IERC20(address(this)).allowance(address(this), address(metropolisRouter)); pair = IMetropolisFactory(metropolisRouter.factory()).getPair(address(this), sonicToken); pairExists = pair != address(0); pendingLiq = _pendingLiquidityTokens; pendingAirdrop = _pendingAirdropTokens; } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"holdersCount","type":"uint256"}],"name":"AirdropDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"AirdropFailed","type":"event"},{"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":false,"internalType":"string","name":"reason","type":"string"}],"name":"LiquidityAddFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sonicAmount","type":"uint256"}],"name":"LiquidityAdded","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":false,"internalType":"uint256","name":"tokensForLiquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensForAirdrop","type":"uint256"}],"name":"ProcessStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"SwapFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"wethReceived","type":"uint256"}],"name":"SwapSuccessful","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":"AIRDROP_TAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LIQUIDITY_TAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_HOLDER_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_TOKENS_FOR_PROCESS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TAX_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOTAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"addInitialLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkAndRefreshAllowances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHolderCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHolders","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPendingAirdropTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPendingLiquidityTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSwapInfo","outputs":[{"internalType":"uint256","name":"contractBalance","type":"uint256"},{"internalType":"uint256","name":"routerAllowance","type":"uint256"},{"internalType":"bool","name":"pairExists","type":"bool"},{"internalType":"address","name":"pair","type":"address"},{"internalType":"uint256","name":"pendingLiq","type":"uint256"},{"internalType":"uint256","name":"pendingAirdrop","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"holders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metropolisFactory","outputs":[{"internalType":"contract IMetropolisFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metropolisRouter","outputs":[{"internalType":"contract IMetropolisRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processLiquidityAndAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sonicToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTokensToOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c060405234801562000010575f80fd5b50336040518060400160405280600681526020017f4641524d455200000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4641524d0000000000000000000000000000000000000000000000000000000081525081600390816200008f9190620009c7565b508060049081620000a19190620009c7565b50505060016005819055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200011d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001149062000b2f565b60405180910390fd5b6200012e816200033660201b60201c565b507395a7e403d7cf20f675ff9273d66e94d35ba49fa360075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731570300e9cfec66c9fb0c8bc14366c86eb170ad073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505073039e2fb66102314ce7b64ce5ce3e5183bc94ad3873ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200022f3069d3c21bcecceda1000000620003f960201b60201c565b60805173ffffffffffffffffffffffffffffffffffffffff1663c9c653963060a0516040518363ffffffff1660e01b81526004016200027092919062000b92565b6020604051808303815f875af11580156200028d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002b3919062000bf0565b60085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003303060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda10000006200055e60201b60201c565b62000e49565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200046a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004619062000c6e565b60405180910390fd5b6200047d5f83836200072960201b60201c565b8060025f82825462000490919062000cbb565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200053f919062000d06565b60405180910390a36200055a5f83836200074160201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620005cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005c69062000d95565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000640576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006379062000e29565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516200071c919062000d06565b60405180910390a3505050565b6200073c8383836200075960201b60201c565b505050565b620007548383836200075e60201b60201c565b505050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620007df57607f821691505b602082108103620007f557620007f46200079a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620008597fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200081c565b6200086586836200081c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620008af620008a9620008a3846200087d565b62000886565b6200087d565b9050919050565b5f819050919050565b620008ca836200088f565b620008e2620008d982620008b6565b84845462000828565b825550505050565b5f90565b620008f8620008ea565b62000905818484620008bf565b505050565b5b818110156200092c57620009205f82620008ee565b6001810190506200090b565b5050565b601f8211156200097b576200094581620007fb565b62000950846200080d565b8101602085101562000960578190505b620009786200096f856200080d565b8301826200090a565b50505b505050565b5f82821c905092915050565b5f6200099d5f198460080262000980565b1980831691505092915050565b5f620009b783836200098c565b9150826002028217905092915050565b620009d28262000763565b67ffffffffffffffff811115620009ee57620009ed6200076d565b5b620009fa8254620007c7565b62000a0782828562000930565b5f60209050601f83116001811462000a3d575f841562000a28578287015190505b62000a348582620009aa565b86555062000aa3565b601f19841662000a4d86620007fb565b5f5b8281101562000a765784890151825560018201915060208501945060208101905062000a4f565b8683101562000a96578489015162000a92601f8916826200098c565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f62000b1760268362000aab565b915062000b248262000abb565b604082019050919050565b5f6020820190508181035f83015262000b488162000b09565b9050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000b7a8262000b4f565b9050919050565b62000b8c8162000b6e565b82525050565b5f60408201905062000ba75f83018562000b81565b62000bb6602083018462000b81565b9392505050565b5f80fd5b62000bcc8162000b6e565b811462000bd7575f80fd5b50565b5f8151905062000bea8162000bc1565b92915050565b5f6020828403121562000c085762000c0762000bbd565b5b5f62000c178482850162000bda565b91505092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000c56601f8362000aab565b915062000c638262000c20565b602082019050919050565b5f6020820190508181035f83015262000c878162000c48565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000cc7826200087d565b915062000cd4836200087d565b925082820190508082111562000cef5762000cee62000c8e565b5b92915050565b62000d00816200087d565b82525050565b5f60208201905062000d1b5f83018462000cf5565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f62000d7d60248362000aab565b915062000d8a8262000d21565b604082019050919050565b5f6020820190508181035f83015262000dae8162000d6f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000e1160228362000aab565b915062000e1e8262000db5565b604082019050919050565b5f6020820190508181035f83015262000e428162000e03565b9050919050565b60805160a051614c0862000eb15f395f8181610a6601528181610ea201528181611458015281816114fb015281816115c00152818161297601528181612c6001528181612d4901528181612e0e01528181612f2a015261310c01525f61188a0152614c085ff3fe6080604052600436106101fc575f3560e01c80637ac84fc11161010c578063a9059cbb1161009f578063d4d7b19a1161006e578063d4d7b19a146106ec578063d4e123a614610728578063dd62ed3e14610752578063f2fde38b1461078e578063fd7c9fab146107b657610203565b8063a9059cbb14610648578063bc531dae14610684578063c026d93a146106ae578063c0d78655146106c457610203565b80638da5cb5b116100db5780638da5cb5b146105a0578063902d55a5146105ca57806395a6e254146105f457806395d89b411461061e57610203565b80637ac84fc11461050c578063808a54571461052257806381f0549f1461054c57806383f170be1461057657610203565b806341a22cc21161018f5780635fe8e7cc1161015e5780635fe8e7cc1461042a57806362b6327a1461045457806370a082311461047e5780637136982b146104ba57806379304bec146104e457610203565b806341a22cc214610392578063461a3a95146103ae57806357376198146103d85780635d76b04c1461040057610203565b80631b26c80d116101cb5780631b26c80d146102c157806323b872dd146102f05780632a11ced01461032c578063313ce5671461036857610203565b806306fdde031461020757806308dee2b414610231578063095ea7b31461025b57806318160ddd1461029757610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b6107e0565b6040516102289190613510565b60405180910390f35b34801561023c575f80fd5b50610245610870565b6040516102529190613548565b60405180910390f35b348015610266575f80fd5b50610281600480360381019061027c91906135f6565b610879565b60405161028e919061364e565b60405180910390f35b3480156102a2575f80fd5b506102ab610894565b6040516102b89190613548565b60405180910390f35b3480156102cc575f80fd5b506102d561089d565b6040516102e796959493929190613676565b60405180910390f35b3480156102fb575f80fd5b50610316600480360381019061031191906136d5565b610b27565b604051610323919061364e565b60405180910390f35b348015610337575f80fd5b50610352600480360381019061034d9190613725565b610b4e565b60405161035f9190613750565b60405180910390f35b348015610373575f80fd5b5061037c610b89565b6040516103899190613784565b60405180910390f35b6103ac60048036038101906103a79190613725565b610b91565b005b3480156103b9575f80fd5b506103c2610ea0565b6040516103cf9190613750565b60405180910390f35b3480156103e3575f80fd5b506103fe60048036038101906103f991906135f6565b610ec4565b005b34801561040b575f80fd5b50610414610fc1565b6040516104219190613548565b60405180910390f35b348015610435575f80fd5b5061043e610fca565b60405161044b9190613854565b60405180910390f35b34801561045f575f80fd5b50610468611055565b60405161047591906138cf565b60405180910390f35b348015610489575f80fd5b506104a4600480360381019061049f91906138e8565b61107a565b6040516104b19190613548565b60405180910390f35b3480156104c5575f80fd5b506104ce6110bf565b6040516104db9190613548565b60405180910390f35b3480156104ef575f80fd5b5061050a60048036038101906105059190613725565b6110cb565b005b348015610517575f80fd5b5061052061119b565b005b34801561052d575f80fd5b50610536611244565b6040516105439190613750565b60405180910390f35b348015610557575f80fd5b50610560611269565b60405161056d9190613548565b60405180910390f35b348015610581575f80fd5b5061058a61126e565b6040516105979190613548565b60405180910390f35b3480156105ab575f80fd5b506105b4611273565b6040516105c19190613750565b60405180910390f35b3480156105d5575f80fd5b506105de61129b565b6040516105eb9190613548565b60405180910390f35b3480156105ff575f80fd5b506106086112a9565b6040516106159190613548565b60405180910390f35b348015610629575f80fd5b506106326112b6565b60405161063f9190613510565b60405180910390f35b348015610653575f80fd5b5061066e600480360381019061066991906135f6565b611346565b60405161067b919061364e565b60405180910390f35b34801561068f575f80fd5b50610698611361565b6040516106a59190613548565b60405180910390f35b3480156106b9575f80fd5b506106c2611366565b005b3480156106cf575f80fd5b506106ea60048036038101906106e591906138e8565b6116a2565b005b3480156106f7575f80fd5b50610712600480360381019061070d91906138e8565b61175b565b60405161071f919061364e565b60405180910390f35b348015610733575f80fd5b5061073c611778565b6040516107499190613548565b60405180910390f35b34801561075d575f80fd5b5061077860048036038101906107739190613913565b611784565b6040516107859190613548565b60405180910390f35b348015610799575f80fd5b506107b460048036038101906107af91906138e8565b611806565b005b3480156107c1575f80fd5b506107ca611888565b6040516107d79190613971565b60405180910390f35b6060600380546107ef906139b7565b80601f016020809104026020016040519081016040528092919081815260200182805461081b906139b7565b80156108665780601f1061083d57610100808354040283529160200191610866565b820191905f5260205f20905b81548152906001019060200180831161084957829003601f168201915b5050505050905090565b5f600b54905090565b5f803390506108898185856118ac565b600191505092915050565b5f600254905090565b5f805f805f803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108dc9190613750565b602060405180830381865afa1580156108f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091b91906139fb565b95503073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401610979929190613a26565b602060405180830381865afa158015610994573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b891906139fb565b945060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a489190613a61565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905307f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b8152600401610aa2929190613a26565b602060405180830381865afa158015610abd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae19190613a61565b92505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614159350600b549150600c549050909192939495565b5f80339050610b37858285611a6f565b610b42858585611afa565b60019150509392505050565b600a8181548110610b5d575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b610b99611dcc565b5f3411610bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd290613afc565b60405180910390fd5b5f8111610c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1490613b8a565b60405180910390fd5b803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c579190613750565b602060405180830381865afa158015610c72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9691906139fb565b1015610cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cce90613c18565b60405180910390fd5b610d033060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836118ac565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430845f8033426040518863ffffffff1660e01b8152600401610d6896959493929190613c6f565b60606040518083038185885af193505050508015610da457506040513d601f19601f82011682018060405250810190610da19190613cce565b60015b610e0f57610dd43060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f6118ac565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0690613d68565b60405180910390fd5b5050507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b8134604051610e43929190613d86565b60405180910390a15f4790505f811115610e9c573373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610e9a573d5f803e3d5ffd5b505b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610ecc611dcc565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190613df7565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610f5e611273565b836040518363ffffffff1660e01b8152600401610f7c929190613e15565b6020604051808303815f875af1158015610f98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fbc9190613e66565b505050565b5f600c54905090565b6060600a80548060200260200160405190810160405280929190818152602001828054801561104b57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611002575b5050505050905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f600a80549050905090565b6110d3611dcc565b803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161110d9190613750565b602060405180830381865afa158015611128573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061114c91906139fb565b101561118d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118490613edb565b60405180910390fd5b611198303383611afa565b50565b6111a3611dcc565b5f600b5411806111b457505f600c54115b6111f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ea90613f43565b60405180910390fd5b5f600a805490501161123a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123190613fab565b60405180910390fd5b611242611e43565b565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601981565b600581565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b69d3c21bcecceda100000081565b68056bc75e2d6310000081565b6060600480546112c5906139b7565b80601f01602080910402602001604051908101604052809291908181526020018280546112f1906139b7565b801561133c5780601f106113135761010080835404028352916020019161133c565b820191905f5260205f20905b81548152906001019060200180831161131f57829003601f168201915b5050505050905090565b5f80339050611356818585611afa565b600191505092915050565b601981565b61136e611dcc565b5f3073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016113cb929190613a26565b602060405180830381865afa1580156113e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140a91906139fb565b905069d3c21bcecceda1000000811015611455576114543060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda10000006118ac565b5b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114af9190613750565b602060405180830381865afa1580156114ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ee91906139fb565b90505f81111561169e575f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611575929190613a26565b602060405180830381865afa158015611590573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115b491906139fb565b90508181101561169c577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161165a929190613e15565b6020604051808303815f875af1158015611676573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061169a9190613e66565b505b505b5050565b6116aa611dcc565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90614013565b60405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6009602052805f5260405f205f915054906101000a900460ff1681565b678ac7230489e8000081565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61180e611dcc565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361187c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611873906140a1565b60405180910390fd5b6118858161236f565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361191a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119119061412f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197f906141bd565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a629190613548565b60405180910390a3505050565b5f611a7a8484611784565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611af45781811015611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add90614225565b60405180910390fd5b611af384848484036118ac565b5b50505050565b611b02611273565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611b6d5750611b3e611273565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611ba357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80611bd957503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611c0057611be9838383612432565b611bf28361269e565b611bfb8261269e565b611dc7565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611ca8575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b90508015611da7575f6064600584611cc09190614270565b611cca91906142de565b90505f6103e8601985611cdd9190614270565b611ce791906142de565b90505f6103e8601986611cfa9190614270565b611d0491906142de565b90505f8386611d13919061430e565b9050611d20883086612432565b611d2b888883612432565b82600b5f828254611d3c9190614341565b9250508190555081600c5f828254611d549190614341565b9250508190555068056bc75e2d63100000600b54101580611d80575068056bc75e2d63100000600c5410155b8015611d9057505f600a80549050115b15611d9e57611d9d611e43565b5b50505050611db3565b611db2848484612432565b5b611dbc8461269e565b611dc58361269e565b505b505050565b3373ffffffffffffffffffffffffffffffffffffffff16611deb611273565b73ffffffffffffffffffffffffffffffffffffffff1614611e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e38906143be565b60405180910390fd5b565b5f600b5490505f600c5490505f8183611e5c9190614341565b90507f6f85944d879d05feade37c54fd09ce05482d063b08c263185a9400ecb991e5cd8383604051611e8f929190613d86565b60405180910390a15f3073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ed19190613750565b602060405180830381865afa158015611eec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f1091906139fb565b905081811015611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c9061444c565b60405180910390fd5b5f600b819055505f600c819055505f3073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611fc0929190613a26565b602060405180830381865afa158015611fdb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fff91906139fb565b90508281101561206c576120353060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f6118ac565b61206b3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda10000006118ac565b5b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120fb9190613a61565b73ffffffffffffffffffffffffffffffffffffffff1663e6a439053060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612181573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121a59190613a61565b6040518363ffffffff1660e01b81526004016121c2929190613a26565b602060405180830381865afa1580156121dd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122019190613a61565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612271576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612268906144b4565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f79061451c565b60405180910390fd5b5f61230a856128d8565b90505f811115612357575f8588836123229190614270565b61232c91906142de565b90505f818361233b919061430e565b90506123478983612d3e565b612350816130bb565b5050612366565b86600b8190555085600c819055505b50505050505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612497906145aa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361250e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250590614638565b60405180910390fd5b6125198383836132d9565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561259c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612593906146c6565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126859190613548565b60405180910390a36126988484846132e9565b50505050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561272757503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b156128d5575f6127368261107a565b90505f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050678ac7230489e80000821015801561279b575080155b1561285a57600160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600a83908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506128d2565b678ac7230489e800008210801561286e5750805b156128d1575f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506128d0836132f9565b5b5b50505b50565b5f80600267ffffffffffffffff8111156128f5576128f46146e4565b5b6040519080825280602002602001820160405280156129235781602001602082028036833780820191505090505b50905030815f8151811061293a57612939614711565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106129a9576129a8614711565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f3073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401612a40929190613a26565b602060405180830381865afa158015612a5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a7f91906139fb565b905083811015612b0257612ab53060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f6118ac565b612b013060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6118ac565b5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed1739855f853061012c42612b519190614341565b6040518663ffffffff1660e01b8152600401612b7195949392919061473e565b5f604051808303815f875af1925050508015612baf57506040513d5f823e3d601f19601f82011682018060405250810190612bac91906148a9565b60015b612c5d57612bbb6148fc565b806308c379a003612c1c5750612bcf61491b565b80612bda5750612c1e565b7f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072381604051612c099190613510565b60405180910390a15f9350505050612d39565b505b7f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec0723604051612c4b906149f4565b60405180910390a15f92505050612d39565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612cb79190613750565b602060405180830381865afa158015612cd2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cf691906139fb565b90507fdd819f6d4da11821175805e17c46b8094c817290420e3de00dee96b4d256dc018682604051612d29929190613d86565b60405180910390a1809450505050505b919050565b5f8111156130b7575f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401612dc3929190613a26565b602060405180830381865afa158015612dde573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e0291906139fb565b905081811015612eea577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612ea8929190613e15565b6020604051808303815f875af1158015612ec4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ee89190613e66565b505b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e33700307f0000000000000000000000000000000000000000000000000000000000000000600287612f5691906142de565b865f8030426040518963ffffffff1660e01b8152600401612f7e989796959493929190614a12565b6060604051808303815f875af1925050508015612fb957506040513d601f19601f82011682018060405250810190612fb69190613cce565b60015b61306c57612fc56148fc565b806308c379a0036130285750612fd961491b565b80612fe4575061302a565b7fa31e27a09b547b7d81f05436d3ed82a86121c091c82f730e0ab84b988ae730ad816040516130139190613510565b60405180910390a183600b8190555050613067565b505b7fa31e27a09b547b7d81f05436d3ed82a86121c091c82f730e0ab84b988ae730ad60405161305790614ad8565b60405180910390a182600b819055505b6130b5565b5050507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b60028461309d91906142de565b836040516130ac929190613d86565b60405180910390a15b505b5050565b5f811180156130ce57505f600a80549050115b156132d6575f600a80549050826130e591906142de565b90505f8111156132d4575f5b600a80549050811080156131055750606481105b15613294577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600a838154811061315a57613159614711565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016131a0929190613e15565b6020604051808303815f875af19250505080156131db57506040513d601f19601f820116820180604052508101906131d89190613e66565b60015b61327f576131e76148fc565b806308c379a00361324357506131fb61491b565b806132065750613245565b7fa38bdb001325b55fb77601b29dc4c8f483a0d03519ba5bea9ca2ee06e8b11614816040516132359190613510565b60405180910390a150613281565b505b7fa38bdb001325b55fb77601b29dc4c8f483a0d03519ba5bea9ca2ee06e8b1161460405161327290614b40565b60405180910390a1613281565b505b808061328c90614b5e565b9150506130f1565b507f6570e65a772d8d30d76e42c8d07c41bf88b28ecf39ca57095a61b4a76584c21782600a805490506040516132cb929190613d86565b60405180910390a15b505b50565b6132e483838361347c565b505050565b6132f4838383613481565b505050565b5f5b600a80549050811015613478578173ffffffffffffffffffffffffffffffffffffffff16600a828154811061333357613332614711565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361346557600a6001600a8054905061338a919061430e565b8154811061339b5761339a614711565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a82815481106133d7576133d6614711565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a80548061342e5761342d614ba5565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055613478565b808061347090614b5e565b9150506132fb565b5050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156134bd5780820151818401526020810190506134a2565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6134e282613486565b6134ec8185613490565b93506134fc8185602086016134a0565b613505816134c8565b840191505092915050565b5f6020820190508181035f83015261352881846134d8565b905092915050565b5f819050919050565b61354281613530565b82525050565b5f60208201905061355b5f830184613539565b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61359b82613572565b9050919050565b6135ab81613591565b81146135b5575f80fd5b50565b5f813590506135c6816135a2565b92915050565b6135d581613530565b81146135df575f80fd5b50565b5f813590506135f0816135cc565b92915050565b5f806040838503121561360c5761360b61356a565b5b5f613619858286016135b8565b925050602061362a858286016135e2565b9150509250929050565b5f8115159050919050565b61364881613634565b82525050565b5f6020820190506136615f83018461363f565b92915050565b61367081613591565b82525050565b5f60c0820190506136895f830189613539565b6136966020830188613539565b6136a3604083018761363f565b6136b06060830186613667565b6136bd6080830185613539565b6136ca60a0830184613539565b979650505050505050565b5f805f606084860312156136ec576136eb61356a565b5b5f6136f9868287016135b8565b935050602061370a868287016135b8565b925050604061371b868287016135e2565b9150509250925092565b5f6020828403121561373a5761373961356a565b5b5f613747848285016135e2565b91505092915050565b5f6020820190506137635f830184613667565b92915050565b5f60ff82169050919050565b61377e81613769565b82525050565b5f6020820190506137975f830184613775565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6137cf81613591565b82525050565b5f6137e083836137c6565b60208301905092915050565b5f602082019050919050565b5f6138028261379d565b61380c81856137a7565b9350613817836137b7565b805f5b8381101561384757815161382e88826137d5565b9750613839836137ec565b92505060018101905061381a565b5085935050505092915050565b5f6020820190508181035f83015261386c81846137f8565b905092915050565b5f819050919050565b5f61389761389261388d84613572565b613874565b613572565b9050919050565b5f6138a88261387d565b9050919050565b5f6138b98261389e565b9050919050565b6138c9816138af565b82525050565b5f6020820190506138e25f8301846138c0565b92915050565b5f602082840312156138fd576138fc61356a565b5b5f61390a848285016135b8565b91505092915050565b5f80604083850312156139295761392861356a565b5b5f613936858286016135b8565b9250506020613947858286016135b8565b9150509250929050565b5f61395b8261389e565b9050919050565b61396b81613951565b82525050565b5f6020820190506139845f830184613962565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806139ce57607f821691505b6020821081036139e1576139e061398a565b5b50919050565b5f815190506139f5816135cc565b92915050565b5f60208284031215613a1057613a0f61356a565b5b5f613a1d848285016139e7565b91505092915050565b5f604082019050613a395f830185613667565b613a466020830184613667565b9392505050565b5f81519050613a5b816135a2565b92915050565b5f60208284031215613a7657613a7561356a565b5b5f613a8384828501613a4d565b91505092915050565b7f4d7573742070726f766964652045544820666f7220696e697469616c206c69715f8201527f7569646974790000000000000000000000000000000000000000000000000000602082015250565b5f613ae6602683613490565b9150613af182613a8c565b604082019050919050565b5f6020820190508181035f830152613b1381613ada565b9050919050565b7f4d7573742070726f7669646520746f6b656e20616d6f756e7420666f7220696e5f8201527f697469616c206c69717569646974790000000000000000000000000000000000602082015250565b5f613b74602f83613490565b9150613b7f82613b1a565b604082019050919050565b5f6020820190508181035f830152613ba181613b68565b9050919050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520696e20636f5f8201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b5f613c02602683613490565b9150613c0d82613ba8565b604082019050919050565b5f6020820190508181035f830152613c2f81613bf6565b9050919050565b5f819050919050565b5f613c59613c54613c4f84613c36565b613874565b613530565b9050919050565b613c6981613c3f565b82525050565b5f60c082019050613c825f830189613667565b613c8f6020830188613539565b613c9c6040830187613c60565b613ca96060830186613c60565b613cb66080830185613667565b613cc360a0830184613539565b979650505050505050565b5f805f60608486031215613ce557613ce461356a565b5b5f613cf2868287016139e7565b9350506020613d03868287016139e7565b9250506040613d14868287016139e7565b9150509250925092565b7f4661696c656420746f20616464206c69717569646974790000000000000000005f82015250565b5f613d52601783613490565b9150613d5d82613d1e565b602082019050919050565b5f6020820190508181035f830152613d7f81613d46565b9050919050565b5f604082019050613d995f830185613539565b613da66020830184613539565b9392505050565b7f43616e6e6f7420726573637565204641524d455220746f6b656e7300000000005f82015250565b5f613de1601b83613490565b9150613dec82613dad565b602082019050919050565b5f6020820190508181035f830152613e0e81613dd5565b9050919050565b5f604082019050613e285f830185613667565b613e356020830184613539565b9392505050565b613e4581613634565b8114613e4f575f80fd5b50565b5f81519050613e6081613e3c565b92915050565b5f60208284031215613e7b57613e7a61356a565b5b5f613e8884828501613e52565b91505092915050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f613ec5601483613490565b9150613ed082613e91565b602082019050919050565b5f6020820190508181035f830152613ef281613eb9565b9050919050565b7f4e6f2070656e64696e6720746f6b656e730000000000000000000000000000005f82015250565b5f613f2d601183613490565b9150613f3882613ef9565b602082019050919050565b5f6020820190508181035f830152613f5a81613f21565b9050919050565b7f4e6f20686f6c64657273000000000000000000000000000000000000000000005f82015250565b5f613f95600a83613490565b9150613fa082613f61565b602082019050919050565b5f6020820190508181035f830152613fc281613f89565b9050919050565b7f496e76616c696420726f757465722061646472657373000000000000000000005f82015250565b5f613ffd601683613490565b915061400882613fc9565b602082019050919050565b5f6020820190508181035f83015261402a81613ff1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61408b602683613490565b915061409682614031565b604082019050919050565b5f6020820190508181035f8301526140b88161407f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614119602483613490565b9150614124826140bf565b604082019050919050565b5f6020820190508181035f8301526141468161410d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6141a7602283613490565b91506141b28261414d565b604082019050919050565b5f6020820190508181035f8301526141d48161419b565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f61420f601d83613490565b915061421a826141db565b602082019050919050565b5f6020820190508181035f83015261423c81614203565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61427a82613530565b915061428583613530565b925082820261429381613530565b915082820484148315176142aa576142a9614243565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6142e882613530565b91506142f383613530565b925082614303576143026142b1565b5b828204905092915050565b5f61431882613530565b915061432383613530565b925082820390508181111561433b5761433a614243565b5b92915050565b5f61434b82613530565b915061435683613530565b925082820190508082111561436e5761436d614243565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6143a8602083613490565b91506143b382614374565b602082019050919050565b5f6020820190508181035f8301526143d58161439c565b9050919050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520666f7220735f8201527f7761700000000000000000000000000000000000000000000000000000000000602082015250565b5f614436602383613490565b9150614441826143dc565b604082019050919050565b5f6020820190508181035f8301526144638161442a565b9050919050565b7f4c6971756964697479207061697220646f6573206e6f742065786973740000005f82015250565b5f61449e601d83613490565b91506144a98261446a565b602082019050919050565b5f6020820190508181035f8301526144cb81614492565b9050919050565b7f496e76616c6964206c69717569646974792070616972000000000000000000005f82015250565b5f614506601683613490565b9150614511826144d2565b602082019050919050565b5f6020820190508181035f830152614533816144fa565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614594602583613490565b915061459f8261453a565b604082019050919050565b5f6020820190508181035f8301526145c181614588565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614622602383613490565b915061462d826145c8565b604082019050919050565b5f6020820190508181035f83015261464f81614616565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6146b0602683613490565b91506146bb82614656565b604082019050919050565b5f6020820190508181035f8301526146dd816146a4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60a0820190506147515f830188613539565b61475e6020830187613c60565b818103604083015261477081866137f8565b905061477f6060830185613667565b61478c6080830184613539565b9695505050505050565b5f80fd5b6147a3826134c8565b810181811067ffffffffffffffff821117156147c2576147c16146e4565b5b80604052505050565b5f6147d4613561565b90506147e0828261479a565b919050565b5f67ffffffffffffffff8211156147ff576147fe6146e4565b5b602082029050602081019050919050565b5f80fd5b5f614826614821846147e5565b6147cb565b9050808382526020820190506020840283018581111561484957614848614810565b5b835b81811015614872578061485e88826139e7565b84526020840193505060208101905061484b565b5050509392505050565b5f82601f8301126148905761488f614796565b5b81516148a0848260208601614814565b91505092915050565b5f602082840312156148be576148bd61356a565b5b5f82015167ffffffffffffffff8111156148db576148da61356e565b5b6148e78482850161487c565b91505092915050565b5f8160e01c9050919050565b5f60033d11156149185760045f803e6149155f516148f0565b90505b90565b5f60443d106149a75761492c613561565b60043d036004823e80513d602482011167ffffffffffffffff821117156149545750506149a7565b808201805167ffffffffffffffff81111561497257505050506149a7565b80602083010160043d03850181111561498f5750505050506149a7565b61499e8260200185018661479a565b82955050505050505b90565b7f556e6b6e6f776e206572726f7220696e207377617000000000000000000000005f82015250565b5f6149de601583613490565b91506149e9826149aa565b602082019050919050565b5f6020820190508181035f830152614a0b816149d2565b9050919050565b5f61010082019050614a265f83018b613667565b614a33602083018a613667565b614a406040830189613539565b614a4d6060830188613539565b614a5a6080830187613c60565b614a6760a0830186613c60565b614a7460c0830185613667565b614a8160e0830184613539565b9998505050505050505050565b7f556e6b6e6f776e206572726f7220696e206164644c69717569646974790000005f82015250565b5f614ac2601d83613490565b9150614acd82614a8e565b602082019050919050565b5f6020820190508181035f830152614aef81614ab6565b9050919050565b7f556e6b6e6f776e206572726f7220696e2057455448207472616e7366657200005f82015250565b5f614b2a601e83613490565b9150614b3582614af6565b602082019050919050565b5f6020820190508181035f830152614b5781614b1e565b9050919050565b5f614b6882613530565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614b9a57614b99614243565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220d434b6a21bd899ef9547991d2143e711ecb50d46769384ba849f2b54a2f4243064736f6c63430008140033
Deployed Bytecode
0x6080604052600436106101fc575f3560e01c80637ac84fc11161010c578063a9059cbb1161009f578063d4d7b19a1161006e578063d4d7b19a146106ec578063d4e123a614610728578063dd62ed3e14610752578063f2fde38b1461078e578063fd7c9fab146107b657610203565b8063a9059cbb14610648578063bc531dae14610684578063c026d93a146106ae578063c0d78655146106c457610203565b80638da5cb5b116100db5780638da5cb5b146105a0578063902d55a5146105ca57806395a6e254146105f457806395d89b411461061e57610203565b80637ac84fc11461050c578063808a54571461052257806381f0549f1461054c57806383f170be1461057657610203565b806341a22cc21161018f5780635fe8e7cc1161015e5780635fe8e7cc1461042a57806362b6327a1461045457806370a082311461047e5780637136982b146104ba57806379304bec146104e457610203565b806341a22cc214610392578063461a3a95146103ae57806357376198146103d85780635d76b04c1461040057610203565b80631b26c80d116101cb5780631b26c80d146102c157806323b872dd146102f05780632a11ced01461032c578063313ce5671461036857610203565b806306fdde031461020757806308dee2b414610231578063095ea7b31461025b57806318160ddd1461029757610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b6107e0565b6040516102289190613510565b60405180910390f35b34801561023c575f80fd5b50610245610870565b6040516102529190613548565b60405180910390f35b348015610266575f80fd5b50610281600480360381019061027c91906135f6565b610879565b60405161028e919061364e565b60405180910390f35b3480156102a2575f80fd5b506102ab610894565b6040516102b89190613548565b60405180910390f35b3480156102cc575f80fd5b506102d561089d565b6040516102e796959493929190613676565b60405180910390f35b3480156102fb575f80fd5b50610316600480360381019061031191906136d5565b610b27565b604051610323919061364e565b60405180910390f35b348015610337575f80fd5b50610352600480360381019061034d9190613725565b610b4e565b60405161035f9190613750565b60405180910390f35b348015610373575f80fd5b5061037c610b89565b6040516103899190613784565b60405180910390f35b6103ac60048036038101906103a79190613725565b610b91565b005b3480156103b9575f80fd5b506103c2610ea0565b6040516103cf9190613750565b60405180910390f35b3480156103e3575f80fd5b506103fe60048036038101906103f991906135f6565b610ec4565b005b34801561040b575f80fd5b50610414610fc1565b6040516104219190613548565b60405180910390f35b348015610435575f80fd5b5061043e610fca565b60405161044b9190613854565b60405180910390f35b34801561045f575f80fd5b50610468611055565b60405161047591906138cf565b60405180910390f35b348015610489575f80fd5b506104a4600480360381019061049f91906138e8565b61107a565b6040516104b19190613548565b60405180910390f35b3480156104c5575f80fd5b506104ce6110bf565b6040516104db9190613548565b60405180910390f35b3480156104ef575f80fd5b5061050a60048036038101906105059190613725565b6110cb565b005b348015610517575f80fd5b5061052061119b565b005b34801561052d575f80fd5b50610536611244565b6040516105439190613750565b60405180910390f35b348015610557575f80fd5b50610560611269565b60405161056d9190613548565b60405180910390f35b348015610581575f80fd5b5061058a61126e565b6040516105979190613548565b60405180910390f35b3480156105ab575f80fd5b506105b4611273565b6040516105c19190613750565b60405180910390f35b3480156105d5575f80fd5b506105de61129b565b6040516105eb9190613548565b60405180910390f35b3480156105ff575f80fd5b506106086112a9565b6040516106159190613548565b60405180910390f35b348015610629575f80fd5b506106326112b6565b60405161063f9190613510565b60405180910390f35b348015610653575f80fd5b5061066e600480360381019061066991906135f6565b611346565b60405161067b919061364e565b60405180910390f35b34801561068f575f80fd5b50610698611361565b6040516106a59190613548565b60405180910390f35b3480156106b9575f80fd5b506106c2611366565b005b3480156106cf575f80fd5b506106ea60048036038101906106e591906138e8565b6116a2565b005b3480156106f7575f80fd5b50610712600480360381019061070d91906138e8565b61175b565b60405161071f919061364e565b60405180910390f35b348015610733575f80fd5b5061073c611778565b6040516107499190613548565b60405180910390f35b34801561075d575f80fd5b5061077860048036038101906107739190613913565b611784565b6040516107859190613548565b60405180910390f35b348015610799575f80fd5b506107b460048036038101906107af91906138e8565b611806565b005b3480156107c1575f80fd5b506107ca611888565b6040516107d79190613971565b60405180910390f35b6060600380546107ef906139b7565b80601f016020809104026020016040519081016040528092919081815260200182805461081b906139b7565b80156108665780601f1061083d57610100808354040283529160200191610866565b820191905f5260205f20905b81548152906001019060200180831161084957829003601f168201915b5050505050905090565b5f600b54905090565b5f803390506108898185856118ac565b600191505092915050565b5f600254905090565b5f805f805f803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108dc9190613750565b602060405180830381865afa1580156108f7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061091b91906139fb565b95503073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401610979929190613a26565b602060405180830381865afa158015610994573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b891906139fb565b945060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a489190613a61565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905307f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386040518363ffffffff1660e01b8152600401610aa2929190613a26565b602060405180830381865afa158015610abd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae19190613a61565b92505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614159350600b549150600c549050909192939495565b5f80339050610b37858285611a6f565b610b42858585611afa565b60019150509392505050565b600a8181548110610b5d575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b610b99611dcc565b5f3411610bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd290613afc565b60405180910390fd5b5f8111610c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1490613b8a565b60405180910390fd5b803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c579190613750565b602060405180830381865afa158015610c72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9691906139fb565b1015610cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cce90613c18565b60405180910390fd5b610d033060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836118ac565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430845f8033426040518863ffffffff1660e01b8152600401610d6896959493929190613c6f565b60606040518083038185885af193505050508015610da457506040513d601f19601f82011682018060405250810190610da19190613cce565b60015b610e0f57610dd43060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f6118ac565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0690613d68565b60405180910390fd5b5050507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b8134604051610e43929190613d86565b60405180910390a15f4790505f811115610e9c573373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610e9a573d5f803e3d5ffd5b505b5050565b7f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3881565b610ecc611dcc565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190613df7565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610f5e611273565b836040518363ffffffff1660e01b8152600401610f7c929190613e15565b6020604051808303815f875af1158015610f98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fbc9190613e66565b505050565b5f600c54905090565b6060600a80548060200260200160405190810160405280929190818152602001828054801561104b57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611002575b5050505050905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f600a80549050905090565b6110d3611dcc565b803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161110d9190613750565b602060405180830381865afa158015611128573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061114c91906139fb565b101561118d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118490613edb565b60405180910390fd5b611198303383611afa565b50565b6111a3611dcc565b5f600b5411806111b457505f600c54115b6111f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ea90613f43565b60405180910390fd5b5f600a805490501161123a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123190613fab565b60405180910390fd5b611242611e43565b565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601981565b600581565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b69d3c21bcecceda100000081565b68056bc75e2d6310000081565b6060600480546112c5906139b7565b80601f01602080910402602001604051908101604052809291908181526020018280546112f1906139b7565b801561133c5780601f106113135761010080835404028352916020019161133c565b820191905f5260205f20905b81548152906001019060200180831161131f57829003601f168201915b5050505050905090565b5f80339050611356818585611afa565b600191505092915050565b601981565b61136e611dcc565b5f3073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016113cb929190613a26565b602060405180830381865afa1580156113e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140a91906139fb565b905069d3c21bcecceda1000000811015611455576114543060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda10000006118ac565b5b5f7f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114af9190613750565b602060405180830381865afa1580156114ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ee91906139fb565b90505f81111561169e575f7f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3873ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611575929190613a26565b602060405180830381865afa158015611590573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115b491906139fb565b90508181101561169c577f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3873ffffffffffffffffffffffffffffffffffffffff1663095ea7b360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161165a929190613e15565b6020604051808303815f875af1158015611676573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061169a9190613e66565b505b505b5050565b6116aa611dcc565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170f90614013565b60405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6009602052805f5260405f205f915054906101000a900460ff1681565b678ac7230489e8000081565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61180e611dcc565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361187c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611873906140a1565b60405180910390fd5b6118858161236f565b50565b7f0000000000000000000000001570300e9cfec66c9fb0c8bc14366c86eb170ad081565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361191a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119119061412f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197f906141bd565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a629190613548565b60405180910390a3505050565b5f611a7a8484611784565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611af45781811015611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add90614225565b60405180910390fd5b611af384848484036118ac565b5b50505050565b611b02611273565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611b6d5750611b3e611273565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611ba357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80611bd957503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611c0057611be9838383612432565b611bf28361269e565b611bfb8261269e565b611dc7565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611ca8575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b90508015611da7575f6064600584611cc09190614270565b611cca91906142de565b90505f6103e8601985611cdd9190614270565b611ce791906142de565b90505f6103e8601986611cfa9190614270565b611d0491906142de565b90505f8386611d13919061430e565b9050611d20883086612432565b611d2b888883612432565b82600b5f828254611d3c9190614341565b9250508190555081600c5f828254611d549190614341565b9250508190555068056bc75e2d63100000600b54101580611d80575068056bc75e2d63100000600c5410155b8015611d9057505f600a80549050115b15611d9e57611d9d611e43565b5b50505050611db3565b611db2848484612432565b5b611dbc8461269e565b611dc58361269e565b505b505050565b3373ffffffffffffffffffffffffffffffffffffffff16611deb611273565b73ffffffffffffffffffffffffffffffffffffffff1614611e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e38906143be565b60405180910390fd5b565b5f600b5490505f600c5490505f8183611e5c9190614341565b90507f6f85944d879d05feade37c54fd09ce05482d063b08c263185a9400ecb991e5cd8383604051611e8f929190613d86565b60405180910390a15f3073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ed19190613750565b602060405180830381865afa158015611eec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f1091906139fb565b905081811015611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c9061444c565b60405180910390fd5b5f600b819055505f600c819055505f3073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611fc0929190613a26565b602060405180830381865afa158015611fdb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fff91906139fb565b90508281101561206c576120353060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f6118ac565b61206b3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda10000006118ac565b5b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120fb9190613a61565b73ffffffffffffffffffffffffffffffffffffffff1663e6a439053060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612181573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121a59190613a61565b6040518363ffffffff1660e01b81526004016121c2929190613a26565b602060405180830381865afa1580156121dd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122019190613a61565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612271576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612268906144b4565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f79061451c565b60405180910390fd5b5f61230a856128d8565b90505f811115612357575f8588836123229190614270565b61232c91906142de565b90505f818361233b919061430e565b90506123478983612d3e565b612350816130bb565b5050612366565b86600b8190555085600c819055505b50505050505050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612497906145aa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361250e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250590614638565b60405180910390fd5b6125198383836132d9565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561259c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612593906146c6565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126859190613548565b60405180910390a36126988484846132e9565b50505050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561272757503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b156128d5575f6127368261107a565b90505f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050678ac7230489e80000821015801561279b575080155b1561285a57600160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600a83908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506128d2565b678ac7230489e800008210801561286e5750805b156128d1575f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506128d0836132f9565b5b5b50505b50565b5f80600267ffffffffffffffff8111156128f5576128f46146e4565b5b6040519080825280602002602001820160405280156129235781602001602082028036833780820191505090505b50905030815f8151811061293a57612939614711565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38816001815181106129a9576129a8614711565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f3073ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401612a40929190613a26565b602060405180830381865afa158015612a5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a7f91906139fb565b905083811015612b0257612ab53060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f6118ac565b612b013060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6118ac565b5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed1739855f853061012c42612b519190614341565b6040518663ffffffff1660e01b8152600401612b7195949392919061473e565b5f604051808303815f875af1925050508015612baf57506040513d5f823e3d601f19601f82011682018060405250810190612bac91906148a9565b60015b612c5d57612bbb6148fc565b806308c379a003612c1c5750612bcf61491b565b80612bda5750612c1e565b7f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec072381604051612c099190613510565b60405180910390a15f9350505050612d39565b505b7f4ecb9b6d2e2efee3f1b1b86927f5895fc3f627ac91d5ebfe344df8ae1eec0723604051612c4b906149f4565b60405180910390a15f92505050612d39565b5f7f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612cb79190613750565b602060405180830381865afa158015612cd2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cf691906139fb565b90507fdd819f6d4da11821175805e17c46b8094c817290420e3de00dee96b4d256dc018682604051612d29929190613d86565b60405180910390a1809450505050505b919050565b5f8111156130b7575f7f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3873ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401612dc3929190613a26565b602060405180830381865afa158015612dde573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e0291906139fb565b905081811015612eea577f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3873ffffffffffffffffffffffffffffffffffffffff1663095ea7b360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612ea8929190613e15565b6020604051808303815f875af1158015612ec4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ee89190613e66565b505b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e33700307f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38600287612f5691906142de565b865f8030426040518963ffffffff1660e01b8152600401612f7e989796959493929190614a12565b6060604051808303815f875af1925050508015612fb957506040513d601f19601f82011682018060405250810190612fb69190613cce565b60015b61306c57612fc56148fc565b806308c379a0036130285750612fd961491b565b80612fe4575061302a565b7fa31e27a09b547b7d81f05436d3ed82a86121c091c82f730e0ab84b988ae730ad816040516130139190613510565b60405180910390a183600b8190555050613067565b505b7fa31e27a09b547b7d81f05436d3ed82a86121c091c82f730e0ab84b988ae730ad60405161305790614ad8565b60405180910390a182600b819055505b6130b5565b5050507f38f8a0c92f4c5b0b6877f878cb4c0c8d348a47b76d716c8e78f425043df9515b60028461309d91906142de565b836040516130ac929190613d86565b60405180910390a15b505b5050565b5f811180156130ce57505f600a80549050115b156132d6575f600a80549050826130e591906142de565b90505f8111156132d4575f5b600a80549050811080156131055750606481105b15613294577f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600a838154811061315a57613159614711565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016131a0929190613e15565b6020604051808303815f875af19250505080156131db57506040513d601f19601f820116820180604052508101906131d89190613e66565b60015b61327f576131e76148fc565b806308c379a00361324357506131fb61491b565b806132065750613245565b7fa38bdb001325b55fb77601b29dc4c8f483a0d03519ba5bea9ca2ee06e8b11614816040516132359190613510565b60405180910390a150613281565b505b7fa38bdb001325b55fb77601b29dc4c8f483a0d03519ba5bea9ca2ee06e8b1161460405161327290614b40565b60405180910390a1613281565b505b808061328c90614b5e565b9150506130f1565b507f6570e65a772d8d30d76e42c8d07c41bf88b28ecf39ca57095a61b4a76584c21782600a805490506040516132cb929190613d86565b60405180910390a15b505b50565b6132e483838361347c565b505050565b6132f4838383613481565b505050565b5f5b600a80549050811015613478578173ffffffffffffffffffffffffffffffffffffffff16600a828154811061333357613332614711565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361346557600a6001600a8054905061338a919061430e565b8154811061339b5761339a614711565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a82815481106133d7576133d6614711565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a80548061342e5761342d614ba5565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055613478565b808061347090614b5e565b9150506132fb565b5050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156134bd5780820151818401526020810190506134a2565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6134e282613486565b6134ec8185613490565b93506134fc8185602086016134a0565b613505816134c8565b840191505092915050565b5f6020820190508181035f83015261352881846134d8565b905092915050565b5f819050919050565b61354281613530565b82525050565b5f60208201905061355b5f830184613539565b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61359b82613572565b9050919050565b6135ab81613591565b81146135b5575f80fd5b50565b5f813590506135c6816135a2565b92915050565b6135d581613530565b81146135df575f80fd5b50565b5f813590506135f0816135cc565b92915050565b5f806040838503121561360c5761360b61356a565b5b5f613619858286016135b8565b925050602061362a858286016135e2565b9150509250929050565b5f8115159050919050565b61364881613634565b82525050565b5f6020820190506136615f83018461363f565b92915050565b61367081613591565b82525050565b5f60c0820190506136895f830189613539565b6136966020830188613539565b6136a3604083018761363f565b6136b06060830186613667565b6136bd6080830185613539565b6136ca60a0830184613539565b979650505050505050565b5f805f606084860312156136ec576136eb61356a565b5b5f6136f9868287016135b8565b935050602061370a868287016135b8565b925050604061371b868287016135e2565b9150509250925092565b5f6020828403121561373a5761373961356a565b5b5f613747848285016135e2565b91505092915050565b5f6020820190506137635f830184613667565b92915050565b5f60ff82169050919050565b61377e81613769565b82525050565b5f6020820190506137975f830184613775565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6137cf81613591565b82525050565b5f6137e083836137c6565b60208301905092915050565b5f602082019050919050565b5f6138028261379d565b61380c81856137a7565b9350613817836137b7565b805f5b8381101561384757815161382e88826137d5565b9750613839836137ec565b92505060018101905061381a565b5085935050505092915050565b5f6020820190508181035f83015261386c81846137f8565b905092915050565b5f819050919050565b5f61389761389261388d84613572565b613874565b613572565b9050919050565b5f6138a88261387d565b9050919050565b5f6138b98261389e565b9050919050565b6138c9816138af565b82525050565b5f6020820190506138e25f8301846138c0565b92915050565b5f602082840312156138fd576138fc61356a565b5b5f61390a848285016135b8565b91505092915050565b5f80604083850312156139295761392861356a565b5b5f613936858286016135b8565b9250506020613947858286016135b8565b9150509250929050565b5f61395b8261389e565b9050919050565b61396b81613951565b82525050565b5f6020820190506139845f830184613962565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806139ce57607f821691505b6020821081036139e1576139e061398a565b5b50919050565b5f815190506139f5816135cc565b92915050565b5f60208284031215613a1057613a0f61356a565b5b5f613a1d848285016139e7565b91505092915050565b5f604082019050613a395f830185613667565b613a466020830184613667565b9392505050565b5f81519050613a5b816135a2565b92915050565b5f60208284031215613a7657613a7561356a565b5b5f613a8384828501613a4d565b91505092915050565b7f4d7573742070726f766964652045544820666f7220696e697469616c206c69715f8201527f7569646974790000000000000000000000000000000000000000000000000000602082015250565b5f613ae6602683613490565b9150613af182613a8c565b604082019050919050565b5f6020820190508181035f830152613b1381613ada565b9050919050565b7f4d7573742070726f7669646520746f6b656e20616d6f756e7420666f7220696e5f8201527f697469616c206c69717569646974790000000000000000000000000000000000602082015250565b5f613b74602f83613490565b9150613b7f82613b1a565b604082019050919050565b5f6020820190508181035f830152613ba181613b68565b9050919050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520696e20636f5f8201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b5f613c02602683613490565b9150613c0d82613ba8565b604082019050919050565b5f6020820190508181035f830152613c2f81613bf6565b9050919050565b5f819050919050565b5f613c59613c54613c4f84613c36565b613874565b613530565b9050919050565b613c6981613c3f565b82525050565b5f60c082019050613c825f830189613667565b613c8f6020830188613539565b613c9c6040830187613c60565b613ca96060830186613c60565b613cb66080830185613667565b613cc360a0830184613539565b979650505050505050565b5f805f60608486031215613ce557613ce461356a565b5b5f613cf2868287016139e7565b9350506020613d03868287016139e7565b9250506040613d14868287016139e7565b9150509250925092565b7f4661696c656420746f20616464206c69717569646974790000000000000000005f82015250565b5f613d52601783613490565b9150613d5d82613d1e565b602082019050919050565b5f6020820190508181035f830152613d7f81613d46565b9050919050565b5f604082019050613d995f830185613539565b613da66020830184613539565b9392505050565b7f43616e6e6f7420726573637565204641524d455220746f6b656e7300000000005f82015250565b5f613de1601b83613490565b9150613dec82613dad565b602082019050919050565b5f6020820190508181035f830152613e0e81613dd5565b9050919050565b5f604082019050613e285f830185613667565b613e356020830184613539565b9392505050565b613e4581613634565b8114613e4f575f80fd5b50565b5f81519050613e6081613e3c565b92915050565b5f60208284031215613e7b57613e7a61356a565b5b5f613e8884828501613e52565b91505092915050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f613ec5601483613490565b9150613ed082613e91565b602082019050919050565b5f6020820190508181035f830152613ef281613eb9565b9050919050565b7f4e6f2070656e64696e6720746f6b656e730000000000000000000000000000005f82015250565b5f613f2d601183613490565b9150613f3882613ef9565b602082019050919050565b5f6020820190508181035f830152613f5a81613f21565b9050919050565b7f4e6f20686f6c64657273000000000000000000000000000000000000000000005f82015250565b5f613f95600a83613490565b9150613fa082613f61565b602082019050919050565b5f6020820190508181035f830152613fc281613f89565b9050919050565b7f496e76616c696420726f757465722061646472657373000000000000000000005f82015250565b5f613ffd601683613490565b915061400882613fc9565b602082019050919050565b5f6020820190508181035f83015261402a81613ff1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61408b602683613490565b915061409682614031565b604082019050919050565b5f6020820190508181035f8301526140b88161407f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614119602483613490565b9150614124826140bf565b604082019050919050565b5f6020820190508181035f8301526141468161410d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6141a7602283613490565b91506141b28261414d565b604082019050919050565b5f6020820190508181035f8301526141d48161419b565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f61420f601d83613490565b915061421a826141db565b602082019050919050565b5f6020820190508181035f83015261423c81614203565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61427a82613530565b915061428583613530565b925082820261429381613530565b915082820484148315176142aa576142a9614243565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6142e882613530565b91506142f383613530565b925082614303576143026142b1565b5b828204905092915050565b5f61431882613530565b915061432383613530565b925082820390508181111561433b5761433a614243565b5b92915050565b5f61434b82613530565b915061435683613530565b925082820190508082111561436e5761436d614243565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6143a8602083613490565b91506143b382614374565b602082019050919050565b5f6020820190508181035f8301526143d58161439c565b9050919050565b7f496e73756666696369656e7420746f6b656e2062616c616e636520666f7220735f8201527f7761700000000000000000000000000000000000000000000000000000000000602082015250565b5f614436602383613490565b9150614441826143dc565b604082019050919050565b5f6020820190508181035f8301526144638161442a565b9050919050565b7f4c6971756964697479207061697220646f6573206e6f742065786973740000005f82015250565b5f61449e601d83613490565b91506144a98261446a565b602082019050919050565b5f6020820190508181035f8301526144cb81614492565b9050919050565b7f496e76616c6964206c69717569646974792070616972000000000000000000005f82015250565b5f614506601683613490565b9150614511826144d2565b602082019050919050565b5f6020820190508181035f830152614533816144fa565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614594602583613490565b915061459f8261453a565b604082019050919050565b5f6020820190508181035f8301526145c181614588565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614622602383613490565b915061462d826145c8565b604082019050919050565b5f6020820190508181035f83015261464f81614616565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6146b0602683613490565b91506146bb82614656565b604082019050919050565b5f6020820190508181035f8301526146dd816146a4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60a0820190506147515f830188613539565b61475e6020830187613c60565b818103604083015261477081866137f8565b905061477f6060830185613667565b61478c6080830184613539565b9695505050505050565b5f80fd5b6147a3826134c8565b810181811067ffffffffffffffff821117156147c2576147c16146e4565b5b80604052505050565b5f6147d4613561565b90506147e0828261479a565b919050565b5f67ffffffffffffffff8211156147ff576147fe6146e4565b5b602082029050602081019050919050565b5f80fd5b5f614826614821846147e5565b6147cb565b9050808382526020820190506020840283018581111561484957614848614810565b5b835b81811015614872578061485e88826139e7565b84526020840193505060208101905061484b565b5050509392505050565b5f82601f8301126148905761488f614796565b5b81516148a0848260208601614814565b91505092915050565b5f602082840312156148be576148bd61356a565b5b5f82015167ffffffffffffffff8111156148db576148da61356e565b5b6148e78482850161487c565b91505092915050565b5f8160e01c9050919050565b5f60033d11156149185760045f803e6149155f516148f0565b90505b90565b5f60443d106149a75761492c613561565b60043d036004823e80513d602482011167ffffffffffffffff821117156149545750506149a7565b808201805167ffffffffffffffff81111561497257505050506149a7565b80602083010160043d03850181111561498f5750505050506149a7565b61499e8260200185018661479a565b82955050505050505b90565b7f556e6b6e6f776e206572726f7220696e207377617000000000000000000000005f82015250565b5f6149de601583613490565b91506149e9826149aa565b602082019050919050565b5f6020820190508181035f830152614a0b816149d2565b9050919050565b5f61010082019050614a265f83018b613667565b614a33602083018a613667565b614a406040830189613539565b614a4d6060830188613539565b614a5a6080830187613c60565b614a6760a0830186613c60565b614a7460c0830185613667565b614a8160e0830184613539565b9998505050505050505050565b7f556e6b6e6f776e206572726f7220696e206164644c69717569646974790000005f82015250565b5f614ac2601d83613490565b9150614acd82614a8e565b602082019050919050565b5f6020820190508181035f830152614aef81614ab6565b9050919050565b7f556e6b6e6f776e206572726f7220696e2057455448207472616e7366657200005f82015250565b5f614b2a601e83613490565b9150614b3582614af6565b602082019050919050565b5f6020820190508181035f830152614b5781614b1e565b9050919050565b5f614b6882613530565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614b9a57614b99614243565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220d434b6a21bd899ef9547991d2143e711ecb50d46769384ba849f2b54a2f4243064736f6c63430008140033
Deployed Bytecode Sourcemap
7514:15029:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2940:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20450:118;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3807:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3234:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21849:654;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;4005:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8292:24;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3142:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18236:1446;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8142:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19884:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20576:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18062:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8034:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3341:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17952:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20133:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20755:254;;;;;;;;;;;;;:::i;:::-;;8184:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7703:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7654:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1853:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7590:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7890:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3039:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3467:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7760:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21017:801;;;;;;;;;;;;;:::i;:::-;;19690:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8245:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7815:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3657:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2086:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8082:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2940:91;2985:13;3018:5;3011:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2940:91;:::o;20450:118::-;20510:7;20537:23;;20530:30;;20450:118;:::o;3807:190::-;3881:4;3898:13;3914:10;3898:26;;3935:32;3944:5;3951:7;3960:6;3935:8;:32::i;:::-;3985:4;3978:11;;;3807:190;;;;:::o;3234:99::-;3286:7;3313:12;;3306:19;;3234:99;:::o;21849:654::-;21905:23;21939;21973:15;21999:12;22022:18;22051:22;22125:4;22110:31;;;22150:4;22110:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22092:64;;22200:4;22185:31;;;22225:4;22240:16;;;;;;;;;;;22185:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22167:91;;22295:16;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22276:54;;;22339:4;22346:10;22276:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22269:88;;22397:1;22381:18;;:4;:18;;;;22368:31;;22423:23;;22410:36;;22474:21;;22457:38;;21849:654;;;;;;:::o;4005:250::-;4093:4;4110:15;4128:10;4110:28;;4149:38;4165:4;4171:7;4180:6;4149:15;:38::i;:::-;4198:27;4208:4;4214:2;4218:6;4198:9;:27::i;:::-;4243:4;4236:11;;;4005:250;;;;;:::o;8292:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3142:84::-;3191:5;3216:2;3209:9;;3142:84;:::o;18236:1446::-;1812:13;:11;:13::i;:::-;18344:1:::1;18332:9;:13;18324:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18421:1;18407:11;:15;18399:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;18602:11;18567:4;18552:31;;;18592:4;18552:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:61;;18530:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;18758:63;18775:4;18790:16;;;;;;;;;;;18809:11;18758:8;:63::i;:::-;18884:16;;;;;;;;;;;:32;;;18924:9;18957:4;18977:11;19003:1;19059::::0;19113:10:::1;19181:15;18884:346;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;18880:603;;19370:53;19387:4;19402:16;;;;;;;;;;;19421:1;19370:8;:53::i;:::-;19438:33;;;;;;;;;;:::i;:::-;;;;;;;;18880:603;;;;19251:38;19266:11;19279:9;19251:38;;;;;;;:::i;:::-;;;;;;;;19529:20;19552:21;19529:44;;19603:1;19588:12;:16;19584:91;;;19629:10;19621:28;;:42;19650:12;19621:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;19584:91;18313:1369;18236:1446:::0;:::o;8142:35::-;;;:::o;19884:208::-;1812:13;:11;:13::i;:::-;19995:4:::1;19977:23;;:6;:23;;::::0;19969:63:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20050:6;20043:23;;;20067:7;:5;:7::i;:::-;20076;20043:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19884:208:::0;;:::o;20576:114::-;20634:7;20661:21;;20654:28;;20576:114;:::o;18062:96::-;18107:16;18143:7;18136:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18062:96;:::o;8034:41::-;;;;;;;;;;;;;:::o;3341:118::-;3406:7;3433:9;:18;3443:7;3433:18;;;;;;;;;;;;;;;;3426:25;;3341:118;;;:::o;17952:98::-;18001:7;18028;:14;;;;18021:21;;17952:98;:::o;20133:266::-;1812:13;:11;:13::i;:::-;20282:6:::1;20247:4;20232:31;;;20272:4;20232:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;;20210:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;20347:44;20365:4;20372:10;20384:6;20347:9;:44::i;:::-;20133:266:::0;:::o;20755:254::-;1812:13;:11;:13::i;:::-;20857:1:::1;20831:23;;:27;:56;;;;20886:1;20862:21;;:25;20831:56;20823:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;20945:1;20928:7;:14;;;;:18;20920:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;20972:29;:27;:29::i;:::-;20755:254::o:0;8184:28::-;;;;;;;;;;;;;:::o;7703:42::-;7743:2;7703:42;:::o;7654:36::-;7689:1;7654:36;:::o;1853:87::-;1899:7;1926:6;;;;;;;;;;;1919:13;;1853:87;:::o;7590:57::-;7629:18;7590:57;:::o;7890:61::-;7939:12;7890:61;:::o;3039:95::-;3086:13;3119:7;3112:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3039:95;:::o;3467:182::-;3537:4;3554:13;3570:10;3554:26;;3591:28;3601:5;3608:2;3612:6;3591:9;:28::i;:::-;3637:4;3630:11;;;3467:182;;;;:::o;7760:40::-;7798:2;7760:40;:::o;21017:801::-;1812:13;:11;:13::i;:::-;21139:21:::1;21178:4;21163:31;;;21203:4;21218:16;;;;;;;;;;;21163:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21139:97;;7629:18;21251:13;:28;21247:125;;;21296:64;21313:4;21328:16;;;;;;;;;;;7629:18;21296:8;:64::i;:::-;21247:125;21439:19;21468:10;21461:28;;;21498:4;21461:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21439:65;;21533:1;21519:11;:15;21515:296;;;21551:21;21582:10;21575:28;;;21612:4;21627:16;;;;;;;;;;;21575:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21551:94;;21680:11;21664:13;:27;21660:140;;;21719:10;21712:26;;;21747:16;;;;;;;;;;;21766:17;21712:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21660:140;21536:275;21515:296;21073:745;;21017:801::o:0;19690:186::-;1812:13;:11;:13::i;:::-;19783:1:::1;19764:21;;:7;:21;;::::0;19756:56:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19860:7;19823:16;;:45;;;;;;;;;;;;;;;;;;19690:186:::0;:::o;8245:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;7815:55::-;7859:11;7815:55;:::o;3657:142::-;3737:7;3764:11;:18;3776:5;3764:18;;;;;;;;;;;;;;;:27;3783:7;3764:27;;;;;;;;;;;;;;;;3757:34;;3657:142;;;;:::o;2086:201::-;1812:13;:11;:13::i;:::-;2195:1:::1;2175:22;;:8;:22;;::::0;2167:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2251:28;2270:8;2251:18;:28::i;:::-;2086:201:::0;:::o;8082:53::-;;;:::o;5341:344::-;5460:1;5443:19;;:5;:19;;;5435:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5541:1;5522:21;;:7;:21;;;5514:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5623:6;5593:11;:18;5605:5;5593:18;;;;;;;;;;;;;;;:27;5612:7;5593:27;;;;;;;;;;;;;;;:36;;;;5661:7;5645:32;;5654:5;5645:32;;;5670:6;5645:32;;;;;;:::i;:::-;;;;;;;;5341:344;;;:::o;5693:419::-;5794:24;5821:25;5831:5;5838:7;5821:9;:25::i;:::-;5794:52;;5881:17;5861:16;:37;5857:248;;5943:6;5923:16;:26;;5915:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6027:51;6036:5;6043:7;6071:6;6052:16;:25;6027:8;:51::i;:::-;5857:248;5783:329;5693:419;;;:::o;9937:1722::-;10081:7;:5;:7::i;:::-;10073:15;;:4;:15;;;:32;;;;10098:7;:5;:7::i;:::-;10092:13;;:2;:13;;;10073:32;:57;;;;10125:4;10109:21;;:4;:21;;;10073:57;:80;;;;10148:4;10134:19;;:2;:19;;;10073:80;10069:1583;;;10170:33;10186:4;10192:2;10196:6;10170:15;:33::i;:::-;10218:19;10232:4;10218:13;:19::i;:::-;10252:17;10266:2;10252:13;:17::i;:::-;10069:1583;;;10302:16;10327:13;;;;;;;;;;;10321:19;;:2;:19;;;:44;;;;10352:13;;;;;;;;;;;10344:21;;:4;:21;;;10321:44;10302:63;;10398:11;10394:1167;;;10430:16;10471:3;7689:1;10450:6;:17;;;;:::i;:::-;10449:25;;;;:::i;:::-;10430:44;;10500:20;10550:4;7743:2;10524:6;:22;;;;:::i;:::-;10523:31;;;;:::i;:::-;10500:54;;10592:18;10638:4;7798:2;10614:6;:20;;;;:::i;:::-;10613:29;;;;:::i;:::-;10592:50;;10683:22;10717:8;10708:6;:17;;;;:::i;:::-;10683:42;;10811:46;10827:4;10841;10848:8;10811:15;:46::i;:::-;10926:41;10942:4;10948:2;10952:14;10926:15;:41::i;:::-;11079:12;11052:23;;:39;;;;;;;:::i;:::-;;;;;;;;11135:10;11110:21;;:35;;;;;;;:::i;:::-;;;;;;;;7939:12;11253:23;;:49;;:100;;;;7939:12;11306:21;;:47;;11253:100;11252:146;;;;;11397:1;11380:7;:14;;;;:18;11252:146;11248:224;;;11423:29;:27;:29::i;:::-;11248:224;10411:1076;;;;10394:1167;;;11512:33;11528:4;11534:2;11538:6;11512:15;:33::i;:::-;10394:1167;11589:19;11603:4;11589:13;:19::i;:::-;11623:17;11637:2;11623:13;:17::i;:::-;10287:1365;10069:1583;9937:1722;;;:::o;1948:130::-;2023:10;2012:21;;:7;:5;:7::i;:::-;:21;;;2004:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;1948:130::o;15936:1985::-;15994:26;16023:23;;15994:52;;16057:24;16084:21;;16057:48;;16116:19;16159:16;16138:18;:37;;;;:::i;:::-;16116:59;;16201:52;16216:18;16236:16;16201:52;;;;;;;:::i;:::-;;;;;;;;16314:23;16355:4;16340:31;;;16380:4;16340:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16314:72;;16424:11;16405:15;:30;;16397:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;16514:1;16488:23;:27;;;;16550:1;16526:21;:25;;;;16610:24;16652:4;16637:31;;;16677:4;16692:16;;;;;;;;;;;16637:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16610:100;;16744:11;16725:16;:30;16721:195;;;16772:53;16789:4;16804:16;;;;;;;;;;;16823:1;16772:8;:53::i;:::-;16840:64;16857:4;16872:16;;;;;;;;;;;7629:18;16840:8;:64::i;:::-;16721:195;16966:12;17000:16;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16981:54;;;17044:4;17051:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16981:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16966:109;;17110:1;17094:18;;:4;:18;;;17086:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;17173:13;;;;;;;;;;;17165:21;;:4;:21;;;17157:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;17251:19;17273:25;17286:11;17273:12;:25::i;:::-;17251:47;;17327:1;17313:11;:15;17309:605;;;17383:24;17447:11;17425:18;17411:11;:32;;;;:::i;:::-;17410:48;;;;:::i;:::-;17383:75;;17473:22;17512:16;17498:11;:30;;;;:::i;:::-;17473:55;;17579;17597:18;17617:16;17579:17;:55::i;:::-;17683:31;17699:14;17683:15;:31::i;:::-;17330:396;;17309:605;;;17829:18;17803:23;:44;;;;17886:16;17862:21;:40;;;;17309:605;15983:1938;;;;;;;15936:1985::o;2295:191::-;2369:16;2388:6;;;;;;;;;;;2369:25;;2414:8;2405:6;;:17;;;;;;;;;;;;;;;;;;2469:8;2438:40;;2459:8;2438:40;;;;;;;;;;;;2358:128;2295:191;:::o;4263:633::-;4376:1;4360:18;;:4;:18;;;4352:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4453:1;4439:16;;:2;:16;;;4431:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;4506:38;4527:4;4533:2;4537:6;4506:20;:38::i;:::-;4555:19;4577:9;:15;4587:4;4577:15;;;;;;;;;;;;;;;;4555:37;;4626:6;4611:11;:21;;4603:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;4743:6;4729:11;:20;4711:9;:15;4721:4;4711:15;;;;;;;;;;;;;;;:38;;;;4781:6;4764:9;:13;4774:2;4764:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;4829:2;4814:26;;4823:4;4814:26;;;4833:6;4814:26;;;;;;:::i;:::-;;;;;;;;4851:37;4871:4;4877:2;4881:6;4851:19;:37::i;:::-;4341:555;4263:633;;;:::o;11667:588::-;11741:13;;;;;;;;;;;11730:24;;:7;:24;;;;:52;;;;;11777:4;11758:24;;:7;:24;;;;11730:52;11726:522;;;11799:15;11817:18;11827:7;11817:9;:18::i;:::-;11799:36;;11850:22;11875:8;:17;11884:7;11875:17;;;;;;;;;;;;;;;;;;;;;;;;;11850:42;;7859:11;11925:7;:28;;:50;;;;;11958:17;11957:18;11925:50;11921:316;;;12016:4;11996:8;:17;12005:7;11996:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;12039:7;12052;12039:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11921:316;;;7859:11;12086:7;:27;:48;;;;;12117:17;12086:48;12082:155;;;12175:5;12155:8;:17;12164:7;12155:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;12199:22;12213:7;12199:13;:22::i;:::-;12082:155;11921:316;11784:464;;11726:522;11667:588;:::o;12566:1285::-;12626:7;12646:21;12684:1;12670:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12646:40;;12715:4;12697;12702:1;12697:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12741:10;12731:4;12736:1;12731:7;;;;;;;;:::i;:::-;;;;;;;:20;;;;;;;;;;;12864:24;12906:4;12891:31;;;12931:4;12946:16;;;;;;;;;;;12891:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12864:100;;12998:11;12979:16;:30;12975:200;;;13026:53;13043:4;13058:16;;;;;;;;;;;13077:1;13026:8;:53::i;:::-;13094:69;13111:4;13126:16;;;;;;;;;;;13145:17;13094:8;:69::i;:::-;12975:200;13191:16;;;;;;;;;;;:41;;;13247:11;13273:1;13319:4;13346;13415:3;13397:15;:21;;;;:::i;:::-;13191:238;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;13187:657;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13694:18;13705:6;13694:18;;;;;;:::i;:::-;;;;;;;;13734:1;13727:8;;;;;;;13187:657;;;13774:35;;;;;;:::i;:::-;;;;;;;;13831:1;13824:8;;;;;;13187:657;13469:19;13498:10;13491:28;;;13528:4;13491:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13469:65;;13554:40;13569:11;13582;13554:40;;;;;;;:::i;:::-;;;;;;;;13616:11;13609:18;;;;;;12566:1285;;;;:::o;13859:1154::-;13982:1;13963:16;:20;13959:1047;;;14000:21;14031:10;14024:28;;;14061:4;14076:16;;;;;;;;;;;14024:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14000:94;;14129:16;14113:13;:32;14109:145;;;14173:10;14166:26;;;14201:16;;;;;;;;;;;14220:17;14166:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14109:145;14286:16;;;;;;;;;;;:29;;;14342:4;14366:10;14416:1;14395:18;:22;;;;:::i;:::-;14436:16;14471:1;14491;14519:4;14543:15;14286:287;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;14282:713;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;14729:26;14748:6;14729:26;;;;;;:::i;:::-;;;;;;;;14800:18;14774:23;:44;;;;14671:163;14282:713;;;;;14865:51;;;;;;:::i;:::-;;;;;;;;14961:18;14935:23;:44;;;;14282:713;;;;;;;14598:56;14634:1;14613:18;:22;;;;:::i;:::-;14637:16;14598:56;;;;;;;:::i;:::-;;;;;;;;14282:713;13985:1021;13959:1047;13859:1154;;:::o;15021:907::-;15110:1;15093:14;:18;:40;;;;;15132:1;15115:7;:14;;;;:18;15093:40;15089:832;;;15150:23;15193:7;:14;;;;15176;:31;;;;:::i;:::-;15150:57;;15258:1;15240:15;:19;15236:674;;;15285:9;15280:523;15304:7;:14;;;;15300:1;:18;:29;;;;;15326:3;15322:1;:7;15300:29;15280:523;;;15370:10;15363:27;;;15391:7;15399:1;15391:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15403:15;15363:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;15359:425;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;15559:21;15573:6;15559:21;;;;;;:::i;:::-;;;;;;;;15607:8;;;15359:425;;;15678:47;;;;;;:::i;:::-;;;;;;;;15752:8;;15359:425;;15280:523;15331:3;;;;;:::i;:::-;;;;15280:523;;;;15844:50;15863:14;15879:7;:14;;;;15844:50;;;;;;;:::i;:::-;;;;;;;;15236:674;15135:786;15089:832;15021:907;:::o;9533:195::-;9676:44;9703:4;9709:2;9713:6;9676:26;:44::i;:::-;9533:195;;;:::o;9736:193::-;9878:43;9904:4;9910:2;9914:6;9878:25;:43::i;:::-;9736:193;;;:::o;12263:295::-;12327:9;12322:229;12346:7;:14;;;;12342:1;:18;12322:229;;;12400:7;12386:21;;:7;12394:1;12386:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:21;;;12382:158;;12441:7;12466:1;12449:7;:14;;;;:18;;;;:::i;:::-;12441:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12428:7;12436:1;12428:10;;;;;;;;:::i;:::-;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;12487:7;:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;12519:5;;12382:158;12362:3;;;;;:::i;:::-;;;;12322:229;;;;12263:295;:::o;6120:91::-;;;;:::o;6219:90::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:77::-;1386:7;1415:5;1404:16;;1349:77;;;:::o;1432:118::-;1519:24;1537:5;1519:24;:::i;:::-;1514:3;1507:37;1432:118;;:::o;1556:222::-;1649:4;1687:2;1676:9;1672:18;1664:26;;1700:71;1768:1;1757:9;1753:17;1744:6;1700:71;:::i;:::-;1556:222;;;;:::o;1784:75::-;1817:6;1850:2;1844:9;1834:19;;1784:75;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:118::-;3885:24;3903:5;3885:24;:::i;:::-;3880:3;3873:37;3798:118;;:::o;3922:763::-;4149:4;4187:3;4176:9;4172:19;4164:27;;4201:71;4269:1;4258:9;4254:17;4245:6;4201:71;:::i;:::-;4282:72;4350:2;4339:9;4335:18;4326:6;4282:72;:::i;:::-;4364:66;4426:2;4415:9;4411:18;4402:6;4364:66;:::i;:::-;4440:72;4508:2;4497:9;4493:18;4484:6;4440:72;:::i;:::-;4522:73;4590:3;4579:9;4575:19;4566:6;4522:73;:::i;:::-;4605;4673:3;4662:9;4658:19;4649:6;4605:73;:::i;:::-;3922:763;;;;;;;;;:::o;4691:619::-;4768:6;4776;4784;4833:2;4821:9;4812:7;4808:23;4804:32;4801:119;;;4839:79;;:::i;:::-;4801:119;4959:1;4984:53;5029:7;5020:6;5009:9;5005:22;4984:53;:::i;:::-;4974:63;;4930:117;5086:2;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5057:118;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;4691:619;;;;;:::o;5316:329::-;5375:6;5424:2;5412:9;5403:7;5399:23;5395:32;5392:119;;;5430:79;;:::i;:::-;5392:119;5550:1;5575:53;5620:7;5611:6;5600:9;5596:22;5575:53;:::i;:::-;5565:63;;5521:117;5316:329;;;;:::o;5651:222::-;5744:4;5782:2;5771:9;5767:18;5759:26;;5795:71;5863:1;5852:9;5848:17;5839:6;5795:71;:::i;:::-;5651:222;;;;:::o;5879:86::-;5914:7;5954:4;5947:5;5943:16;5932:27;;5879:86;;;:::o;5971:112::-;6054:22;6070:5;6054:22;:::i;:::-;6049:3;6042:35;5971:112;;:::o;6089:214::-;6178:4;6216:2;6205:9;6201:18;6193:26;;6229:67;6293:1;6282:9;6278:17;6269:6;6229:67;:::i;:::-;6089:214;;;;:::o;6309:114::-;6376:6;6410:5;6404:12;6394:22;;6309:114;;;:::o;6429:184::-;6528:11;6562:6;6557:3;6550:19;6602:4;6597:3;6593:14;6578:29;;6429:184;;;;:::o;6619:132::-;6686:4;6709:3;6701:11;;6739:4;6734:3;6730:14;6722:22;;6619:132;;;:::o;6757:108::-;6834:24;6852:5;6834:24;:::i;:::-;6829:3;6822:37;6757:108;;:::o;6871:179::-;6940:10;6961:46;7003:3;6995:6;6961:46;:::i;:::-;7039:4;7034:3;7030:14;7016:28;;6871:179;;;;:::o;7056:113::-;7126:4;7158;7153:3;7149:14;7141:22;;7056:113;;;:::o;7205:732::-;7324:3;7353:54;7401:5;7353:54;:::i;:::-;7423:86;7502:6;7497:3;7423:86;:::i;:::-;7416:93;;7533:56;7583:5;7533:56;:::i;:::-;7612:7;7643:1;7628:284;7653:6;7650:1;7647:13;7628:284;;;7729:6;7723:13;7756:63;7815:3;7800:13;7756:63;:::i;:::-;7749:70;;7842:60;7895:6;7842:60;:::i;:::-;7832:70;;7688:224;7675:1;7672;7668:9;7663:14;;7628:284;;;7632:14;7928:3;7921:10;;7329:608;;;7205:732;;;;:::o;7943:373::-;8086:4;8124:2;8113:9;8109:18;8101:26;;8173:9;8167:4;8163:20;8159:1;8148:9;8144:17;8137:47;8201:108;8304:4;8295:6;8201:108;:::i;:::-;8193:116;;7943:373;;;;:::o;8322:60::-;8350:3;8371:5;8364:12;;8322:60;;;:::o;8388:142::-;8438:9;8471:53;8489:34;8498:24;8516:5;8498:24;:::i;:::-;8489:34;:::i;:::-;8471:53;:::i;:::-;8458:66;;8388:142;;;:::o;8536:126::-;8586:9;8619:37;8650:5;8619:37;:::i;:::-;8606:50;;8536:126;;;:::o;8668:151::-;8743:9;8776:37;8807:5;8776:37;:::i;:::-;8763:50;;8668:151;;;:::o;8825:181::-;8937:62;8993:5;8937:62;:::i;:::-;8932:3;8925:75;8825:181;;:::o;9012:272::-;9130:4;9168:2;9157:9;9153:18;9145:26;;9181:96;9274:1;9263:9;9259:17;9250:6;9181:96;:::i;:::-;9012:272;;;;:::o;9290:329::-;9349:6;9398:2;9386:9;9377:7;9373:23;9369:32;9366:119;;;9404:79;;:::i;:::-;9366:119;9524:1;9549:53;9594:7;9585:6;9574:9;9570:22;9549:53;:::i;:::-;9539:63;;9495:117;9290:329;;;;:::o;9625:474::-;9693:6;9701;9750:2;9738:9;9729:7;9725:23;9721:32;9718:119;;;9756:79;;:::i;:::-;9718:119;9876:1;9901:53;9946:7;9937:6;9926:9;9922:22;9901:53;:::i;:::-;9891:63;;9847:117;10003:2;10029:53;10074:7;10065:6;10054:9;10050:22;10029:53;:::i;:::-;10019:63;;9974:118;9625:474;;;;;:::o;10105:152::-;10181:9;10214:37;10245:5;10214:37;:::i;:::-;10201:50;;10105:152;;;:::o;10263:183::-;10376:63;10433:5;10376:63;:::i;:::-;10371:3;10364:76;10263:183;;:::o;10452:274::-;10571:4;10609:2;10598:9;10594:18;10586:26;;10622:97;10716:1;10705:9;10701:17;10692:6;10622:97;:::i;:::-;10452:274;;;;:::o;10732:180::-;10780:77;10777:1;10770:88;10877:4;10874:1;10867:15;10901:4;10898:1;10891:15;10918:320;10962:6;10999:1;10993:4;10989:12;10979:22;;11046:1;11040:4;11036:12;11067:18;11057:81;;11123:4;11115:6;11111:17;11101:27;;11057:81;11185:2;11177:6;11174:14;11154:18;11151:38;11148:84;;11204:18;;:::i;:::-;11148:84;10969:269;10918:320;;;:::o;11244:143::-;11301:5;11332:6;11326:13;11317:22;;11348:33;11375:5;11348:33;:::i;:::-;11244:143;;;;:::o;11393:351::-;11463:6;11512:2;11500:9;11491:7;11487:23;11483:32;11480:119;;;11518:79;;:::i;:::-;11480:119;11638:1;11663:64;11719:7;11710:6;11699:9;11695:22;11663:64;:::i;:::-;11653:74;;11609:128;11393:351;;;;:::o;11750:332::-;11871:4;11909:2;11898:9;11894:18;11886:26;;11922:71;11990:1;11979:9;11975:17;11966:6;11922:71;:::i;:::-;12003:72;12071:2;12060:9;12056:18;12047:6;12003:72;:::i;:::-;11750:332;;;;;:::o;12088:143::-;12145:5;12176:6;12170:13;12161:22;;12192:33;12219:5;12192:33;:::i;:::-;12088:143;;;;:::o;12237:351::-;12307:6;12356:2;12344:9;12335:7;12331:23;12327:32;12324:119;;;12362:79;;:::i;:::-;12324:119;12482:1;12507:64;12563:7;12554:6;12543:9;12539:22;12507:64;:::i;:::-;12497:74;;12453:128;12237:351;;;;:::o;12594:225::-;12734:34;12730:1;12722:6;12718:14;12711:58;12803:8;12798:2;12790:6;12786:15;12779:33;12594:225;:::o;12825:366::-;12967:3;12988:67;13052:2;13047:3;12988:67;:::i;:::-;12981:74;;13064:93;13153:3;13064:93;:::i;:::-;13182:2;13177:3;13173:12;13166:19;;12825:366;;;:::o;13197:419::-;13363:4;13401:2;13390:9;13386:18;13378:26;;13450:9;13444:4;13440:20;13436:1;13425:9;13421:17;13414:47;13478:131;13604:4;13478:131;:::i;:::-;13470:139;;13197:419;;;:::o;13622:234::-;13762:34;13758:1;13750:6;13746:14;13739:58;13831:17;13826:2;13818:6;13814:15;13807:42;13622:234;:::o;13862:366::-;14004:3;14025:67;14089:2;14084:3;14025:67;:::i;:::-;14018:74;;14101:93;14190:3;14101:93;:::i;:::-;14219:2;14214:3;14210:12;14203:19;;13862:366;;;:::o;14234:419::-;14400:4;14438:2;14427:9;14423:18;14415:26;;14487:9;14481:4;14477:20;14473:1;14462:9;14458:17;14451:47;14515:131;14641:4;14515:131;:::i;:::-;14507:139;;14234:419;;;:::o;14659:225::-;14799:34;14795:1;14787:6;14783:14;14776:58;14868:8;14863:2;14855:6;14851:15;14844:33;14659:225;:::o;14890:366::-;15032:3;15053:67;15117:2;15112:3;15053:67;:::i;:::-;15046:74;;15129:93;15218:3;15129:93;:::i;:::-;15247:2;15242:3;15238:12;15231:19;;14890:366;;;:::o;15262:419::-;15428:4;15466:2;15455:9;15451:18;15443:26;;15515:9;15509:4;15505:20;15501:1;15490:9;15486:17;15479:47;15543:131;15669:4;15543:131;:::i;:::-;15535:139;;15262:419;;;:::o;15687:85::-;15732:7;15761:5;15750:16;;15687:85;;;:::o;15778:158::-;15836:9;15869:61;15887:42;15896:32;15922:5;15896:32;:::i;:::-;15887:42;:::i;:::-;15869:61;:::i;:::-;15856:74;;15778:158;;;:::o;15942:147::-;16037:45;16076:5;16037:45;:::i;:::-;16032:3;16025:58;15942:147;;:::o;16095:807::-;16344:4;16382:3;16371:9;16367:19;16359:27;;16396:71;16464:1;16453:9;16449:17;16440:6;16396:71;:::i;:::-;16477:72;16545:2;16534:9;16530:18;16521:6;16477:72;:::i;:::-;16559:80;16635:2;16624:9;16620:18;16611:6;16559:80;:::i;:::-;16649;16725:2;16714:9;16710:18;16701:6;16649:80;:::i;:::-;16739:73;16807:3;16796:9;16792:19;16783:6;16739:73;:::i;:::-;16822;16890:3;16879:9;16875:19;16866:6;16822:73;:::i;:::-;16095:807;;;;;;;;;:::o;16908:663::-;16996:6;17004;17012;17061:2;17049:9;17040:7;17036:23;17032:32;17029:119;;;17067:79;;:::i;:::-;17029:119;17187:1;17212:64;17268:7;17259:6;17248:9;17244:22;17212:64;:::i;:::-;17202:74;;17158:128;17325:2;17351:64;17407:7;17398:6;17387:9;17383:22;17351:64;:::i;:::-;17341:74;;17296:129;17464:2;17490:64;17546:7;17537:6;17526:9;17522:22;17490:64;:::i;:::-;17480:74;;17435:129;16908:663;;;;;:::o;17577:173::-;17717:25;17713:1;17705:6;17701:14;17694:49;17577:173;:::o;17756:366::-;17898:3;17919:67;17983:2;17978:3;17919:67;:::i;:::-;17912:74;;17995:93;18084:3;17995:93;:::i;:::-;18113:2;18108:3;18104:12;18097:19;;17756:366;;;:::o;18128:419::-;18294:4;18332:2;18321:9;18317:18;18309:26;;18381:9;18375:4;18371:20;18367:1;18356:9;18352:17;18345:47;18409:131;18535:4;18409:131;:::i;:::-;18401:139;;18128:419;;;:::o;18553:332::-;18674:4;18712:2;18701:9;18697:18;18689:26;;18725:71;18793:1;18782:9;18778:17;18769:6;18725:71;:::i;:::-;18806:72;18874:2;18863:9;18859:18;18850:6;18806:72;:::i;:::-;18553:332;;;;;:::o;18891:177::-;19031:29;19027:1;19019:6;19015:14;19008:53;18891:177;:::o;19074:366::-;19216:3;19237:67;19301:2;19296:3;19237:67;:::i;:::-;19230:74;;19313:93;19402:3;19313:93;:::i;:::-;19431:2;19426:3;19422:12;19415:19;;19074:366;;;:::o;19446:419::-;19612:4;19650:2;19639:9;19635:18;19627:26;;19699:9;19693:4;19689:20;19685:1;19674:9;19670:17;19663:47;19727:131;19853:4;19727:131;:::i;:::-;19719:139;;19446:419;;;:::o;19871:332::-;19992:4;20030:2;20019:9;20015:18;20007:26;;20043:71;20111:1;20100:9;20096:17;20087:6;20043:71;:::i;:::-;20124:72;20192:2;20181:9;20177:18;20168:6;20124:72;:::i;:::-;19871:332;;;;;:::o;20209:116::-;20279:21;20294:5;20279:21;:::i;:::-;20272:5;20269:32;20259:60;;20315:1;20312;20305:12;20259:60;20209:116;:::o;20331:137::-;20385:5;20416:6;20410:13;20401:22;;20432:30;20456:5;20432:30;:::i;:::-;20331:137;;;;:::o;20474:345::-;20541:6;20590:2;20578:9;20569:7;20565:23;20561:32;20558:119;;;20596:79;;:::i;:::-;20558:119;20716:1;20741:61;20794:7;20785:6;20774:9;20770:22;20741:61;:::i;:::-;20731:71;;20687:125;20474:345;;;;:::o;20825:170::-;20965:22;20961:1;20953:6;20949:14;20942:46;20825:170;:::o;21001:366::-;21143:3;21164:67;21228:2;21223:3;21164:67;:::i;:::-;21157:74;;21240:93;21329:3;21240:93;:::i;:::-;21358:2;21353:3;21349:12;21342:19;;21001:366;;;:::o;21373:419::-;21539:4;21577:2;21566:9;21562:18;21554:26;;21626:9;21620:4;21616:20;21612:1;21601:9;21597:17;21590:47;21654:131;21780:4;21654:131;:::i;:::-;21646:139;;21373:419;;;:::o;21798:167::-;21938:19;21934:1;21926:6;21922:14;21915:43;21798:167;:::o;21971:366::-;22113:3;22134:67;22198:2;22193:3;22134:67;:::i;:::-;22127:74;;22210:93;22299:3;22210:93;:::i;:::-;22328:2;22323:3;22319:12;22312:19;;21971:366;;;:::o;22343:419::-;22509:4;22547:2;22536:9;22532:18;22524:26;;22596:9;22590:4;22586:20;22582:1;22571:9;22567:17;22560:47;22624:131;22750:4;22624:131;:::i;:::-;22616:139;;22343:419;;;:::o;22768:160::-;22908:12;22904:1;22896:6;22892:14;22885:36;22768:160;:::o;22934:366::-;23076:3;23097:67;23161:2;23156:3;23097:67;:::i;:::-;23090:74;;23173:93;23262:3;23173:93;:::i;:::-;23291:2;23286:3;23282:12;23275:19;;22934:366;;;:::o;23306:419::-;23472:4;23510:2;23499:9;23495:18;23487:26;;23559:9;23553:4;23549:20;23545:1;23534:9;23530:17;23523:47;23587:131;23713:4;23587:131;:::i;:::-;23579:139;;23306:419;;;:::o;23731:172::-;23871:24;23867:1;23859:6;23855:14;23848:48;23731:172;:::o;23909:366::-;24051:3;24072:67;24136:2;24131:3;24072:67;:::i;:::-;24065:74;;24148:93;24237:3;24148:93;:::i;:::-;24266:2;24261:3;24257:12;24250:19;;23909:366;;;:::o;24281:419::-;24447:4;24485:2;24474:9;24470:18;24462:26;;24534:9;24528:4;24524:20;24520:1;24509:9;24505:17;24498:47;24562:131;24688:4;24562:131;:::i;:::-;24554:139;;24281:419;;;:::o;24706:225::-;24846:34;24842:1;24834:6;24830:14;24823:58;24915:8;24910:2;24902:6;24898:15;24891:33;24706:225;:::o;24937:366::-;25079:3;25100:67;25164:2;25159:3;25100:67;:::i;:::-;25093:74;;25176:93;25265:3;25176:93;:::i;:::-;25294:2;25289:3;25285:12;25278:19;;24937:366;;;:::o;25309:419::-;25475:4;25513:2;25502:9;25498:18;25490:26;;25562:9;25556:4;25552:20;25548:1;25537:9;25533:17;25526:47;25590:131;25716:4;25590:131;:::i;:::-;25582:139;;25309:419;;;:::o;25734:223::-;25874:34;25870:1;25862:6;25858:14;25851:58;25943:6;25938:2;25930:6;25926:15;25919:31;25734:223;:::o;25963:366::-;26105:3;26126:67;26190:2;26185:3;26126:67;:::i;:::-;26119:74;;26202:93;26291:3;26202:93;:::i;:::-;26320:2;26315:3;26311:12;26304:19;;25963:366;;;:::o;26335:419::-;26501:4;26539:2;26528:9;26524:18;26516:26;;26588:9;26582:4;26578:20;26574:1;26563:9;26559:17;26552:47;26616:131;26742:4;26616:131;:::i;:::-;26608:139;;26335:419;;;:::o;26760:221::-;26900:34;26896:1;26888:6;26884:14;26877:58;26969:4;26964:2;26956:6;26952:15;26945:29;26760:221;:::o;26987:366::-;27129:3;27150:67;27214:2;27209:3;27150:67;:::i;:::-;27143:74;;27226:93;27315:3;27226:93;:::i;:::-;27344:2;27339:3;27335:12;27328:19;;26987:366;;;:::o;27359:419::-;27525:4;27563:2;27552:9;27548:18;27540:26;;27612:9;27606:4;27602:20;27598:1;27587:9;27583:17;27576:47;27640:131;27766:4;27640:131;:::i;:::-;27632:139;;27359:419;;;:::o;27784:179::-;27924:31;27920:1;27912:6;27908:14;27901:55;27784:179;:::o;27969:366::-;28111:3;28132:67;28196:2;28191:3;28132:67;:::i;:::-;28125:74;;28208:93;28297:3;28208:93;:::i;:::-;28326:2;28321:3;28317:12;28310:19;;27969:366;;;:::o;28341:419::-;28507:4;28545:2;28534:9;28530:18;28522:26;;28594:9;28588:4;28584:20;28580:1;28569:9;28565:17;28558:47;28622:131;28748:4;28622:131;:::i;:::-;28614:139;;28341:419;;;:::o;28766:180::-;28814:77;28811:1;28804:88;28911:4;28908:1;28901:15;28935:4;28932:1;28925:15;28952:410;28992:7;29015:20;29033:1;29015:20;:::i;:::-;29010:25;;29049:20;29067:1;29049:20;:::i;:::-;29044:25;;29104:1;29101;29097:9;29126:30;29144:11;29126:30;:::i;:::-;29115:41;;29305:1;29296:7;29292:15;29289:1;29286:22;29266:1;29259:9;29239:83;29216:139;;29335:18;;:::i;:::-;29216:139;29000:362;28952:410;;;;:::o;29368:180::-;29416:77;29413:1;29406:88;29513:4;29510:1;29503:15;29537:4;29534:1;29527:15;29554:185;29594:1;29611:20;29629:1;29611:20;:::i;:::-;29606:25;;29645:20;29663:1;29645:20;:::i;:::-;29640:25;;29684:1;29674:35;;29689:18;;:::i;:::-;29674:35;29731:1;29728;29724:9;29719:14;;29554:185;;;;:::o;29745:194::-;29785:4;29805:20;29823:1;29805:20;:::i;:::-;29800:25;;29839:20;29857:1;29839:20;:::i;:::-;29834:25;;29883:1;29880;29876:9;29868:17;;29907:1;29901:4;29898:11;29895:37;;;29912:18;;:::i;:::-;29895:37;29745:194;;;;:::o;29945:191::-;29985:3;30004:20;30022:1;30004:20;:::i;:::-;29999:25;;30038:20;30056:1;30038:20;:::i;:::-;30033:25;;30081:1;30078;30074:9;30067:16;;30102:3;30099:1;30096:10;30093:36;;;30109:18;;:::i;:::-;30093:36;29945:191;;;;:::o;30142:182::-;30282:34;30278:1;30270:6;30266:14;30259:58;30142:182;:::o;30330:366::-;30472:3;30493:67;30557:2;30552:3;30493:67;:::i;:::-;30486:74;;30569:93;30658:3;30569:93;:::i;:::-;30687:2;30682:3;30678:12;30671:19;;30330:366;;;:::o;30702:419::-;30868:4;30906:2;30895:9;30891:18;30883:26;;30955:9;30949:4;30945:20;30941:1;30930:9;30926:17;30919:47;30983:131;31109:4;30983:131;:::i;:::-;30975:139;;30702:419;;;:::o;31127:222::-;31267:34;31263:1;31255:6;31251:14;31244:58;31336:5;31331:2;31323:6;31319:15;31312:30;31127:222;:::o;31355:366::-;31497:3;31518:67;31582:2;31577:3;31518:67;:::i;:::-;31511:74;;31594:93;31683:3;31594:93;:::i;:::-;31712:2;31707:3;31703:12;31696:19;;31355:366;;;:::o;31727:419::-;31893:4;31931:2;31920:9;31916:18;31908:26;;31980:9;31974:4;31970:20;31966:1;31955:9;31951:17;31944:47;32008:131;32134:4;32008:131;:::i;:::-;32000:139;;31727:419;;;:::o;32152:179::-;32292:31;32288:1;32280:6;32276:14;32269:55;32152:179;:::o;32337:366::-;32479:3;32500:67;32564:2;32559:3;32500:67;:::i;:::-;32493:74;;32576:93;32665:3;32576:93;:::i;:::-;32694:2;32689:3;32685:12;32678:19;;32337:366;;;:::o;32709:419::-;32875:4;32913:2;32902:9;32898:18;32890:26;;32962:9;32956:4;32952:20;32948:1;32937:9;32933:17;32926:47;32990:131;33116:4;32990:131;:::i;:::-;32982:139;;32709:419;;;:::o;33134:172::-;33274:24;33270:1;33262:6;33258:14;33251:48;33134:172;:::o;33312:366::-;33454:3;33475:67;33539:2;33534:3;33475:67;:::i;:::-;33468:74;;33551:93;33640:3;33551:93;:::i;:::-;33669:2;33664:3;33660:12;33653:19;;33312:366;;;:::o;33684:419::-;33850:4;33888:2;33877:9;33873:18;33865:26;;33937:9;33931:4;33927:20;33923:1;33912:9;33908:17;33901:47;33965:131;34091:4;33965:131;:::i;:::-;33957:139;;33684:419;;;:::o;34109:224::-;34249:34;34245:1;34237:6;34233:14;34226:58;34318:7;34313:2;34305:6;34301:15;34294:32;34109:224;:::o;34339:366::-;34481:3;34502:67;34566:2;34561:3;34502:67;:::i;:::-;34495:74;;34578:93;34667:3;34578:93;:::i;:::-;34696:2;34691:3;34687:12;34680:19;;34339:366;;;:::o;34711:419::-;34877:4;34915:2;34904:9;34900:18;34892:26;;34964:9;34958:4;34954:20;34950:1;34939:9;34935:17;34928:47;34992:131;35118:4;34992:131;:::i;:::-;34984:139;;34711:419;;;:::o;35136:222::-;35276:34;35272:1;35264:6;35260:14;35253:58;35345:5;35340:2;35332:6;35328:15;35321:30;35136:222;:::o;35364:366::-;35506:3;35527:67;35591:2;35586:3;35527:67;:::i;:::-;35520:74;;35603:93;35692:3;35603:93;:::i;:::-;35721:2;35716:3;35712:12;35705:19;;35364:366;;;:::o;35736:419::-;35902:4;35940:2;35929:9;35925:18;35917:26;;35989:9;35983:4;35979:20;35975:1;35964:9;35960:17;35953:47;36017:131;36143:4;36017:131;:::i;:::-;36009:139;;35736:419;;;:::o;36161:225::-;36301:34;36297:1;36289:6;36285:14;36278:58;36370:8;36365:2;36357:6;36353:15;36346:33;36161:225;:::o;36392:366::-;36534:3;36555:67;36619:2;36614:3;36555:67;:::i;:::-;36548:74;;36631:93;36720:3;36631:93;:::i;:::-;36749:2;36744:3;36740:12;36733:19;;36392:366;;;:::o;36764:419::-;36930:4;36968:2;36957:9;36953:18;36945:26;;37017:9;37011:4;37007:20;37003:1;36992:9;36988:17;36981:47;37045:131;37171:4;37045:131;:::i;:::-;37037:139;;36764:419;;;:::o;37189:180::-;37237:77;37234:1;37227:88;37334:4;37331:1;37324:15;37358:4;37355:1;37348:15;37375:180;37423:77;37420:1;37413:88;37520:4;37517:1;37510:15;37544:4;37541:1;37534:15;37561:831;37824:4;37862:3;37851:9;37847:19;37839:27;;37876:71;37944:1;37933:9;37929:17;37920:6;37876:71;:::i;:::-;37957:80;38033:2;38022:9;38018:18;38009:6;37957:80;:::i;:::-;38084:9;38078:4;38074:20;38069:2;38058:9;38054:18;38047:48;38112:108;38215:4;38206:6;38112:108;:::i;:::-;38104:116;;38230:72;38298:2;38287:9;38283:18;38274:6;38230:72;:::i;:::-;38312:73;38380:3;38369:9;38365:19;38356:6;38312:73;:::i;:::-;37561:831;;;;;;;;:::o;38398:117::-;38507:1;38504;38497:12;38521:281;38604:27;38626:4;38604:27;:::i;:::-;38596:6;38592:40;38734:6;38722:10;38719:22;38698:18;38686:10;38683:34;38680:62;38677:88;;;38745:18;;:::i;:::-;38677:88;38785:10;38781:2;38774:22;38564:238;38521:281;;:::o;38808:129::-;38842:6;38869:20;;:::i;:::-;38859:30;;38898:33;38926:4;38918:6;38898:33;:::i;:::-;38808:129;;;:::o;38943:311::-;39020:4;39110:18;39102:6;39099:30;39096:56;;;39132:18;;:::i;:::-;39096:56;39182:4;39174:6;39170:17;39162:25;;39242:4;39236;39232:15;39224:23;;38943:311;;;:::o;39260:117::-;39369:1;39366;39359:12;39400:732;39507:5;39532:81;39548:64;39605:6;39548:64;:::i;:::-;39532:81;:::i;:::-;39523:90;;39633:5;39662:6;39655:5;39648:21;39696:4;39689:5;39685:16;39678:23;;39749:4;39741:6;39737:17;39729:6;39725:30;39778:3;39770:6;39767:15;39764:122;;;39797:79;;:::i;:::-;39764:122;39912:6;39895:231;39929:6;39924:3;39921:15;39895:231;;;40004:3;40033:48;40077:3;40065:10;40033:48;:::i;:::-;40028:3;40021:61;40111:4;40106:3;40102:14;40095:21;;39971:155;39955:4;39950:3;39946:14;39939:21;;39895:231;;;39899:21;39513:619;;39400:732;;;;;:::o;40155:385::-;40237:5;40286:3;40279:4;40271:6;40267:17;40263:27;40253:122;;40294:79;;:::i;:::-;40253:122;40404:6;40398:13;40429:105;40530:3;40522:6;40515:4;40507:6;40503:17;40429:105;:::i;:::-;40420:114;;40243:297;40155:385;;;;:::o;40546:554::-;40641:6;40690:2;40678:9;40669:7;40665:23;40661:32;40658:119;;;40696:79;;:::i;:::-;40658:119;40837:1;40826:9;40822:17;40816:24;40867:18;40859:6;40856:30;40853:117;;;40889:79;;:::i;:::-;40853:117;40994:89;41075:7;41066:6;41055:9;41051:22;40994:89;:::i;:::-;40984:99;;40787:306;40546:554;;;;:::o;41106:106::-;41150:8;41199:5;41194:3;41190:15;41169:36;;41106:106;;;:::o;41218:183::-;41253:3;41291:1;41273:16;41270:23;41267:128;;;41329:1;41326;41323;41308:23;41351:34;41382:1;41376:8;41351:34;:::i;:::-;41344:41;;41267:128;41218:183;:::o;41407:711::-;41446:3;41484:4;41466:16;41463:26;41492:5;41460:39;41521:20;;:::i;:::-;41596:1;41578:16;41574:24;41571:1;41565:4;41550:49;41629:4;41623:11;41728:16;41721:4;41713:6;41709:17;41706:39;41673:18;41665:6;41662:30;41646:113;41643:146;;;41774:5;;;;41643:146;41820:6;41814:4;41810:17;41856:3;41850:10;41883:18;41875:6;41872:30;41869:43;;;41905:5;;;;;;41869:43;41953:6;41946:4;41941:3;41937:14;41933:27;42012:1;41994:16;41990:24;41984:4;41980:35;41975:3;41972:44;41969:57;;;42019:5;;;;;;;41969:57;42036;42084:6;42078:4;42074:17;42066:6;42062:30;42056:4;42036:57;:::i;:::-;42109:3;42102:10;;41450:668;;;;;41407:711;;:::o;42124:171::-;42264:23;42260:1;42252:6;42248:14;42241:47;42124:171;:::o;42301:366::-;42443:3;42464:67;42528:2;42523:3;42464:67;:::i;:::-;42457:74;;42540:93;42629:3;42540:93;:::i;:::-;42658:2;42653:3;42649:12;42642:19;;42301:366;;;:::o;42673:419::-;42839:4;42877:2;42866:9;42862:18;42854:26;;42926:9;42920:4;42916:20;42912:1;42901:9;42897:17;42890:47;42954:131;43080:4;42954:131;:::i;:::-;42946:139;;42673:419;;;:::o;43098:1029::-;43403:4;43441:3;43430:9;43426:19;43418:27;;43455:71;43523:1;43512:9;43508:17;43499:6;43455:71;:::i;:::-;43536:72;43604:2;43593:9;43589:18;43580:6;43536:72;:::i;:::-;43618;43686:2;43675:9;43671:18;43662:6;43618:72;:::i;:::-;43700;43768:2;43757:9;43753:18;43744:6;43700:72;:::i;:::-;43782:81;43858:3;43847:9;43843:19;43834:6;43782:81;:::i;:::-;43873;43949:3;43938:9;43934:19;43925:6;43873:81;:::i;:::-;43964:73;44032:3;44021:9;44017:19;44008:6;43964:73;:::i;:::-;44047;44115:3;44104:9;44100:19;44091:6;44047:73;:::i;:::-;43098:1029;;;;;;;;;;;:::o;44133:179::-;44273:31;44269:1;44261:6;44257:14;44250:55;44133:179;:::o;44318:366::-;44460:3;44481:67;44545:2;44540:3;44481:67;:::i;:::-;44474:74;;44557:93;44646:3;44557:93;:::i;:::-;44675:2;44670:3;44666:12;44659:19;;44318:366;;;:::o;44690:419::-;44856:4;44894:2;44883:9;44879:18;44871:26;;44943:9;44937:4;44933:20;44929:1;44918:9;44914:17;44907:47;44971:131;45097:4;44971:131;:::i;:::-;44963:139;;44690:419;;;:::o;45115:180::-;45255:32;45251:1;45243:6;45239:14;45232:56;45115:180;:::o;45301:366::-;45443:3;45464:67;45528:2;45523:3;45464:67;:::i;:::-;45457:74;;45540:93;45629:3;45540:93;:::i;:::-;45658:2;45653:3;45649:12;45642:19;;45301:366;;;:::o;45673:419::-;45839:4;45877:2;45866:9;45862:18;45854:26;;45926:9;45920:4;45916:20;45912:1;45901:9;45897:17;45890:47;45954:131;46080:4;45954:131;:::i;:::-;45946:139;;45673:419;;;:::o;46098:233::-;46137:3;46160:24;46178:5;46160:24;:::i;:::-;46151:33;;46206:66;46199:5;46196:77;46193:103;;46276:18;;:::i;:::-;46193:103;46323:1;46316:5;46312:13;46305:20;;46098:233;;;:::o;46337:180::-;46385:77;46382:1;46375:88;46482:4;46479:1;46472:15;46506:4;46503:1;46496:15
Swarm Source
ipfs://d434b6a21bd899ef9547991d2143e711ecb50d46769384ba849f2b54a2f42430
[ 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.