More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 35 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 18216856 | 406 days ago | IN | 0 ETH | 0.00033699 | ||||
Update Sell Fees | 18216470 | 407 days ago | IN | 0 ETH | 0.00021445 | ||||
Update Buy Fees | 18216466 | 407 days ago | IN | 0 ETH | 0.00022623 | ||||
Update Sell Fees | 18216446 | 407 days ago | IN | 0 ETH | 0.0003908 | ||||
Update Buy Fees | 18216444 | 407 days ago | IN | 0 ETH | 0.00036253 | ||||
Approve | 18216430 | 407 days ago | IN | 0 ETH | 0.00047852 | ||||
Launch | 18216429 | 407 days ago | IN | 0 ETH | 0.00050606 | ||||
Approve | 18216419 | 407 days ago | IN | 0 ETH | 0.00040005 | ||||
Approve | 18216417 | 407 days ago | IN | 0 ETH | 0.00048686 | ||||
Approve | 18216413 | 407 days ago | IN | 0 ETH | 0.00054768 | ||||
Approve | 18216413 | 407 days ago | IN | 0 ETH | 0.00064207 | ||||
Approve | 18216411 | 407 days ago | IN | 0 ETH | 0.00049386 | ||||
Approve | 18216411 | 407 days ago | IN | 0 ETH | 0.00049386 | ||||
Approve | 18216411 | 407 days ago | IN | 0 ETH | 0.00049386 | ||||
Approve | 18216411 | 407 days ago | IN | 0 ETH | 0.00049386 | ||||
Approve | 18216411 | 407 days ago | IN | 0 ETH | 0.00056478 | ||||
Approve | 18216411 | 407 days ago | IN | 0 ETH | 0.00065916 | ||||
Approve | 18216411 | 407 days ago | IN | 0 ETH | 0.00065916 | ||||
Approve | 18216411 | 407 days ago | IN | 0 ETH | 0.00065916 | ||||
Approve | 18216411 | 407 days ago | IN | 0 ETH | 0.00065916 | ||||
Approve | 18216410 | 407 days ago | IN | 0 ETH | 0.00055967 | ||||
Approve | 18216410 | 407 days ago | IN | 0 ETH | 0.00055967 | ||||
Approve | 18216410 | 407 days ago | IN | 0 ETH | 0.00055967 | ||||
Approve | 18216410 | 407 days ago | IN | 0 ETH | 0.00055967 | ||||
Approve | 18216410 | 407 days ago | IN | 0 ETH | 0.00055967 |
Latest 23 internal transactions
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
18218526 | 406 days ago | 2 wei | ||||
18218277 | 406 days ago | 0.00394913 ETH | ||||
18217392 | 406 days ago | 0.00394913 ETH | ||||
18216521 | 407 days ago | 0.00400083 ETH | ||||
18216521 | 407 days ago | 0.00400083 ETH | ||||
18216467 | 407 days ago | 0.00407248 ETH | ||||
18216467 | 407 days ago | 0.00407248 ETH | ||||
18216463 | 407 days ago | 0.00446512 ETH | ||||
18216463 | 407 days ago | 0.00446512 ETH | ||||
18216459 | 407 days ago | 0.00503381 ETH | ||||
18216459 | 407 days ago | 0.00503381 ETH | ||||
18216457 | 407 days ago | 0.00560304 ETH | ||||
18216457 | 407 days ago | 0.00560304 ETH | ||||
18216454 | 407 days ago | 0.00586467 ETH | ||||
18216454 | 407 days ago | 0.00586467 ETH | ||||
18216452 | 407 days ago | 0.00665344 ETH | ||||
18216452 | 407 days ago | 0.00665344 ETH | ||||
18216444 | 407 days ago | 0.00687679 ETH | ||||
18216444 | 407 days ago | 0.00687679 ETH | ||||
18216443 | 407 days ago | 0.00777071 ETH | ||||
18216443 | 407 days ago | 0.00777071 ETH | ||||
18216427 | 407 days ago | 0.00638154 ETH | ||||
18216427 | 407 days ago | 0.00638154 ETH |
Loading...
Loading
Contract Name:
Potassium
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-09-25 */ /** *Submitted for verification at Etherscan.io on 2023-09-25 */ /** https://potassium.cooking **/ // SPDX-License-Identifier: MIT pragma solidity ^0.8.18; pragma experimental ABIEncoderV2; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer( address recipient, uint256 amount ) external returns (bool); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf( address account ) public view virtual override returns (uint256) { return _balances[account]; } function transfer( address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance( address owner, address spender ) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve( address spender, uint256 amount ) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance( address spender, uint256 addedValue ) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addedValue ); return true; } function decreaseAllowance( address spender, uint256 subtractedValue ) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require( senderBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair( address tokenA, address tokenB ) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair( address tokenA, address tokenB ) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn( address to ) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } // Main Token Contract contract Potassium is ERC20, Ownable { IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address public marketingWallet; address public devWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public swapEnabled = false; bool public tradingActive = false; uint256 public launchedAt; uint256 public launchedAtTimestamp; uint256 public buyTotalFees = 25; uint256 public buyMarketingFee = 25; uint256 public buyDevFee = 0; uint256 public sellTotalFees = 50; uint256 public sellMarketingFee = 50; uint256 public sellDevFee = 0; uint256 tokensForMarketing; uint256 tokenForDev; /******************/ // exlcude from fees and max transaction amount mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated( address indexed newWallet, address indexed oldWallet ); event devWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("Potassium", "POT") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 totalSupply = 1_000_000 * 1e18; // 1 million maxTransactionAmount = 20_000 * 1e18; // 2% of total supply is maxTransactionAmountTxn maxWallet = 30_000 * 1e18; // 3 % of total supply is maxWallet swapTokensAtAmount = 10_000 * 1e18; //.1% at start marketingWallet = address(msg.sender); // set as marketing wallet devWallet = address(msg.sender); // set as dev wallet // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(owner(), totalSupply); } receive() external payable {} // remove limits after token is stable function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } function launched() internal view returns (bool) { return launchedAt != 0; } function launch() public onlyOwner { require(launchedAt == 0, "Already launched boi"); launchedAt = block.number; launchedAtTimestamp = block.timestamp; tradingActive = true; swapEnabled = true; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount( uint256 newAmount ) external onlyOwner returns (bool) { swapTokensAtAmount = newAmount * (10 ** 18); return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { maxTransactionAmount = newNum * (10 ** 18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { maxWallet = newNum * (10 ** 18); } function excludeFromMaxTransaction( address updAds, bool isEx ) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function updateBuyFees( uint256 _marketingFee, uint256 _devFee ) external onlyOwner { buyMarketingFee = _marketingFee; buyDevFee = _devFee; buyTotalFees = buyMarketingFee + buyDevFee; } function updateSellFees( uint256 _marketingFee, uint256 _devFee ) external onlyOwner { sellMarketingFee = _marketingFee; sellDevFee = _devFee; sellTotalFees = sellMarketingFee + sellDevFee; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair( address pair, bool value ) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWallet( address newMarketingWallet ) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function updateDevWallet(address newWallet) external onlyOwner { emit devWalletUpdated(newWallet, devWallet); devWallet = newWallet; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = (amount * sellTotalFees) / 100; tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees; tokenForDev += (fees * sellDevFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = (amount * buyTotalFees) / 100; tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; tokenForDev += (fees * buyDevFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadAddress, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForMarketing + tokenForDev; bool success; if (contractBalance > swapTokensAtAmount) { contractBalance = swapTokensAtAmount; } uint256 amountToSwapForETH = contractBalance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = (address(this).balance); uint256 ethForDev = (ethBalance * tokenForDev) / totalTokensToSwap; tokensForMarketing = 0; tokenForDev = 0; (success, ) = address(devWallet).call{value: ethForDev}(""); (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); } function withdrawETH(uint256 _amount) external onlyOwner { require(address(this).balance >= _amount, "Invalid Amount"); payable(msg.sender).transfer(_amount); } function withdrawToken(IERC20 _token, uint256 _amount) external onlyOwner { require(_token.balanceOf(address(this)) >= _amount, "Invalid Amount"); _token.transfer(msg.sender, _amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAtTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526001600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055506019600e556019600f5560006010556032601155603260125560006013553480156200008057600080fd5b506040518060400160405280600981526020017f506f7461737369756d00000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f504f5400000000000000000000000000000000000000000000000000000000008152508160039081620000fe919062000c8f565b50806004908162000110919062000c8f565b5050506200013362000127620004d660201b60201c565b620004de60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200015f816001620005a460201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000205919062000de0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000293919062000de0565b6040518363ffffffff1660e01b8152600401620002b292919062000e23565b6020604051808303816000875af1158015620002d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f8919062000de0565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200034060a0516001620005a460201b60201c565b6200035560a05160016200068e60201b60201c565b600069d3c21bcecceda1000000905069043c33c193756480000060088190555069065a4da25d3016c00000600a8190555069021e19e0c9bab240000060098190555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200043b6200042d6200072f60201b60201c565b60016200075960201b60201c565b6200044e3060016200075960201b60201c565b6200046361dead60016200075960201b60201c565b62000485620004776200072f60201b60201c565b6001620005a460201b60201c565b62000498306001620005a460201b60201c565b620004ad61dead6001620005a460201b60201c565b620004ce620004c16200072f60201b60201c565b826200089360201b60201c565b505062001017565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005b4620004d660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005da6200072f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000633576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200062a9062000eb1565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000769620004d660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200078f6200072f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007df9062000eb1565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000887919062000ef0565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000905576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008fc9062000f5d565b60405180910390fd5b620009196000838362000a0b60201b60201c565b80600260008282546200092d919062000fae565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000984919062000fae565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009eb919062000ffa565b60405180910390a362000a076000838362000a1060201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a9757607f821691505b60208210810362000aad5762000aac62000a4f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ad8565b62000b23868362000ad8565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b7062000b6a62000b648462000b3b565b62000b45565b62000b3b565b9050919050565b6000819050919050565b62000b8c8362000b4f565b62000ba462000b9b8262000b77565b84845462000ae5565b825550505050565b600090565b62000bbb62000bac565b62000bc881848462000b81565b505050565b5b8181101562000bf05762000be460008262000bb1565b60018101905062000bce565b5050565b601f82111562000c3f5762000c098162000ab3565b62000c148462000ac8565b8101602085101562000c24578190505b62000c3c62000c338562000ac8565b83018262000bcd565b50505b505050565b600082821c905092915050565b600062000c646000198460080262000c44565b1980831691505092915050565b600062000c7f838362000c51565b9150826002028217905092915050565b62000c9a8262000a15565b67ffffffffffffffff81111562000cb65762000cb562000a20565b5b62000cc2825462000a7e565b62000ccf82828562000bf4565b600060209050601f83116001811462000d07576000841562000cf2578287015190505b62000cfe858262000c71565b86555062000d6e565b601f19841662000d178662000ab3565b60005b8281101562000d415784890151825560018201915060208501945060208101905062000d1a565b8683101562000d61578489015162000d5d601f89168262000c51565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000da88262000d7b565b9050919050565b62000dba8162000d9b565b811462000dc657600080fd5b50565b60008151905062000dda8162000daf565b92915050565b60006020828403121562000df95762000df862000d76565b5b600062000e098482850162000dc9565b91505092915050565b62000e1d8162000d9b565b82525050565b600060408201905062000e3a600083018562000e12565b62000e49602083018462000e12565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000e9960208362000e50565b915062000ea68262000e61565b602082019050919050565b6000602082019050818103600083015262000ecc8162000e8a565b9050919050565b60008115159050919050565b62000eea8162000ed3565b82525050565b600060208201905062000f07600083018462000edf565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000f45601f8362000e50565b915062000f528262000f0d565b602082019050919050565b6000602082019050818103600083015262000f788162000f36565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000fbb8262000b3b565b915062000fc88362000b3b565b925082820190508082111562000fe35762000fe262000f7f565b5b92915050565b62000ff48162000b3b565b82525050565b600060208201905062001011600083018462000fe9565b92915050565b60805160a0516147dc620010596000396000818161123c01526117f6015260008181610e860152818161341d015281816134fe015261352501526147dc6000f3fe6080604052600436106102e85760003560e01c80638da5cb5b11610190578063bbc0c742116100dc578063d257b34f11610095578063e2f456051161006f578063e2f4560514610b61578063f14210a614610b8c578063f2fde38b14610bb5578063f8b45b0514610bde576102ef565b8063d257b34f14610abc578063d85ba06314610af9578063dd62ed3e14610b24576102ef565b8063bbc0c742146109be578063bf56b371146109e9578063c024666814610a14578063c18bc19514610a3d578063c6d2577d14610a66578063c8c8ebe414610a91576102ef565b80639c3b4fdc11610149578063a457c2d711610123578063a457c2d7146108de578063a9059cbb1461091b578063aacebbe314610958578063b62496f514610981576102ef565b80639c3b4fdc1461085f5780639e281a981461088a578063a0d82dc5146108b3576102ef565b80638da5cb5b146107615780638ea5220f1461078c57806392136913146107b7578063924de9b7146107e257806395d89b411461080b5780639a7a23d614610836576102ef565b8063395093511161024f5780636ddd171311610208578063751039fc116101e2578063751039fc146106b75780637571336a146106e257806375f0a8741461070b5780637bce5a0414610736576102ef565b80636ddd17131461063857806370a0823114610663578063715018a6146106a0576102ef565b8063395093511461051457806349bd5a5e146105515780634a62bb651461057c5780634fbee193146105a757806366ca9b83146105e45780636a486a8e1461060d576102ef565b806318160ddd116102a157806318160ddd146104045780631816467f1461042f578063203e727e1461045857806323b872dd1461048157806327c8f835146104be578063313ce567146104e9576102ef565b806301339c21146102f457806302dbd8f81461030b57806306fdde0314610334578063095ea7b31461035f57806310d5de531461039c5780631694505e146103d9576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610c09565b005b34801561031757600080fd5b50610332600480360381019061032d91906135f6565b610d10565b005b34801561034057600080fd5b50610349610db4565b60405161035691906136c6565b60405180910390f35b34801561036b57600080fd5b5061038660048036038101906103819190613746565b610e46565b60405161039391906137a1565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be91906137bc565b610e64565b6040516103d091906137a1565b60405180910390f35b3480156103e557600080fd5b506103ee610e84565b6040516103fb9190613848565b60405180910390f35b34801561041057600080fd5b50610419610ea8565b6040516104269190613872565b60405180910390f35b34801561043b57600080fd5b50610456600480360381019061045191906137bc565b610eb2565b005b34801561046457600080fd5b5061047f600480360381019061047a919061388d565b610fee565b005b34801561048d57600080fd5b506104a860048036038101906104a391906138ba565b611087565b6040516104b591906137a1565b60405180910390f35b3480156104ca57600080fd5b506104d361117f565b6040516104e0919061391c565b60405180910390f35b3480156104f557600080fd5b506104fe611185565b60405161050b9190613953565b60405180910390f35b34801561052057600080fd5b5061053b60048036038101906105369190613746565b61118e565b60405161054891906137a1565b60405180910390f35b34801561055d57600080fd5b5061056661123a565b604051610573919061391c565b60405180910390f35b34801561058857600080fd5b5061059161125e565b60405161059e91906137a1565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c991906137bc565b611271565b6040516105db91906137a1565b60405180910390f35b3480156105f057600080fd5b5061060b600480360381019061060691906135f6565b6112c7565b005b34801561061957600080fd5b5061062261136b565b60405161062f9190613872565b60405180910390f35b34801561064457600080fd5b5061064d611371565b60405161065a91906137a1565b60405180910390f35b34801561066f57600080fd5b5061068a600480360381019061068591906137bc565b611384565b6040516106979190613872565b60405180910390f35b3480156106ac57600080fd5b506106b56113cc565b005b3480156106c357600080fd5b506106cc611454565b6040516106d991906137a1565b60405180910390f35b3480156106ee57600080fd5b506107096004803603810190610704919061399a565b6114f4565b005b34801561071757600080fd5b506107206115cb565b60405161072d919061391c565b60405180910390f35b34801561074257600080fd5b5061074b6115f1565b6040516107589190613872565b60405180910390f35b34801561076d57600080fd5b506107766115f7565b604051610783919061391c565b60405180910390f35b34801561079857600080fd5b506107a1611621565b6040516107ae919061391c565b60405180910390f35b3480156107c357600080fd5b506107cc611647565b6040516107d99190613872565b60405180910390f35b3480156107ee57600080fd5b50610809600480360381019061080491906139da565b61164d565b005b34801561081757600080fd5b506108206116e6565b60405161082d91906136c6565b60405180910390f35b34801561084257600080fd5b5061085d6004803603810190610858919061399a565b611778565b005b34801561086b57600080fd5b50610874611890565b6040516108819190613872565b60405180910390f35b34801561089657600080fd5b506108b160048036038101906108ac9190613a45565b611896565b005b3480156108bf57600080fd5b506108c8611a51565b6040516108d59190613872565b60405180910390f35b3480156108ea57600080fd5b5061090560048036038101906109009190613746565b611a57565b60405161091291906137a1565b60405180910390f35b34801561092757600080fd5b50610942600480360381019061093d9190613746565b611b42565b60405161094f91906137a1565b60405180910390f35b34801561096457600080fd5b5061097f600480360381019061097a91906137bc565b611b60565b005b34801561098d57600080fd5b506109a860048036038101906109a391906137bc565b611c9c565b6040516109b591906137a1565b60405180910390f35b3480156109ca57600080fd5b506109d3611cbc565b6040516109e091906137a1565b60405180910390f35b3480156109f557600080fd5b506109fe611ccf565b604051610a0b9190613872565b60405180910390f35b348015610a2057600080fd5b50610a3b6004803603810190610a36919061399a565b611cd5565b005b348015610a4957600080fd5b50610a646004803603810190610a5f919061388d565b611dfa565b005b348015610a7257600080fd5b50610a7b611e93565b604051610a889190613872565b60405180910390f35b348015610a9d57600080fd5b50610aa6611e99565b604051610ab39190613872565b60405180910390f35b348015610ac857600080fd5b50610ae36004803603810190610ade919061388d565b611e9f565b604051610af091906137a1565b60405180910390f35b348015610b0557600080fd5b50610b0e611f40565b604051610b1b9190613872565b60405180910390f35b348015610b3057600080fd5b50610b4b6004803603810190610b469190613a85565b611f46565b604051610b589190613872565b60405180910390f35b348015610b6d57600080fd5b50610b76611fcd565b604051610b839190613872565b60405180910390f35b348015610b9857600080fd5b50610bb36004803603810190610bae919061388d565b611fd3565b005b348015610bc157600080fd5b50610bdc6004803603810190610bd791906137bc565b6120dc565b005b348015610bea57600080fd5b50610bf36121d3565b604051610c009190613872565b60405180910390f35b610c116121d9565b73ffffffffffffffffffffffffffffffffffffffff16610c2f6115f7565b73ffffffffffffffffffffffffffffffffffffffff1614610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c90613b11565b60405180910390fd5b6000600c5414610cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc190613b7d565b60405180910390fd5b43600c8190555042600d819055506001600b60026101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b610d186121d9565b73ffffffffffffffffffffffffffffffffffffffff16610d366115f7565b73ffffffffffffffffffffffffffffffffffffffff1614610d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8390613b11565b60405180910390fd5b8160128190555080601381905550601354601254610daa9190613bcc565b6011819055505050565b606060038054610dc390613c2f565b80601f0160208091040260200160405190810160405280929190818152602001828054610def90613c2f565b8015610e3c5780601f10610e1157610100808354040283529160200191610e3c565b820191906000526020600020905b815481529060010190602001808311610e1f57829003601f168201915b5050505050905090565b6000610e5a610e536121d9565b84846121e1565b6001905092915050565b60176020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610eba6121d9565b73ffffffffffffffffffffffffffffffffffffffff16610ed86115f7565b73ffffffffffffffffffffffffffffffffffffffff1614610f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2590613b11565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610ff66121d9565b73ffffffffffffffffffffffffffffffffffffffff166110146115f7565b73ffffffffffffffffffffffffffffffffffffffff161461106a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106190613b11565b60405180910390fd5b670de0b6b3a76400008161107e9190613c60565b60088190555050565b60006110948484846123aa565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110df6121d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561115f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115690613d14565b60405180910390fd5b6111738561116b6121d9565b8584036121e1565b60019150509392505050565b61dead81565b60006012905090565b600061123061119b6121d9565b8484600160006111a96121d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461122b9190613bcc565b6121e1565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60009054906101000a900460ff1681565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6112cf6121d9565b73ffffffffffffffffffffffffffffffffffffffff166112ed6115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133a90613b11565b60405180910390fd5b81600f8190555080601081905550601054600f546113619190613bcc565b600e819055505050565b60115481565b600b60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113d46121d9565b73ffffffffffffffffffffffffffffffffffffffff166113f26115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143f90613b11565b60405180910390fd5b6114526000612df7565b565b600061145e6121d9565b73ffffffffffffffffffffffffffffffffffffffff1661147c6115f7565b73ffffffffffffffffffffffffffffffffffffffff16146114d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c990613b11565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b6114fc6121d9565b73ffffffffffffffffffffffffffffffffffffffff1661151a6115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790613b11565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b6116556121d9565b73ffffffffffffffffffffffffffffffffffffffff166116736115f7565b73ffffffffffffffffffffffffffffffffffffffff16146116c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c090613b11565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b6060600480546116f590613c2f565b80601f016020809104026020016040519081016040528092919081815260200182805461172190613c2f565b801561176e5780601f106117435761010080835404028352916020019161176e565b820191906000526020600020905b81548152906001019060200180831161175157829003601f168201915b5050505050905090565b6117806121d9565b73ffffffffffffffffffffffffffffffffffffffff1661179e6115f7565b73ffffffffffffffffffffffffffffffffffffffff16146117f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117eb90613b11565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187990613da6565b60405180910390fd5b61188c8282612ebd565b5050565b60105481565b61189e6121d9565b73ffffffffffffffffffffffffffffffffffffffff166118bc6115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190990613b11565b60405180910390fd5b808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161194c919061391c565b602060405180830381865afa158015611969573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198d9190613ddb565b10156119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c590613e54565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611a09929190613e74565b6020604051808303816000875af1158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c9190613eb2565b505050565b60135481565b60008060016000611a666121d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1a90613f51565b60405180910390fd5b611b37611b2e6121d9565b858584036121e1565b600191505092915050565b6000611b56611b4f6121d9565b84846123aa565b6001905092915050565b611b686121d9565b73ffffffffffffffffffffffffffffffffffffffff16611b866115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd390613b11565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60186020528060005260406000206000915054906101000a900460ff1681565b600b60029054906101000a900460ff1681565b600c5481565b611cdd6121d9565b73ffffffffffffffffffffffffffffffffffffffff16611cfb6115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4890613b11565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611dee91906137a1565b60405180910390a25050565b611e026121d9565b73ffffffffffffffffffffffffffffffffffffffff16611e206115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6d90613b11565b60405180910390fd5b670de0b6b3a764000081611e8a9190613c60565b600a8190555050565b600d5481565b60085481565b6000611ea96121d9565b73ffffffffffffffffffffffffffffffffffffffff16611ec76115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1490613b11565b60405180910390fd5b670de0b6b3a764000082611f319190613c60565b60098190555060019050919050565b600e5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b611fdb6121d9565b73ffffffffffffffffffffffffffffffffffffffff16611ff96115f7565b73ffffffffffffffffffffffffffffffffffffffff161461204f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204690613b11565b60405180910390fd5b80471015612092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208990613e54565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120d8573d6000803e3d6000fd5b5050565b6120e46121d9565b73ffffffffffffffffffffffffffffffffffffffff166121026115f7565b73ffffffffffffffffffffffffffffffffffffffff1614612158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214f90613b11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121be90613fe3565b60405180910390fd5b6121d081612df7565b50565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224790614075565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b690614107565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161239d9190613872565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612419576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241090614199565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247f9061422b565b60405180910390fd5b600081036124a15761249c83836000612f5e565b612df2565b600b60009054906101000a900460ff161561299c576124be6115f7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561252c57506124fc6115f7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125655750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561259f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125b85750600560149054906101000a900460ff16155b1561299b57600b60029054906101000a900460ff166126b257601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126725750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6126b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a890614297565b60405180910390fd5b5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127555750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127fc5760085481111561279f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279690614329565b60405180910390fd5b600a546127ab83611384565b826127b69190613bcc565b11156127f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ee90614395565b60405180910390fd5b61299a565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561289f5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128ee576008548111156128e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e090614427565b60405180910390fd5b612999565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661299857600a5461294b83611384565b826129569190613bcc565b1115612997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298e90614395565b60405180910390fd5b5b5b5b5b5b60006129a730611384565b9050600060095482101590508080156129cc5750600b60019054906101000a900460ff165b80156129e55750600560149054906101000a900460ff16155b8015612a3b5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612a915750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ae75750601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b2b576001600560146101000a81548160ff021916908315150217905550612b0f6131dd565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612be15750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612beb57600090505b60008115612de257601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c4e57506000601154115b15612cda57606460115486612c639190613c60565b612c6d9190614476565b905060115460125482612c809190613c60565b612c8a9190614476565b60146000828254612c9b9190613bcc565b9250508190555060115460135482612cb39190613c60565b612cbd9190614476565b60156000828254612cce9190613bcc565b92505081905550612dbe565b601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d3557506000600e54115b15612dbd576064600e5486612d4a9190613c60565b612d549190614476565b9050600e54600f5482612d679190613c60565b612d719190614476565b60146000828254612d829190613bcc565b92505081905550600e5460105482612d9a9190613c60565b612da49190614476565b60156000828254612db59190613bcc565b925050819055505b5b6000811115612dd357612dd2873083612f5e565b5b8085612ddf91906144a7565b94505b612ded878787612f5e565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc490614199565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361303c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130339061422b565b60405180910390fd5b613047838383613374565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156130cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130c49061454d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546131609190613bcc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131c49190613872565b60405180910390a36131d7848484613379565b50505050565b60006131e830611384565b905060006015546014546131fc9190613bcc565b905060006009548311156132105760095492505b600083905061321e8161337e565b6000479050600084601554836132349190613c60565b61323e9190614476565b905060006014819055506000601581905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516132969061459e565b60006040518083038185875af1925050503d80600081146132d3576040519150601f19603f3d011682016040523d82523d6000602084013e6132d8565b606091505b505080945050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516133249061459e565b60006040518083038185875af1925050503d8060008114613361576040519150601f19603f3d011682016040523d82523d6000602084013e613366565b606091505b505080945050505050505050565b505050565b505050565b6000600267ffffffffffffffff81111561339b5761339a6145b3565b5b6040519080825280602002602001820160405280156133c95781602001602082028036833780820191505090505b50905030816000815181106133e1576133e06145e2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613486573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134aa9190614626565b816001815181106134be576134bd6145e2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613523307f0000000000000000000000000000000000000000000000000000000000000000846121e1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161358595949392919061474c565b600060405180830381600087803b15801561359f57600080fd5b505af11580156135b3573d6000803e3d6000fd5b505050505050565b600080fd5b6000819050919050565b6135d3816135c0565b81146135de57600080fd5b50565b6000813590506135f0816135ca565b92915050565b6000806040838503121561360d5761360c6135bb565b5b600061361b858286016135e1565b925050602061362c858286016135e1565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613670578082015181840152602081019050613655565b60008484015250505050565b6000601f19601f8301169050919050565b600061369882613636565b6136a28185613641565b93506136b2818560208601613652565b6136bb8161367c565b840191505092915050565b600060208201905081810360008301526136e0818461368d565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613713826136e8565b9050919050565b61372381613708565b811461372e57600080fd5b50565b6000813590506137408161371a565b92915050565b6000806040838503121561375d5761375c6135bb565b5b600061376b85828601613731565b925050602061377c858286016135e1565b9150509250929050565b60008115159050919050565b61379b81613786565b82525050565b60006020820190506137b66000830184613792565b92915050565b6000602082840312156137d2576137d16135bb565b5b60006137e084828501613731565b91505092915050565b6000819050919050565b600061380e613809613804846136e8565b6137e9565b6136e8565b9050919050565b6000613820826137f3565b9050919050565b600061383282613815565b9050919050565b61384281613827565b82525050565b600060208201905061385d6000830184613839565b92915050565b61386c816135c0565b82525050565b60006020820190506138876000830184613863565b92915050565b6000602082840312156138a3576138a26135bb565b5b60006138b1848285016135e1565b91505092915050565b6000806000606084860312156138d3576138d26135bb565b5b60006138e186828701613731565b93505060206138f286828701613731565b9250506040613903868287016135e1565b9150509250925092565b61391681613708565b82525050565b6000602082019050613931600083018461390d565b92915050565b600060ff82169050919050565b61394d81613937565b82525050565b60006020820190506139686000830184613944565b92915050565b61397781613786565b811461398257600080fd5b50565b6000813590506139948161396e565b92915050565b600080604083850312156139b1576139b06135bb565b5b60006139bf85828601613731565b92505060206139d085828601613985565b9150509250929050565b6000602082840312156139f0576139ef6135bb565b5b60006139fe84828501613985565b91505092915050565b6000613a1282613708565b9050919050565b613a2281613a07565b8114613a2d57600080fd5b50565b600081359050613a3f81613a19565b92915050565b60008060408385031215613a5c57613a5b6135bb565b5b6000613a6a85828601613a30565b9250506020613a7b858286016135e1565b9150509250929050565b60008060408385031215613a9c57613a9b6135bb565b5b6000613aaa85828601613731565b9250506020613abb85828601613731565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613afb602083613641565b9150613b0682613ac5565b602082019050919050565b60006020820190508181036000830152613b2a81613aee565b9050919050565b7f416c7265616479206c61756e6368656420626f69000000000000000000000000600082015250565b6000613b67601483613641565b9150613b7282613b31565b602082019050919050565b60006020820190508181036000830152613b9681613b5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bd7826135c0565b9150613be2836135c0565b9250828201905080821115613bfa57613bf9613b9d565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613c4757607f821691505b602082108103613c5a57613c59613c00565b5b50919050565b6000613c6b826135c0565b9150613c76836135c0565b9250828202613c84816135c0565b91508282048414831517613c9b57613c9a613b9d565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613cfe602883613641565b9150613d0982613ca2565b604082019050919050565b60006020820190508181036000830152613d2d81613cf1565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613d90603983613641565b9150613d9b82613d34565b604082019050919050565b60006020820190508181036000830152613dbf81613d83565b9050919050565b600081519050613dd5816135ca565b92915050565b600060208284031215613df157613df06135bb565b5b6000613dff84828501613dc6565b91505092915050565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b6000613e3e600e83613641565b9150613e4982613e08565b602082019050919050565b60006020820190508181036000830152613e6d81613e31565b9050919050565b6000604082019050613e89600083018561390d565b613e966020830184613863565b9392505050565b600081519050613eac8161396e565b92915050565b600060208284031215613ec857613ec76135bb565b5b6000613ed684828501613e9d565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613f3b602583613641565b9150613f4682613edf565b604082019050919050565b60006020820190508181036000830152613f6a81613f2e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613fcd602683613641565b9150613fd882613f71565b604082019050919050565b60006020820190508181036000830152613ffc81613fc0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061405f602483613641565b915061406a82614003565b604082019050919050565b6000602082019050818103600083015261408e81614052565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006140f1602283613641565b91506140fc82614095565b604082019050919050565b60006020820190508181036000830152614120816140e4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614183602583613641565b915061418e82614127565b604082019050919050565b600060208201905081810360008301526141b281614176565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614215602383613641565b9150614220826141b9565b604082019050919050565b6000602082019050818103600083015261424481614208565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614281601683613641565b915061428c8261424b565b602082019050919050565b600060208201905081810360008301526142b081614274565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614313603583613641565b915061431e826142b7565b604082019050919050565b6000602082019050818103600083015261434281614306565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061437f601383613641565b915061438a82614349565b602082019050919050565b600060208201905081810360008301526143ae81614372565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614411603683613641565b915061441c826143b5565b604082019050919050565b6000602082019050818103600083015261444081614404565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614481826135c0565b915061448c836135c0565b92508261449c5761449b614447565b5b828204905092915050565b60006144b2826135c0565b91506144bd836135c0565b92508282039050818111156144d5576144d4613b9d565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614537602683613641565b9150614542826144db565b604082019050919050565b600060208201905081810360008301526145668161452a565b9050919050565b600081905092915050565b50565b600061458860008361456d565b915061459382614578565b600082019050919050565b60006145a98261457b565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506146208161371a565b92915050565b60006020828403121561463c5761463b6135bb565b5b600061464a84828501614611565b91505092915050565b6000819050919050565b600061467861467361466e84614653565b6137e9565b6135c0565b9050919050565b6146888161465d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6146c381613708565b82525050565b60006146d583836146ba565b60208301905092915050565b6000602082019050919050565b60006146f98261468e565b6147038185614699565b935061470e836146aa565b8060005b8381101561473f57815161472688826146c9565b9750614731836146e1565b925050600181019050614712565b5085935050505092915050565b600060a0820190506147616000830188613863565b61476e602083018761467f565b818103604083015261478081866146ee565b905061478f606083018561390d565b61479c6080830184613863565b969550505050505056fea264697066735822122023e51d0f6499542417cf53b473b51b4e1458f12e419d2ec87889a42ea6c7a55164736f6c63430008120033
Deployed Bytecode
0x6080604052600436106102e85760003560e01c80638da5cb5b11610190578063bbc0c742116100dc578063d257b34f11610095578063e2f456051161006f578063e2f4560514610b61578063f14210a614610b8c578063f2fde38b14610bb5578063f8b45b0514610bde576102ef565b8063d257b34f14610abc578063d85ba06314610af9578063dd62ed3e14610b24576102ef565b8063bbc0c742146109be578063bf56b371146109e9578063c024666814610a14578063c18bc19514610a3d578063c6d2577d14610a66578063c8c8ebe414610a91576102ef565b80639c3b4fdc11610149578063a457c2d711610123578063a457c2d7146108de578063a9059cbb1461091b578063aacebbe314610958578063b62496f514610981576102ef565b80639c3b4fdc1461085f5780639e281a981461088a578063a0d82dc5146108b3576102ef565b80638da5cb5b146107615780638ea5220f1461078c57806392136913146107b7578063924de9b7146107e257806395d89b411461080b5780639a7a23d614610836576102ef565b8063395093511161024f5780636ddd171311610208578063751039fc116101e2578063751039fc146106b75780637571336a146106e257806375f0a8741461070b5780637bce5a0414610736576102ef565b80636ddd17131461063857806370a0823114610663578063715018a6146106a0576102ef565b8063395093511461051457806349bd5a5e146105515780634a62bb651461057c5780634fbee193146105a757806366ca9b83146105e45780636a486a8e1461060d576102ef565b806318160ddd116102a157806318160ddd146104045780631816467f1461042f578063203e727e1461045857806323b872dd1461048157806327c8f835146104be578063313ce567146104e9576102ef565b806301339c21146102f457806302dbd8f81461030b57806306fdde0314610334578063095ea7b31461035f57806310d5de531461039c5780631694505e146103d9576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b50610309610c09565b005b34801561031757600080fd5b50610332600480360381019061032d91906135f6565b610d10565b005b34801561034057600080fd5b50610349610db4565b60405161035691906136c6565b60405180910390f35b34801561036b57600080fd5b5061038660048036038101906103819190613746565b610e46565b60405161039391906137a1565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be91906137bc565b610e64565b6040516103d091906137a1565b60405180910390f35b3480156103e557600080fd5b506103ee610e84565b6040516103fb9190613848565b60405180910390f35b34801561041057600080fd5b50610419610ea8565b6040516104269190613872565b60405180910390f35b34801561043b57600080fd5b50610456600480360381019061045191906137bc565b610eb2565b005b34801561046457600080fd5b5061047f600480360381019061047a919061388d565b610fee565b005b34801561048d57600080fd5b506104a860048036038101906104a391906138ba565b611087565b6040516104b591906137a1565b60405180910390f35b3480156104ca57600080fd5b506104d361117f565b6040516104e0919061391c565b60405180910390f35b3480156104f557600080fd5b506104fe611185565b60405161050b9190613953565b60405180910390f35b34801561052057600080fd5b5061053b60048036038101906105369190613746565b61118e565b60405161054891906137a1565b60405180910390f35b34801561055d57600080fd5b5061056661123a565b604051610573919061391c565b60405180910390f35b34801561058857600080fd5b5061059161125e565b60405161059e91906137a1565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c991906137bc565b611271565b6040516105db91906137a1565b60405180910390f35b3480156105f057600080fd5b5061060b600480360381019061060691906135f6565b6112c7565b005b34801561061957600080fd5b5061062261136b565b60405161062f9190613872565b60405180910390f35b34801561064457600080fd5b5061064d611371565b60405161065a91906137a1565b60405180910390f35b34801561066f57600080fd5b5061068a600480360381019061068591906137bc565b611384565b6040516106979190613872565b60405180910390f35b3480156106ac57600080fd5b506106b56113cc565b005b3480156106c357600080fd5b506106cc611454565b6040516106d991906137a1565b60405180910390f35b3480156106ee57600080fd5b506107096004803603810190610704919061399a565b6114f4565b005b34801561071757600080fd5b506107206115cb565b60405161072d919061391c565b60405180910390f35b34801561074257600080fd5b5061074b6115f1565b6040516107589190613872565b60405180910390f35b34801561076d57600080fd5b506107766115f7565b604051610783919061391c565b60405180910390f35b34801561079857600080fd5b506107a1611621565b6040516107ae919061391c565b60405180910390f35b3480156107c357600080fd5b506107cc611647565b6040516107d99190613872565b60405180910390f35b3480156107ee57600080fd5b50610809600480360381019061080491906139da565b61164d565b005b34801561081757600080fd5b506108206116e6565b60405161082d91906136c6565b60405180910390f35b34801561084257600080fd5b5061085d6004803603810190610858919061399a565b611778565b005b34801561086b57600080fd5b50610874611890565b6040516108819190613872565b60405180910390f35b34801561089657600080fd5b506108b160048036038101906108ac9190613a45565b611896565b005b3480156108bf57600080fd5b506108c8611a51565b6040516108d59190613872565b60405180910390f35b3480156108ea57600080fd5b5061090560048036038101906109009190613746565b611a57565b60405161091291906137a1565b60405180910390f35b34801561092757600080fd5b50610942600480360381019061093d9190613746565b611b42565b60405161094f91906137a1565b60405180910390f35b34801561096457600080fd5b5061097f600480360381019061097a91906137bc565b611b60565b005b34801561098d57600080fd5b506109a860048036038101906109a391906137bc565b611c9c565b6040516109b591906137a1565b60405180910390f35b3480156109ca57600080fd5b506109d3611cbc565b6040516109e091906137a1565b60405180910390f35b3480156109f557600080fd5b506109fe611ccf565b604051610a0b9190613872565b60405180910390f35b348015610a2057600080fd5b50610a3b6004803603810190610a36919061399a565b611cd5565b005b348015610a4957600080fd5b50610a646004803603810190610a5f919061388d565b611dfa565b005b348015610a7257600080fd5b50610a7b611e93565b604051610a889190613872565b60405180910390f35b348015610a9d57600080fd5b50610aa6611e99565b604051610ab39190613872565b60405180910390f35b348015610ac857600080fd5b50610ae36004803603810190610ade919061388d565b611e9f565b604051610af091906137a1565b60405180910390f35b348015610b0557600080fd5b50610b0e611f40565b604051610b1b9190613872565b60405180910390f35b348015610b3057600080fd5b50610b4b6004803603810190610b469190613a85565b611f46565b604051610b589190613872565b60405180910390f35b348015610b6d57600080fd5b50610b76611fcd565b604051610b839190613872565b60405180910390f35b348015610b9857600080fd5b50610bb36004803603810190610bae919061388d565b611fd3565b005b348015610bc157600080fd5b50610bdc6004803603810190610bd791906137bc565b6120dc565b005b348015610bea57600080fd5b50610bf36121d3565b604051610c009190613872565b60405180910390f35b610c116121d9565b73ffffffffffffffffffffffffffffffffffffffff16610c2f6115f7565b73ffffffffffffffffffffffffffffffffffffffff1614610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c90613b11565b60405180910390fd5b6000600c5414610cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc190613b7d565b60405180910390fd5b43600c8190555042600d819055506001600b60026101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b610d186121d9565b73ffffffffffffffffffffffffffffffffffffffff16610d366115f7565b73ffffffffffffffffffffffffffffffffffffffff1614610d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8390613b11565b60405180910390fd5b8160128190555080601381905550601354601254610daa9190613bcc565b6011819055505050565b606060038054610dc390613c2f565b80601f0160208091040260200160405190810160405280929190818152602001828054610def90613c2f565b8015610e3c5780601f10610e1157610100808354040283529160200191610e3c565b820191906000526020600020905b815481529060010190602001808311610e1f57829003601f168201915b5050505050905090565b6000610e5a610e536121d9565b84846121e1565b6001905092915050565b60176020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610eba6121d9565b73ffffffffffffffffffffffffffffffffffffffff16610ed86115f7565b73ffffffffffffffffffffffffffffffffffffffff1614610f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2590613b11565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610ff66121d9565b73ffffffffffffffffffffffffffffffffffffffff166110146115f7565b73ffffffffffffffffffffffffffffffffffffffff161461106a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106190613b11565b60405180910390fd5b670de0b6b3a76400008161107e9190613c60565b60088190555050565b60006110948484846123aa565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110df6121d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561115f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115690613d14565b60405180910390fd5b6111738561116b6121d9565b8584036121e1565b60019150509392505050565b61dead81565b60006012905090565b600061123061119b6121d9565b8484600160006111a96121d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461122b9190613bcc565b6121e1565b6001905092915050565b7f00000000000000000000000048b98c8ee5e2a3a191ee367ceca73853c05a87b981565b600b60009054906101000a900460ff1681565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6112cf6121d9565b73ffffffffffffffffffffffffffffffffffffffff166112ed6115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133a90613b11565b60405180910390fd5b81600f8190555080601081905550601054600f546113619190613bcc565b600e819055505050565b60115481565b600b60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113d46121d9565b73ffffffffffffffffffffffffffffffffffffffff166113f26115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143f90613b11565b60405180910390fd5b6114526000612df7565b565b600061145e6121d9565b73ffffffffffffffffffffffffffffffffffffffff1661147c6115f7565b73ffffffffffffffffffffffffffffffffffffffff16146114d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c990613b11565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055506001905090565b6114fc6121d9565b73ffffffffffffffffffffffffffffffffffffffff1661151a6115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790613b11565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b6116556121d9565b73ffffffffffffffffffffffffffffffffffffffff166116736115f7565b73ffffffffffffffffffffffffffffffffffffffff16146116c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c090613b11565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b6060600480546116f590613c2f565b80601f016020809104026020016040519081016040528092919081815260200182805461172190613c2f565b801561176e5780601f106117435761010080835404028352916020019161176e565b820191906000526020600020905b81548152906001019060200180831161175157829003601f168201915b5050505050905090565b6117806121d9565b73ffffffffffffffffffffffffffffffffffffffff1661179e6115f7565b73ffffffffffffffffffffffffffffffffffffffff16146117f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117eb90613b11565b60405180910390fd5b7f00000000000000000000000048b98c8ee5e2a3a191ee367ceca73853c05a87b973ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187990613da6565b60405180910390fd5b61188c8282612ebd565b5050565b60105481565b61189e6121d9565b73ffffffffffffffffffffffffffffffffffffffff166118bc6115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190990613b11565b60405180910390fd5b808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161194c919061391c565b602060405180830381865afa158015611969573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198d9190613ddb565b10156119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c590613e54565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611a09929190613e74565b6020604051808303816000875af1158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c9190613eb2565b505050565b60135481565b60008060016000611a666121d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1a90613f51565b60405180910390fd5b611b37611b2e6121d9565b858584036121e1565b600191505092915050565b6000611b56611b4f6121d9565b84846123aa565b6001905092915050565b611b686121d9565b73ffffffffffffffffffffffffffffffffffffffff16611b866115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd390613b11565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60186020528060005260406000206000915054906101000a900460ff1681565b600b60029054906101000a900460ff1681565b600c5481565b611cdd6121d9565b73ffffffffffffffffffffffffffffffffffffffff16611cfb6115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4890613b11565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611dee91906137a1565b60405180910390a25050565b611e026121d9565b73ffffffffffffffffffffffffffffffffffffffff16611e206115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6d90613b11565b60405180910390fd5b670de0b6b3a764000081611e8a9190613c60565b600a8190555050565b600d5481565b60085481565b6000611ea96121d9565b73ffffffffffffffffffffffffffffffffffffffff16611ec76115f7565b73ffffffffffffffffffffffffffffffffffffffff1614611f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1490613b11565b60405180910390fd5b670de0b6b3a764000082611f319190613c60565b60098190555060019050919050565b600e5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b611fdb6121d9565b73ffffffffffffffffffffffffffffffffffffffff16611ff96115f7565b73ffffffffffffffffffffffffffffffffffffffff161461204f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204690613b11565b60405180910390fd5b80471015612092576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208990613e54565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120d8573d6000803e3d6000fd5b5050565b6120e46121d9565b73ffffffffffffffffffffffffffffffffffffffff166121026115f7565b73ffffffffffffffffffffffffffffffffffffffff1614612158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214f90613b11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121be90613fe3565b60405180910390fd5b6121d081612df7565b50565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224790614075565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b690614107565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161239d9190613872565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612419576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241090614199565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247f9061422b565b60405180910390fd5b600081036124a15761249c83836000612f5e565b612df2565b600b60009054906101000a900460ff161561299c576124be6115f7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561252c57506124fc6115f7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125655750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561259f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125b85750600560149054906101000a900460ff16155b1561299b57600b60029054906101000a900460ff166126b257601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126725750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6126b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a890614297565b60405180910390fd5b5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127555750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127fc5760085481111561279f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279690614329565b60405180910390fd5b600a546127ab83611384565b826127b69190613bcc565b11156127f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ee90614395565b60405180910390fd5b61299a565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561289f5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128ee576008548111156128e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e090614427565b60405180910390fd5b612999565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661299857600a5461294b83611384565b826129569190613bcc565b1115612997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298e90614395565b60405180910390fd5b5b5b5b5b5b60006129a730611384565b9050600060095482101590508080156129cc5750600b60019054906101000a900460ff165b80156129e55750600560149054906101000a900460ff16155b8015612a3b5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612a915750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ae75750601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b2b576001600560146101000a81548160ff021916908315150217905550612b0f6131dd565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612be15750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612beb57600090505b60008115612de257601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c4e57506000601154115b15612cda57606460115486612c639190613c60565b612c6d9190614476565b905060115460125482612c809190613c60565b612c8a9190614476565b60146000828254612c9b9190613bcc565b9250508190555060115460135482612cb39190613c60565b612cbd9190614476565b60156000828254612cce9190613bcc565b92505081905550612dbe565b601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d3557506000600e54115b15612dbd576064600e5486612d4a9190613c60565b612d549190614476565b9050600e54600f5482612d679190613c60565b612d719190614476565b60146000828254612d829190613bcc565b92505081905550600e5460105482612d9a9190613c60565b612da49190614476565b60156000828254612db59190613bcc565b925050819055505b5b6000811115612dd357612dd2873083612f5e565b5b8085612ddf91906144a7565b94505b612ded878787612f5e565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc490614199565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361303c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130339061422b565b60405180910390fd5b613047838383613374565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156130cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130c49061454d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546131609190613bcc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131c49190613872565b60405180910390a36131d7848484613379565b50505050565b60006131e830611384565b905060006015546014546131fc9190613bcc565b905060006009548311156132105760095492505b600083905061321e8161337e565b6000479050600084601554836132349190613c60565b61323e9190614476565b905060006014819055506000601581905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516132969061459e565b60006040518083038185875af1925050503d80600081146132d3576040519150601f19603f3d011682016040523d82523d6000602084013e6132d8565b606091505b505080945050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516133249061459e565b60006040518083038185875af1925050503d8060008114613361576040519150601f19603f3d011682016040523d82523d6000602084013e613366565b606091505b505080945050505050505050565b505050565b505050565b6000600267ffffffffffffffff81111561339b5761339a6145b3565b5b6040519080825280602002602001820160405280156133c95781602001602082028036833780820191505090505b50905030816000815181106133e1576133e06145e2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613486573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134aa9190614626565b816001815181106134be576134bd6145e2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613523307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846121e1565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161358595949392919061474c565b600060405180830381600087803b15801561359f57600080fd5b505af11580156135b3573d6000803e3d6000fd5b505050505050565b600080fd5b6000819050919050565b6135d3816135c0565b81146135de57600080fd5b50565b6000813590506135f0816135ca565b92915050565b6000806040838503121561360d5761360c6135bb565b5b600061361b858286016135e1565b925050602061362c858286016135e1565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613670578082015181840152602081019050613655565b60008484015250505050565b6000601f19601f8301169050919050565b600061369882613636565b6136a28185613641565b93506136b2818560208601613652565b6136bb8161367c565b840191505092915050565b600060208201905081810360008301526136e0818461368d565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613713826136e8565b9050919050565b61372381613708565b811461372e57600080fd5b50565b6000813590506137408161371a565b92915050565b6000806040838503121561375d5761375c6135bb565b5b600061376b85828601613731565b925050602061377c858286016135e1565b9150509250929050565b60008115159050919050565b61379b81613786565b82525050565b60006020820190506137b66000830184613792565b92915050565b6000602082840312156137d2576137d16135bb565b5b60006137e084828501613731565b91505092915050565b6000819050919050565b600061380e613809613804846136e8565b6137e9565b6136e8565b9050919050565b6000613820826137f3565b9050919050565b600061383282613815565b9050919050565b61384281613827565b82525050565b600060208201905061385d6000830184613839565b92915050565b61386c816135c0565b82525050565b60006020820190506138876000830184613863565b92915050565b6000602082840312156138a3576138a26135bb565b5b60006138b1848285016135e1565b91505092915050565b6000806000606084860312156138d3576138d26135bb565b5b60006138e186828701613731565b93505060206138f286828701613731565b9250506040613903868287016135e1565b9150509250925092565b61391681613708565b82525050565b6000602082019050613931600083018461390d565b92915050565b600060ff82169050919050565b61394d81613937565b82525050565b60006020820190506139686000830184613944565b92915050565b61397781613786565b811461398257600080fd5b50565b6000813590506139948161396e565b92915050565b600080604083850312156139b1576139b06135bb565b5b60006139bf85828601613731565b92505060206139d085828601613985565b9150509250929050565b6000602082840312156139f0576139ef6135bb565b5b60006139fe84828501613985565b91505092915050565b6000613a1282613708565b9050919050565b613a2281613a07565b8114613a2d57600080fd5b50565b600081359050613a3f81613a19565b92915050565b60008060408385031215613a5c57613a5b6135bb565b5b6000613a6a85828601613a30565b9250506020613a7b858286016135e1565b9150509250929050565b60008060408385031215613a9c57613a9b6135bb565b5b6000613aaa85828601613731565b9250506020613abb85828601613731565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613afb602083613641565b9150613b0682613ac5565b602082019050919050565b60006020820190508181036000830152613b2a81613aee565b9050919050565b7f416c7265616479206c61756e6368656420626f69000000000000000000000000600082015250565b6000613b67601483613641565b9150613b7282613b31565b602082019050919050565b60006020820190508181036000830152613b9681613b5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bd7826135c0565b9150613be2836135c0565b9250828201905080821115613bfa57613bf9613b9d565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613c4757607f821691505b602082108103613c5a57613c59613c00565b5b50919050565b6000613c6b826135c0565b9150613c76836135c0565b9250828202613c84816135c0565b91508282048414831517613c9b57613c9a613b9d565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613cfe602883613641565b9150613d0982613ca2565b604082019050919050565b60006020820190508181036000830152613d2d81613cf1565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613d90603983613641565b9150613d9b82613d34565b604082019050919050565b60006020820190508181036000830152613dbf81613d83565b9050919050565b600081519050613dd5816135ca565b92915050565b600060208284031215613df157613df06135bb565b5b6000613dff84828501613dc6565b91505092915050565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b6000613e3e600e83613641565b9150613e4982613e08565b602082019050919050565b60006020820190508181036000830152613e6d81613e31565b9050919050565b6000604082019050613e89600083018561390d565b613e966020830184613863565b9392505050565b600081519050613eac8161396e565b92915050565b600060208284031215613ec857613ec76135bb565b5b6000613ed684828501613e9d565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613f3b602583613641565b9150613f4682613edf565b604082019050919050565b60006020820190508181036000830152613f6a81613f2e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613fcd602683613641565b9150613fd882613f71565b604082019050919050565b60006020820190508181036000830152613ffc81613fc0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061405f602483613641565b915061406a82614003565b604082019050919050565b6000602082019050818103600083015261408e81614052565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006140f1602283613641565b91506140fc82614095565b604082019050919050565b60006020820190508181036000830152614120816140e4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614183602583613641565b915061418e82614127565b604082019050919050565b600060208201905081810360008301526141b281614176565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614215602383613641565b9150614220826141b9565b604082019050919050565b6000602082019050818103600083015261424481614208565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614281601683613641565b915061428c8261424b565b602082019050919050565b600060208201905081810360008301526142b081614274565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614313603583613641565b915061431e826142b7565b604082019050919050565b6000602082019050818103600083015261434281614306565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061437f601383613641565b915061438a82614349565b602082019050919050565b600060208201905081810360008301526143ae81614372565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614411603683613641565b915061441c826143b5565b604082019050919050565b6000602082019050818103600083015261444081614404565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614481826135c0565b915061448c836135c0565b92508261449c5761449b614447565b5b828204905092915050565b60006144b2826135c0565b91506144bd836135c0565b92508282039050818111156144d5576144d4613b9d565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614537602683613641565b9150614542826144db565b604082019050919050565b600060208201905081810360008301526145668161452a565b9050919050565b600081905092915050565b50565b600061458860008361456d565b915061459382614578565b600082019050919050565b60006145a98261457b565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506146208161371a565b92915050565b60006020828403121561463c5761463b6135bb565b5b600061464a84828501614611565b91505092915050565b6000819050919050565b600061467861467361466e84614653565b6137e9565b6135c0565b9050919050565b6146888161465d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6146c381613708565b82525050565b60006146d583836146ba565b60208301905092915050565b6000602082019050919050565b60006146f98261468e565b6147038185614699565b935061470e836146aa565b8060005b8381101561473f57815161472688826146c9565b9750614731836146e1565b925050600181019050614712565b5085935050505092915050565b600060a0820190506147616000830188613863565b61476e602083018761467f565b818103604083015261478081866146ee565b905061478f606083018561390d565b61479c6080830184613863565b969550505050505056fea264697066735822122023e51d0f6499542417cf53b473b51b4e1458f12e419d2ec87889a42ea6c7a55164736f6c63430008120033
Deployed Bytecode Sourcemap
15228:12829:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19100:246;;;;;;;;;;;;;:::i;:::-;;20488;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4761:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6158:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16287:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15272:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5250:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21674:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19611:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6360:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15375:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5092:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6897:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15330:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15652:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21839:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20240:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15965:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15692:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5421:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1193:103;;;;;;;;;;;;;:::i;:::-;;18873:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19867:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15467:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15886:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;885:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15504:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16005:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20132:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4980:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20932:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15928:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27845:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16048:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7195:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5572:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21442:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16506:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15730:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15772:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20742:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19743:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15804:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15537:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19416:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15847:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5835:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15579:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27654:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1451:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15619:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19100:246;1116:12;:10;:12::i;:::-;1105:23;;:7;:5;:7::i;:::-;:23;;;1097:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19168:1:::1;19154:10;;:15;19146:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;19218:12;19205:10;:25;;;;19263:15;19241:19;:37;;;;19305:4;19289:13;;:20;;;;;;;;;;;;;;;;;;19334:4;19320:11;;:18;;;;;;;;;;;;;;;;;;19100:246::o:0;20488:::-;1116:12;:10;:12::i;:::-;1105:23;;:7;:5;:7::i;:::-;:23;;;1097:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20626:13:::1;20607:16;:32;;;;20663:7;20650:10;:20;;;;20716:10;;20697:16;;:29;;;;:::i;:::-;20681:13;:45;;;;20488:246:::0;;:::o;4761:100::-;4815:13;4848:5;4841:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4761:100;:::o;6158:194::-;6266:4;6283:39;6292:12;:10;:12::i;:::-;6306:7;6315:6;6283:8;:39::i;:::-;6340:4;6333:11;;6158:194;;;;:::o;16287:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;15272:51::-;;;:::o;5250:108::-;5311:7;5338:12;;5331:19;;5250:108;:::o;21674:157::-;1116:12;:10;:12::i;:::-;1105:23;;:7;:5;:7::i;:::-;:23;;;1097:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21781:9:::1;;;;;;;;;;;21753:38;;21770:9;21753:38;;;;;;;;;;;;21814:9;21802;;:21;;;;;;;;;;;;;;;;;;21674:157:::0;:::o;19611:124::-;1116:12;:10;:12::i;:::-;1105:23;;:7;:5;:7::i;:::-;:23;;;1097:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19718:8:::1;19708:6;:19;;;;:::i;:::-;19685:20;:42;;;;19611:124:::0;:::o;6360:529::-;6500:4;6517:36;6527:6;6535:9;6546:6;6517:9;:36::i;:::-;6566:24;6593:11;:19;6605:6;6593:19;;;;;;;;;;;;;;;:33;6613:12;:10;:12::i;:::-;6593:33;;;;;;;;;;;;;;;;6566:60;;6679:6;6659:16;:26;;6637:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;6789:57;6798:6;6806:12;:10;:12::i;:::-;6839:6;6820:16;:25;6789:8;:57::i;:::-;6877:4;6870:11;;;6360:529;;;;;:::o;15375:53::-;15421:6;15375:53;:::o;5092:93::-;5150:5;5175:2;5168:9;;5092:93;:::o;6897:290::-;7010:4;7027:130;7050:12;:10;:12::i;:::-;7077:7;7136:10;7099:11;:25;7111:12;:10;:12::i;:::-;7099:25;;;;;;;;;;;;;;;:34;7125:7;7099:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;7027:8;:130::i;:::-;7175:4;7168:11;;6897:290;;;;:::o;15330:38::-;;;:::o;15652:33::-;;;;;;;;;;;;;:::o;21839:126::-;21905:4;21929:19;:28;21949:7;21929:28;;;;;;;;;;;;;;;;;;;;;;;;;21922:35;;21839:126;;;:::o;20240:240::-;1116:12;:10;:12::i;:::-;1105:23;;:7;:5;:7::i;:::-;:23;;;1097:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20376:13:::1;20358:15;:31;;;;20412:7;20400:9;:19;;;;20463:9;;20445:15;;:27;;;;:::i;:::-;20430:12;:42;;;;20240:240:::0;;:::o;15965:33::-;;;;:::o;15692:31::-;;;;;;;;;;;;;:::o;5421:143::-;5511:7;5538:9;:18;5548:7;5538:18;;;;;;;;;;;;;;;;5531:25;;5421:143;;;:::o;1193:103::-;1116:12;:10;:12::i;:::-;1105:23;;:7;:5;:7::i;:::-;:23;;;1097:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1258:30:::1;1285:1;1258:18;:30::i;:::-;1193:103::o:0;18873:121::-;18925:4;1116:12;:10;:12::i;:::-;1105:23;;:7;:5;:7::i;:::-;:23;;;1097:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18959:5:::1;18942:14;;:22;;;;;;;;;;;;;;;;;;18982:4;18975:11;;18873:121:::0;:::o;19867:169::-;1116:12;:10;:12::i;:::-;1105:23;;:7;:5;:7::i;:::-;:23;;;1097:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20024:4:::1;19982:31;:39;20014:6;19982:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;19867:169:::0;;:::o;15467:30::-;;;;;;;;;;;;;:::o;15886:35::-;;;;:::o;885:87::-;931:7;958:6;;;;;;;;;;;951:13;;885:87;:::o;15504:24::-;;;;;;;;;;;;;:::o;16005:36::-;;;;:::o;20132:100::-;1116:12;:10;:12::i;:::-;1105:23;;:7;:5;:7::i;:::-;:23;;;1097:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20217:7:::1;20203:11;;:21;;;;;;;;;;;;;;;;;;20132:100:::0;:::o;4980:104::-;5036:13;5069:7;5062:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4980:104;:::o;20932:306::-;1116:12;:10;:12::i;:::-;1105:23;;:7;:5;:7::i;:::-;:23;;;1097:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21078:13:::1;21070:21;;:4;:21;;::::0;21048:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21189:41;21218:4;21224:5;21189:28;:41::i;:::-;20932:306:::0;;:::o;15928:28::-;;;;:::o;27845:209::-;1116:12;:10;:12::i;:::-;1105:23;;:7;:5;:7::i;:::-;:23;;;1097:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27973:7:::1;27938:6;:16;;;27963:4;27938:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;;27930:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;28010:6;:15;;;28026:10;28038:7;28010:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27845:209:::0;;:::o;16048:29::-;;;;:::o;7195:475::-;7313:4;7330:24;7357:11;:25;7369:12;:10;:12::i;:::-;7357:25;;;;;;;;;;;;;;;:34;7383:7;7357:34;;;;;;;;;;;;;;;;7330:61;;7444:15;7424:16;:35;;7402:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;7560:67;7569:12;:10;:12::i;:::-;7583:7;7611:15;7592:16;:34;7560:8;:67::i;:::-;7658:4;7651:11;;;7195:475;;;;:::o;5572:200::-;5683:4;5700:42;5710:12;:10;:12::i;:::-;5724:9;5735:6;5700:9;:42::i;:::-;5760:4;5753:11;;5572:200;;;;:::o;21442:224::-;1116:12;:10;:12::i;:::-;1105:23;;:7;:5;:7::i;:::-;:23;;;1097:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21595:15:::1;;;;;;;;;;;21552:59;;21575:18;21552:59;;;;;;;;;;;;21640:18;21622:15;;:36;;;;;;;;;;;;;;;;;;21442:224:::0;:::o;16506:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;15730:33::-;;;;;;;;;;;;;:::o;15772:25::-;;;;:::o;20742:182::-;1116:12;:10;:12::i;:::-;1105:23;;:7;:5;:7::i;:::-;:23;;;1097:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20858:8:::1;20827:19;:28;20847:7;20827:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20898:7;20882:34;;;20907:8;20882:34;;;;;;:::i;:::-;;;;;;;;20742:182:::0;;:::o;19743:116::-;1116:12;:10;:12::i;:::-;1105:23;;:7;:5;:7::i;:::-;:23;;;1097:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19842:8:::1;19832:6;:19;;;;:::i;:::-;19820:9;:31;;;;19743:116:::0;:::o;15804:34::-;;;;:::o;15537:35::-;;;;:::o;19416:187::-;19513:4;1116:12;:10;:12::i;:::-;1105:23;;:7;:5;:7::i;:::-;:23;;;1097:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19564:8:::1;19551:9;:22;;;;:::i;:::-;19530:18;:43;;;;19591:4;19584:11;;19416:187:::0;;;:::o;15847:32::-;;;;:::o;5835:176::-;5949:7;5976:11;:18;5988:5;5976:18;;;;;;;;;;;;;;;:27;5995:7;5976:27;;;;;;;;;;;;;;;;5969:34;;5835:176;;;;:::o;15579:33::-;;;;:::o;27654:183::-;1116:12;:10;:12::i;:::-;1105:23;;:7;:5;:7::i;:::-;:23;;;1097:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27755:7:::1;27730:21;:32;;27722:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;27800:10;27792:28;;:37;27821:7;27792:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;27654:183:::0;:::o;1451:238::-;1116:12;:10;:12::i;:::-;1105:23;;:7;:5;:7::i;:::-;:23;;;1097:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1574:1:::1;1554:22;;:8;:22;;::::0;1532:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1653:28;1672:8;1653:18;:28::i;:::-;1451:238:::0;:::o;15619:24::-;;;;:::o;243:98::-;296:7;323:10;316:17;;243:98;:::o;9462:380::-;9615:1;9598:19;;:5;:19;;;9590:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9696:1;9677:21;;:7;:21;;;9669:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9780:6;9750:11;:18;9762:5;9750:18;;;;;;;;;;;;;;;:27;9769:7;9750:27;;;;;;;;;;;;;;;:36;;;;9818:7;9802:32;;9811:5;9802:32;;;9827:6;9802:32;;;;;;:::i;:::-;;;;;;;;9462:380;;;:::o;21973:3750::-;22121:1;22105:18;;:4;:18;;;22097:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22198:1;22184:16;;:2;:16;;;22176:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22267:1;22257:6;:11;22253:93;;22285:28;22301:4;22307:2;22311:1;22285:15;:28::i;:::-;22328:7;;22253:93;22362:14;;;;;;;;;;;22358:1692;;;22423:7;:5;:7::i;:::-;22415:15;;:4;:15;;;;:49;;;;;22457:7;:5;:7::i;:::-;22451:13;;:2;:13;;;;22415:49;:86;;;;;22499:1;22485:16;;:2;:16;;;;22415:86;:128;;;;;22536:6;22522:21;;:2;:21;;;;22415:128;:158;;;;;22565:8;;;;;;;;;;;22564:9;22415:158;22393:1646;;;22613:13;;;;;;;;;;;22608:223;;22685:19;:25;22705:4;22685:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22714:19;:23;22734:2;22714:23;;;;;;;;;;;;;;;;;;;;;;;;;22685:52;22651:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;22608:223;22903:25;:31;22929:4;22903:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;22960:31;:35;22992:2;22960:35;;;;;;;;;;;;;;;;;;;;;;;;;22959:36;22903:92;22877:1147;;;23082:20;;23072:6;:30;;23038:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;23290:9;;23273:13;23283:2;23273:9;:13::i;:::-;23264:6;:22;;;;:::i;:::-;:35;;23230:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;22877:1147;;;23468:25;:29;23494:2;23468:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;23523:31;:37;23555:4;23523:37;;;;;;;;;;;;;;;;;;;;;;;;;23522:38;23468:92;23442:582;;;23647:20;;23637:6;:30;;23603:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;23442:582;;;23804:31;:35;23836:2;23804:35;;;;;;;;;;;;;;;;;;;;;;;;;23799:225;;23924:9;;23907:13;23917:2;23907:9;:13::i;:::-;23898:6;:22;;;;:::i;:::-;:35;;23864:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;23799:225;23442:582;22877:1147;22393:1646;22358:1692;24062:28;24093:24;24111:4;24093:9;:24::i;:::-;24062:55;;24130:12;24169:18;;24145:20;:42;;24130:57;;24218:7;:35;;;;;24242:11;;;;;;;;;;;24218:35;:61;;;;;24271:8;;;;;;;;;;;24270:9;24218:61;:110;;;;;24297:25;:31;24323:4;24297:31;;;;;;;;;;;;;;;;;;;;;;;;;24296:32;24218:110;:153;;;;;24346:19;:25;24366:4;24346:25;;;;;;;;;;;;;;;;;;;;;;;;;24345:26;24218:153;:194;;;;;24389:19;:23;24409:2;24389:23;;;;;;;;;;;;;;;;;;;;;;;;;24388:24;24218:194;24200:326;;;24450:4;24439:8;;:15;;;;;;;;;;;;;;;;;;24471:10;:8;:10::i;:::-;24509:5;24498:8;;:16;;;;;;;;;;;;;;;;;;24200:326;24538:12;24554:8;;;;;;;;;;;24553:9;24538:24;;24664:19;:25;24684:4;24664:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;24693:19;:23;24713:2;24693:23;;;;;;;;;;;;;;;;;;;;;;;;;24664:52;24660:100;;;24743:5;24733:15;;24660:100;24772:12;24877:7;24873:797;;;24929:25;:29;24955:2;24929:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;24978:1;24962:13;;:17;24929:50;24925:596;;;25034:3;25017:13;;25008:6;:22;;;;:::i;:::-;25007:30;;;;:::i;:::-;25000:37;;25106:13;;25086:16;;25079:4;:23;;;;:::i;:::-;25078:41;;;;:::i;:::-;25056:18;;:63;;;;;;;:::i;:::-;;;;;;;;25175:13;;25161:10;;25154:4;:17;;;;:::i;:::-;25153:35;;;;:::i;:::-;25138:11;;:50;;;;;;;:::i;:::-;;;;;;;;24925:596;;;25250:25;:31;25276:4;25250:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;25300:1;25285:12;;:16;25250:51;25246:275;;;25355:3;25339:12;;25330:6;:21;;;;:::i;:::-;25329:29;;;;:::i;:::-;25322:36;;25426:12;;25407:15;;25400:4;:22;;;;:::i;:::-;25399:39;;;;:::i;:::-;25377:18;;:61;;;;;;;:::i;:::-;;;;;;;;25493:12;;25480:9;;25473:4;:16;;;;:::i;:::-;25472:33;;;;:::i;:::-;25457:11;;:48;;;;;;;:::i;:::-;;;;;;;;25246:275;24925:596;25548:1;25541:4;:8;25537:91;;;25570:42;25586:4;25600;25607;25570:15;:42::i;:::-;25537:91;25654:4;25644:14;;;;;:::i;:::-;;;24873:797;25682:33;25698:4;25704:2;25708:6;25682:15;:33::i;:::-;22086:3637;;;;21973:3750;;;;:::o;1849:191::-;1923:16;1942:6;;;;;;;;;;;1923:25;;1968:8;1959:6;;:17;;;;;;;;;;;;;;;;;;2023:8;1992:40;;2013:8;1992:40;;;;;;;;;;;;1912:128;1849:191;:::o;21246:188::-;21363:5;21329:25;:31;21355:4;21329:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21420:5;21386:40;;21414:4;21386:40;;;;;;;;;;;;21246:188;;:::o;7678:770::-;7836:1;7818:20;;:6;:20;;;7810:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7920:1;7899:23;;:9;:23;;;7891:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7975:47;7996:6;8004:9;8015:6;7975:20;:47::i;:::-;8035:21;8059:9;:17;8069:6;8059:17;;;;;;;;;;;;;;;;8035:41;;8126:6;8109:13;:23;;8087:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;8270:6;8254:13;:22;8234:9;:17;8244:6;8234:17;;;;;;;;;;;;;;;:42;;;;8322:6;8298:9;:20;8308:9;8298:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8363:9;8346:35;;8355:6;8346:35;;;8374:6;8346:35;;;;;;:::i;:::-;;;;;;;;8394:46;8414:6;8422:9;8433:6;8394:19;:46::i;:::-;7799:649;7678:770;;;:::o;26853:793::-;26892:23;26918:24;26936:4;26918:9;:24::i;:::-;26892:50;;26953:25;27002:11;;26981:18;;:32;;;;:::i;:::-;26953:60;;27024:12;27071:18;;27053:15;:36;27049:105;;;27124:18;;27106:36;;27049:105;27166:26;27195:15;27166:44;;27223:36;27240:18;27223:16;:36::i;:::-;27272:18;27294:21;27272:44;;27327:17;27376;27361:11;;27348:10;:24;;;;:::i;:::-;27347:46;;;;:::i;:::-;27327:66;;27427:1;27406:18;:22;;;;27453:1;27439:11;:15;;;;27489:9;;;;;;;;;;;27481:23;;27512:9;27481:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27467:59;;;;;27559:15;;;;;;;;;;;27551:29;;27602:21;27551:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27537:101;;;;;26881:765;;;;;;26853:793::o;9850:125::-;;;;:::o;9983:124::-;;;;:::o;25731:589::-;25857:21;25895:1;25881:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25857:40;;25926:4;25908;25913:1;25908:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25952:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25942:4;25947:1;25942:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;25987:62;26004:4;26019:15;26037:11;25987:8;:62::i;:::-;26088:15;:66;;;26169:11;26195:1;26239:4;26266;26286:15;26088:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25786:534;25731:589;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:329::-;3985:6;4034:2;4022:9;4013:7;4009:23;4005:32;4002:119;;;4040:79;;:::i;:::-;4002:119;4160:1;4185:53;4230:7;4221:6;4210:9;4206:22;4185:53;:::i;:::-;4175:63;;4131:117;3926:329;;;;:::o;4261:60::-;4289:3;4310:5;4303:12;;4261:60;;;:::o;4327:142::-;4377:9;4410:53;4428:34;4437:24;4455:5;4437:24;:::i;:::-;4428:34;:::i;:::-;4410:53;:::i;:::-;4397:66;;4327:142;;;:::o;4475:126::-;4525:9;4558:37;4589:5;4558:37;:::i;:::-;4545:50;;4475:126;;;:::o;4607:153::-;4684:9;4717:37;4748:5;4717:37;:::i;:::-;4704:50;;4607:153;;;:::o;4766:185::-;4880:64;4938:5;4880:64;:::i;:::-;4875:3;4868:77;4766:185;;:::o;4957:276::-;5077:4;5115:2;5104:9;5100:18;5092:26;;5128:98;5223:1;5212:9;5208:17;5199:6;5128:98;:::i;:::-;4957:276;;;;:::o;5239:118::-;5326:24;5344:5;5326:24;:::i;:::-;5321:3;5314:37;5239:118;;:::o;5363:222::-;5456:4;5494:2;5483:9;5479:18;5471:26;;5507:71;5575:1;5564:9;5560:17;5551:6;5507:71;:::i;:::-;5363:222;;;;:::o;5591:329::-;5650:6;5699:2;5687:9;5678:7;5674:23;5670:32;5667:119;;;5705:79;;:::i;:::-;5667:119;5825:1;5850:53;5895:7;5886:6;5875:9;5871:22;5850:53;:::i;:::-;5840:63;;5796:117;5591:329;;;;:::o;5926:619::-;6003:6;6011;6019;6068:2;6056:9;6047:7;6043:23;6039:32;6036:119;;;6074:79;;:::i;:::-;6036:119;6194:1;6219:53;6264:7;6255:6;6244:9;6240:22;6219:53;:::i;:::-;6209:63;;6165:117;6321:2;6347:53;6392:7;6383:6;6372:9;6368:22;6347:53;:::i;:::-;6337:63;;6292:118;6449:2;6475:53;6520:7;6511:6;6500:9;6496:22;6475:53;:::i;:::-;6465:63;;6420:118;5926:619;;;;;:::o;6551:118::-;6638:24;6656:5;6638:24;:::i;:::-;6633:3;6626:37;6551:118;;:::o;6675:222::-;6768:4;6806:2;6795:9;6791:18;6783:26;;6819:71;6887:1;6876:9;6872:17;6863:6;6819:71;:::i;:::-;6675:222;;;;:::o;6903:86::-;6938:7;6978:4;6971:5;6967:16;6956:27;;6903:86;;;:::o;6995:112::-;7078:22;7094:5;7078:22;:::i;:::-;7073:3;7066:35;6995:112;;:::o;7113:214::-;7202:4;7240:2;7229:9;7225:18;7217:26;;7253:67;7317:1;7306:9;7302:17;7293:6;7253:67;:::i;:::-;7113:214;;;;:::o;7333:116::-;7403:21;7418:5;7403:21;:::i;:::-;7396:5;7393:32;7383:60;;7439:1;7436;7429:12;7383:60;7333:116;:::o;7455:133::-;7498:5;7536:6;7523:20;7514:29;;7552:30;7576:5;7552:30;:::i;:::-;7455:133;;;;:::o;7594:468::-;7659:6;7667;7716:2;7704:9;7695:7;7691:23;7687:32;7684:119;;;7722:79;;:::i;:::-;7684:119;7842:1;7867:53;7912:7;7903:6;7892:9;7888:22;7867:53;:::i;:::-;7857:63;;7813:117;7969:2;7995:50;8037:7;8028:6;8017:9;8013:22;7995:50;:::i;:::-;7985:60;;7940:115;7594:468;;;;;:::o;8068:323::-;8124:6;8173:2;8161:9;8152:7;8148:23;8144:32;8141:119;;;8179:79;;:::i;:::-;8141:119;8299:1;8324:50;8366:7;8357:6;8346:9;8342:22;8324:50;:::i;:::-;8314:60;;8270:114;8068:323;;;;:::o;8397:110::-;8448:7;8477:24;8495:5;8477:24;:::i;:::-;8466:35;;8397:110;;;:::o;8513:150::-;8600:38;8632:5;8600:38;:::i;:::-;8593:5;8590:49;8580:77;;8653:1;8650;8643:12;8580:77;8513:150;:::o;8669:167::-;8729:5;8767:6;8754:20;8745:29;;8783:47;8824:5;8783:47;:::i;:::-;8669:167;;;;:::o;8842:502::-;8924:6;8932;8981:2;8969:9;8960:7;8956:23;8952:32;8949:119;;;8987:79;;:::i;:::-;8949:119;9107:1;9132:67;9191:7;9182:6;9171:9;9167:22;9132:67;:::i;:::-;9122:77;;9078:131;9248:2;9274:53;9319:7;9310:6;9299:9;9295:22;9274:53;:::i;:::-;9264:63;;9219:118;8842:502;;;;;:::o;9350:474::-;9418:6;9426;9475:2;9463:9;9454:7;9450:23;9446:32;9443:119;;;9481:79;;:::i;:::-;9443:119;9601:1;9626:53;9671:7;9662:6;9651:9;9647:22;9626:53;:::i;:::-;9616:63;;9572:117;9728:2;9754:53;9799:7;9790:6;9779:9;9775:22;9754:53;:::i;:::-;9744:63;;9699:118;9350:474;;;;;:::o;9830:182::-;9970:34;9966:1;9958:6;9954:14;9947:58;9830:182;:::o;10018:366::-;10160:3;10181:67;10245:2;10240:3;10181:67;:::i;:::-;10174:74;;10257:93;10346:3;10257:93;:::i;:::-;10375:2;10370:3;10366:12;10359:19;;10018:366;;;:::o;10390:419::-;10556:4;10594:2;10583:9;10579:18;10571:26;;10643:9;10637:4;10633:20;10629:1;10618:9;10614:17;10607:47;10671:131;10797:4;10671:131;:::i;:::-;10663:139;;10390:419;;;:::o;10815:170::-;10955:22;10951:1;10943:6;10939:14;10932:46;10815:170;:::o;10991:366::-;11133:3;11154:67;11218:2;11213:3;11154:67;:::i;:::-;11147:74;;11230:93;11319:3;11230:93;:::i;:::-;11348:2;11343:3;11339:12;11332:19;;10991:366;;;:::o;11363:419::-;11529:4;11567:2;11556:9;11552:18;11544:26;;11616:9;11610:4;11606:20;11602:1;11591:9;11587:17;11580:47;11644:131;11770:4;11644:131;:::i;:::-;11636:139;;11363:419;;;:::o;11788:180::-;11836:77;11833:1;11826:88;11933:4;11930:1;11923:15;11957:4;11954:1;11947:15;11974:191;12014:3;12033:20;12051:1;12033:20;:::i;:::-;12028:25;;12067:20;12085:1;12067:20;:::i;:::-;12062:25;;12110:1;12107;12103:9;12096:16;;12131:3;12128:1;12125:10;12122:36;;;12138:18;;:::i;:::-;12122:36;11974:191;;;;:::o;12171:180::-;12219:77;12216:1;12209:88;12316:4;12313:1;12306:15;12340:4;12337:1;12330:15;12357:320;12401:6;12438:1;12432:4;12428:12;12418:22;;12485:1;12479:4;12475:12;12506:18;12496:81;;12562:4;12554:6;12550:17;12540:27;;12496:81;12624:2;12616:6;12613:14;12593:18;12590:38;12587:84;;12643:18;;:::i;:::-;12587:84;12408:269;12357:320;;;:::o;12683:410::-;12723:7;12746:20;12764:1;12746:20;:::i;:::-;12741:25;;12780:20;12798:1;12780:20;:::i;:::-;12775:25;;12835:1;12832;12828:9;12857:30;12875:11;12857:30;:::i;:::-;12846:41;;13036:1;13027:7;13023:15;13020:1;13017:22;12997:1;12990:9;12970:83;12947:139;;13066:18;;:::i;:::-;12947:139;12731:362;12683:410;;;;:::o;13099:227::-;13239:34;13235:1;13227:6;13223:14;13216:58;13308:10;13303:2;13295:6;13291:15;13284:35;13099:227;:::o;13332:366::-;13474:3;13495:67;13559:2;13554:3;13495:67;:::i;:::-;13488:74;;13571:93;13660:3;13571:93;:::i;:::-;13689:2;13684:3;13680:12;13673:19;;13332:366;;;:::o;13704:419::-;13870:4;13908:2;13897:9;13893:18;13885:26;;13957:9;13951:4;13947:20;13943:1;13932:9;13928:17;13921:47;13985:131;14111:4;13985:131;:::i;:::-;13977:139;;13704:419;;;:::o;14129:244::-;14269:34;14265:1;14257:6;14253:14;14246:58;14338:27;14333:2;14325:6;14321:15;14314:52;14129:244;:::o;14379:366::-;14521:3;14542:67;14606:2;14601:3;14542:67;:::i;:::-;14535:74;;14618:93;14707:3;14618:93;:::i;:::-;14736:2;14731:3;14727:12;14720:19;;14379:366;;;:::o;14751:419::-;14917:4;14955:2;14944:9;14940:18;14932:26;;15004:9;14998:4;14994:20;14990:1;14979:9;14975:17;14968:47;15032:131;15158:4;15032:131;:::i;:::-;15024:139;;14751:419;;;:::o;15176:143::-;15233:5;15264:6;15258:13;15249:22;;15280:33;15307:5;15280:33;:::i;:::-;15176:143;;;;:::o;15325:351::-;15395:6;15444:2;15432:9;15423:7;15419:23;15415:32;15412:119;;;15450:79;;:::i;:::-;15412:119;15570:1;15595:64;15651:7;15642:6;15631:9;15627:22;15595:64;:::i;:::-;15585:74;;15541:128;15325:351;;;;:::o;15682:164::-;15822:16;15818:1;15810:6;15806:14;15799:40;15682:164;:::o;15852:366::-;15994:3;16015:67;16079:2;16074:3;16015:67;:::i;:::-;16008:74;;16091:93;16180:3;16091:93;:::i;:::-;16209:2;16204:3;16200:12;16193:19;;15852:366;;;:::o;16224:419::-;16390:4;16428:2;16417:9;16413:18;16405:26;;16477:9;16471:4;16467:20;16463:1;16452:9;16448:17;16441:47;16505:131;16631:4;16505:131;:::i;:::-;16497:139;;16224:419;;;:::o;16649:332::-;16770:4;16808:2;16797:9;16793:18;16785:26;;16821:71;16889:1;16878:9;16874:17;16865:6;16821:71;:::i;:::-;16902:72;16970:2;16959:9;16955:18;16946:6;16902:72;:::i;:::-;16649:332;;;;;:::o;16987:137::-;17041:5;17072:6;17066:13;17057:22;;17088:30;17112:5;17088:30;:::i;:::-;16987:137;;;;:::o;17130:345::-;17197:6;17246:2;17234:9;17225:7;17221:23;17217:32;17214:119;;;17252:79;;:::i;:::-;17214:119;17372:1;17397:61;17450:7;17441:6;17430:9;17426:22;17397:61;:::i;:::-;17387:71;;17343:125;17130:345;;;;:::o;17481:224::-;17621:34;17617:1;17609:6;17605:14;17598:58;17690:7;17685:2;17677:6;17673:15;17666:32;17481:224;:::o;17711:366::-;17853:3;17874:67;17938:2;17933:3;17874:67;:::i;:::-;17867:74;;17950:93;18039:3;17950:93;:::i;:::-;18068:2;18063:3;18059:12;18052:19;;17711:366;;;:::o;18083:419::-;18249:4;18287:2;18276:9;18272:18;18264:26;;18336:9;18330:4;18326:20;18322:1;18311:9;18307:17;18300:47;18364:131;18490:4;18364:131;:::i;:::-;18356:139;;18083:419;;;:::o;18508:225::-;18648:34;18644:1;18636:6;18632:14;18625:58;18717:8;18712:2;18704:6;18700:15;18693:33;18508:225;:::o;18739:366::-;18881:3;18902:67;18966:2;18961:3;18902:67;:::i;:::-;18895:74;;18978:93;19067:3;18978:93;:::i;:::-;19096:2;19091:3;19087:12;19080:19;;18739:366;;;:::o;19111:419::-;19277:4;19315:2;19304:9;19300:18;19292:26;;19364:9;19358:4;19354:20;19350:1;19339:9;19335:17;19328:47;19392:131;19518:4;19392:131;:::i;:::-;19384:139;;19111:419;;;:::o;19536:223::-;19676:34;19672:1;19664:6;19660:14;19653:58;19745:6;19740:2;19732:6;19728:15;19721:31;19536:223;:::o;19765:366::-;19907:3;19928:67;19992:2;19987:3;19928:67;:::i;:::-;19921:74;;20004:93;20093:3;20004:93;:::i;:::-;20122:2;20117:3;20113:12;20106:19;;19765:366;;;:::o;20137:419::-;20303:4;20341:2;20330:9;20326:18;20318:26;;20390:9;20384:4;20380:20;20376:1;20365:9;20361:17;20354:47;20418:131;20544:4;20418:131;:::i;:::-;20410:139;;20137:419;;;:::o;20562:221::-;20702:34;20698:1;20690:6;20686:14;20679:58;20771:4;20766:2;20758:6;20754:15;20747:29;20562:221;:::o;20789:366::-;20931:3;20952:67;21016:2;21011:3;20952:67;:::i;:::-;20945:74;;21028:93;21117:3;21028:93;:::i;:::-;21146:2;21141:3;21137:12;21130:19;;20789:366;;;:::o;21161:419::-;21327:4;21365:2;21354:9;21350:18;21342:26;;21414:9;21408:4;21404:20;21400:1;21389:9;21385:17;21378:47;21442:131;21568:4;21442:131;:::i;:::-;21434:139;;21161:419;;;:::o;21586:224::-;21726:34;21722:1;21714:6;21710:14;21703:58;21795:7;21790:2;21782:6;21778:15;21771:32;21586:224;:::o;21816:366::-;21958:3;21979:67;22043:2;22038:3;21979:67;:::i;:::-;21972:74;;22055:93;22144:3;22055:93;:::i;:::-;22173:2;22168:3;22164:12;22157:19;;21816:366;;;:::o;22188:419::-;22354:4;22392:2;22381:9;22377:18;22369:26;;22441:9;22435:4;22431:20;22427:1;22416:9;22412:17;22405:47;22469:131;22595:4;22469:131;:::i;:::-;22461:139;;22188:419;;;:::o;22613:222::-;22753:34;22749:1;22741:6;22737:14;22730:58;22822:5;22817:2;22809:6;22805:15;22798:30;22613:222;:::o;22841:366::-;22983:3;23004:67;23068:2;23063:3;23004:67;:::i;:::-;22997:74;;23080:93;23169:3;23080:93;:::i;:::-;23198:2;23193:3;23189:12;23182:19;;22841:366;;;:::o;23213:419::-;23379:4;23417:2;23406:9;23402:18;23394:26;;23466:9;23460:4;23456:20;23452:1;23441:9;23437:17;23430:47;23494:131;23620:4;23494:131;:::i;:::-;23486:139;;23213:419;;;:::o;23638:172::-;23778:24;23774:1;23766:6;23762:14;23755:48;23638:172;:::o;23816:366::-;23958:3;23979:67;24043:2;24038:3;23979:67;:::i;:::-;23972:74;;24055:93;24144:3;24055:93;:::i;:::-;24173:2;24168:3;24164:12;24157:19;;23816:366;;;:::o;24188:419::-;24354:4;24392:2;24381:9;24377:18;24369:26;;24441:9;24435:4;24431:20;24427:1;24416:9;24412:17;24405:47;24469:131;24595:4;24469:131;:::i;:::-;24461:139;;24188:419;;;:::o;24613:240::-;24753:34;24749:1;24741:6;24737:14;24730:58;24822:23;24817:2;24809:6;24805:15;24798:48;24613:240;:::o;24859:366::-;25001:3;25022:67;25086:2;25081:3;25022:67;:::i;:::-;25015:74;;25098:93;25187:3;25098:93;:::i;:::-;25216:2;25211:3;25207:12;25200:19;;24859:366;;;:::o;25231:419::-;25397:4;25435:2;25424:9;25420:18;25412:26;;25484:9;25478:4;25474:20;25470:1;25459:9;25455:17;25448:47;25512:131;25638:4;25512:131;:::i;:::-;25504:139;;25231:419;;;:::o;25656:169::-;25796:21;25792:1;25784:6;25780:14;25773:45;25656:169;:::o;25831:366::-;25973:3;25994:67;26058:2;26053:3;25994:67;:::i;:::-;25987:74;;26070:93;26159:3;26070:93;:::i;:::-;26188:2;26183:3;26179:12;26172:19;;25831:366;;;:::o;26203:419::-;26369:4;26407:2;26396:9;26392:18;26384:26;;26456:9;26450:4;26446:20;26442:1;26431:9;26427:17;26420:47;26484:131;26610:4;26484:131;:::i;:::-;26476:139;;26203:419;;;:::o;26628:241::-;26768:34;26764:1;26756:6;26752:14;26745:58;26837:24;26832:2;26824:6;26820:15;26813:49;26628:241;:::o;26875:366::-;27017:3;27038:67;27102:2;27097:3;27038:67;:::i;:::-;27031:74;;27114:93;27203:3;27114:93;:::i;:::-;27232:2;27227:3;27223:12;27216:19;;26875:366;;;:::o;27247:419::-;27413:4;27451:2;27440:9;27436:18;27428:26;;27500:9;27494:4;27490:20;27486:1;27475:9;27471:17;27464:47;27528:131;27654:4;27528:131;:::i;:::-;27520:139;;27247:419;;;:::o;27672:180::-;27720:77;27717:1;27710:88;27817:4;27814:1;27807:15;27841:4;27838:1;27831:15;27858:185;27898:1;27915:20;27933:1;27915:20;:::i;:::-;27910:25;;27949:20;27967:1;27949:20;:::i;:::-;27944:25;;27988:1;27978:35;;27993:18;;:::i;:::-;27978:35;28035:1;28032;28028:9;28023:14;;27858:185;;;;:::o;28049:194::-;28089:4;28109:20;28127:1;28109:20;:::i;:::-;28104:25;;28143:20;28161:1;28143:20;:::i;:::-;28138:25;;28187:1;28184;28180:9;28172:17;;28211:1;28205:4;28202:11;28199:37;;;28216:18;;:::i;:::-;28199:37;28049:194;;;;:::o;28249:225::-;28389:34;28385:1;28377:6;28373:14;28366:58;28458:8;28453:2;28445:6;28441:15;28434:33;28249:225;:::o;28480:366::-;28622:3;28643:67;28707:2;28702:3;28643:67;:::i;:::-;28636:74;;28719:93;28808:3;28719:93;:::i;:::-;28837:2;28832:3;28828:12;28821:19;;28480:366;;;:::o;28852:419::-;29018:4;29056:2;29045:9;29041:18;29033:26;;29105:9;29099:4;29095:20;29091:1;29080:9;29076:17;29069:47;29133:131;29259:4;29133:131;:::i;:::-;29125:139;;28852:419;;;:::o;29277:147::-;29378:11;29415:3;29400:18;;29277:147;;;;:::o;29430:114::-;;:::o;29550:398::-;29709:3;29730:83;29811:1;29806:3;29730:83;:::i;:::-;29723:90;;29822:93;29911:3;29822:93;:::i;:::-;29940:1;29935:3;29931:11;29924:18;;29550:398;;;:::o;29954:379::-;30138:3;30160:147;30303:3;30160:147;:::i;:::-;30153:154;;30324:3;30317:10;;29954:379;;;:::o;30339:180::-;30387:77;30384:1;30377:88;30484:4;30481:1;30474:15;30508:4;30505:1;30498:15;30525:180;30573:77;30570:1;30563:88;30670:4;30667:1;30660:15;30694:4;30691:1;30684:15;30711:143;30768:5;30799:6;30793:13;30784:22;;30815:33;30842:5;30815:33;:::i;:::-;30711:143;;;;:::o;30860:351::-;30930:6;30979:2;30967:9;30958:7;30954:23;30950:32;30947:119;;;30985:79;;:::i;:::-;30947:119;31105:1;31130:64;31186:7;31177:6;31166:9;31162:22;31130:64;:::i;:::-;31120:74;;31076:128;30860:351;;;;:::o;31217:85::-;31262:7;31291:5;31280:16;;31217:85;;;:::o;31308:158::-;31366:9;31399:61;31417:42;31426:32;31452:5;31426:32;:::i;:::-;31417:42;:::i;:::-;31399:61;:::i;:::-;31386:74;;31308:158;;;:::o;31472:147::-;31567:45;31606:5;31567:45;:::i;:::-;31562:3;31555:58;31472:147;;:::o;31625:114::-;31692:6;31726:5;31720:12;31710:22;;31625:114;;;:::o;31745:184::-;31844:11;31878:6;31873:3;31866:19;31918:4;31913:3;31909:14;31894:29;;31745:184;;;;:::o;31935:132::-;32002:4;32025:3;32017:11;;32055:4;32050:3;32046:14;32038:22;;31935:132;;;:::o;32073:108::-;32150:24;32168:5;32150:24;:::i;:::-;32145:3;32138:37;32073:108;;:::o;32187:179::-;32256:10;32277:46;32319:3;32311:6;32277:46;:::i;:::-;32355:4;32350:3;32346:14;32332:28;;32187:179;;;;:::o;32372:113::-;32442:4;32474;32469:3;32465:14;32457:22;;32372:113;;;:::o;32521:732::-;32640:3;32669:54;32717:5;32669:54;:::i;:::-;32739:86;32818:6;32813:3;32739:86;:::i;:::-;32732:93;;32849:56;32899:5;32849:56;:::i;:::-;32928:7;32959:1;32944:284;32969:6;32966:1;32963:13;32944:284;;;33045:6;33039:13;33072:63;33131:3;33116:13;33072:63;:::i;:::-;33065:70;;33158:60;33211:6;33158:60;:::i;:::-;33148:70;;33004:224;32991:1;32988;32984:9;32979:14;;32944:284;;;32948:14;33244:3;33237:10;;32645:608;;;32521:732;;;;:::o;33259:831::-;33522:4;33560:3;33549:9;33545:19;33537:27;;33574:71;33642:1;33631:9;33627:17;33618:6;33574:71;:::i;:::-;33655:80;33731:2;33720:9;33716:18;33707:6;33655:80;:::i;:::-;33782:9;33776:4;33772:20;33767:2;33756:9;33752:18;33745:48;33810:108;33913:4;33904:6;33810:108;:::i;:::-;33802:116;;33928:72;33996:2;33985:9;33981:18;33972:6;33928:72;:::i;:::-;34010:73;34078:3;34067:9;34063:19;34054:6;34010:73;:::i;:::-;33259:831;;;;;;;;:::o
Swarm Source
ipfs://23e51d0f6499542417cf53b473b51b4e1458f12e419d2ec87889a42ea6c7a551
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.