ERC-20
Overview
Max Total Supply
0 HPT-V1
Holders
0
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x930b5c97...045880A69 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
HotPotFund
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-01-27 */ pragma solidity >=0.5.0; interface IERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); } interface IUniswapV2Factory { function getPair(address tokenA, address tokenB) external view returns (address pair); } interface IUniswapV2Router { function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); } interface IUniswapV2Pair { function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function token0() external view returns (address); function token1() external view returns (address); function approve(address spender, uint value) external returns (bool); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); } interface IStakingRewards { // Views function lastTimeRewardApplicable() external view returns (uint256); function rewardPerToken() external view returns (uint256); function earned(address account) external view returns (uint256); function getRewardForDuration() external view returns (uint256); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); // Mutative function stake(uint256 amount) external; function withdraw(uint256 amount) external; function getReward() external; function exit() external; } interface ICurve { function exchange(int128 i, int128 j, uint256 dx, uint256 min_dy) external; function coins(uint256) external view returns (address coin); } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: division by zero"); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, "SafeMath: modulo by zero"); return a % b; } /** * @dev Returns the largest of two numbers. */ function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } /** * @dev Returns the smallest of two numbers. */ function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } /** * @dev Returns the average of two numbers. The result is rounded towards * zero. */ function average(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b) / 2 can overflow, so we distribute return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2); } } /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using SafeMath for uint256; function safeTransfer(IERC20 token, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } function safeApprove(IERC20 token, address spender, uint256 value) internal { callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. // A Solidity high level call has two parts: // 1. The call itself is made, and success asserted // 2. The return value is decoded, which in turn checks the size of the returned data. // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } contract HotPotFundERC20 { using SafeMath for uint; string public constant name = 'Hotpot V1'; string public constant symbol = 'HPT-V1'; uint8 public constant decimals = 18; uint public totalSupply; mapping(address => uint) public balanceOf; mapping(address => mapping(address => uint)) public allowance; event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); constructor() public { } function _mint(address to, uint value) internal { require(to != address(0), "ERC20: mint to the zero address"); totalSupply = totalSupply.add(value); balanceOf[to] = balanceOf[to].add(value); emit Transfer(address(0), to, value); } function _burn(address from, uint value) internal { require(from != address(0), "ERC20: burn from the zero address"); balanceOf[from] = balanceOf[from].sub(value); totalSupply = totalSupply.sub(value); emit Transfer(from, address(0), value); } function _approve(address owner, address spender, uint value) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); allowance[owner][spender] = value; emit Approval(owner, spender, value); } function _transfer(address from, address to, uint value) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); balanceOf[from] = balanceOf[from].sub(value); balanceOf[to] = balanceOf[to].add(value); emit Transfer(from, to, value); } function approve(address spender, uint value) external returns (bool) { _approve(msg.sender, spender, value); return true; } function transfer(address to, uint value) external returns (bool) { _transfer(msg.sender, to, value); return true; } function transferFrom(address from, address to, uint value) external returns (bool) { allowance[from][msg.sender] = allowance[from][msg.sender].sub(value); _transfer(from, to, value); return true; } } contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor () internal { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } contract HotPotFund is ReentrancyGuard, HotPotFundERC20 { using SafeMath for uint; using SafeERC20 for IERC20; address constant UNISWAP_FACTORY = 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f; address constant UNISWAP_V2_ROUTER = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address constant UNI = 0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984; uint constant DIVISOR = 100; uint constant FEE = 20; address public token; address public controller; uint public totalInvestment; mapping (address => uint) public investmentOf; // UNI mining rewards uint public totalDebts; mapping(address => uint256) public debtOf; // UNI mining pool pair->mining pool mapping(address => address) public uniPool; address[] public pairs; //Curve swap pools mapping (address => address) public curvePool; mapping (address => int128) CURVE_N_COINS; modifier onlyController() { require(msg.sender == controller, 'Only called by Controller.'); _; } event Deposit(address indexed owner, uint amount, uint share); event Withdraw(address indexed owner, uint amount, uint share); constructor (address _token, address _controller) public { //approve for add liquidity and swap. 2**256-1 never used up. IERC20(_token).safeApprove(UNISWAP_V2_ROUTER, 2**256-1); token = _token; controller = _controller; } function deposit(uint amount) public nonReentrant returns(uint share) { require(amount > 0, 'Are you kidding me?'); uint _total_assets = totalAssets(); IERC20(token).safeTransferFrom(msg.sender, address(this), amount); if(totalSupply == 0){ share = amount; } else{ share = amount.mul(totalSupply).div(_total_assets); // user uni debt uint debt = share.mul(totalDebts.add(totalUNIRewards())).div(totalSupply); if(debt > 0){ debtOf[msg.sender] = debtOf[msg.sender].add(debt); totalDebts = totalDebts.add(debt); } } investmentOf[msg.sender] = investmentOf[msg.sender].add(amount); totalInvestment = totalInvestment.add(amount); _mint(msg.sender, share); emit Deposit(msg.sender, amount, share); } function invest(uint amount, uint[] calldata proportions) external onlyController { uint len = pairs.length; require(len>0, 'Pairs is empty.'); address token0 = token; require(amount <= IERC20(token0).balanceOf(address(this)), "Not enough balance."); require(proportions.length == pairs.length, 'Proportions index out of range.'); uint _whole; for(uint i=0; i<len; i++){ if(proportions[i] == 0) continue; _whole = _whole.add(proportions[i]); uint amount0 = (amount.mul(proportions[i]).div(DIVISOR)) >> 1; if(amount0 == 0) continue; address token1 = pairs[i]; uint amount1 = _swap(token0, token1, amount0); (,uint amountB,) = IUniswapV2Router(UNISWAP_V2_ROUTER).addLiquidity( token0, token1, amount0, amount1, 0, 0, address(this), block.timestamp ); if(amount1 > amountB) _swap(token1, token0, amount1.sub(amountB)); } require(_whole == DIVISOR, 'Error proportion.'); } function setUNIPool(address pair, address _uniPool) external onlyController { require(pair!= address(0) && _uniPool!= address(0), "Invalid address."); if(uniPool[pair] != address(0)){ _withdrawStaking(IUniswapV2Pair(pair), totalSupply); } IERC20(pair).approve(_uniPool, 2**256-1); uniPool[pair] = _uniPool; } function mineUNI(address pair) public onlyController { address stakingRewardAddr = uniPool[pair]; if(stakingRewardAddr != address(0)){ uint liquidity = IUniswapV2Pair(pair).balanceOf(address(this)); if(liquidity > 0){ IStakingRewards(stakingRewardAddr).stake(liquidity); } } } function mineUNIAll() external onlyController { for(uint i = 0; i < pairs.length; i++){ IUniswapV2Pair pair = IUniswapV2Pair(IUniswapV2Factory(UNISWAP_FACTORY).getPair(token, pairs[i])); address stakingRewardAddr = uniPool[address(pair)]; if(stakingRewardAddr != address(0)){ uint liquidity = pair.balanceOf(address(this)); if(liquidity > 0){ IStakingRewards(stakingRewardAddr).stake(liquidity); } } } } function totalUNIRewards() public view returns(uint amount){ amount = IERC20(UNI).balanceOf(address(this)); for(uint i = 0; i < pairs.length; i++){ IUniswapV2Pair pair = IUniswapV2Pair(IUniswapV2Factory(UNISWAP_FACTORY).getPair(token, pairs[i])); address stakingRewardAddr = uniPool[address(pair)]; if(stakingRewardAddr != address(0)){ amount = amount.add(IStakingRewards(stakingRewardAddr).earned(address(this))); } } } function UNIRewardsOf(address account) public view returns(uint reward){ if(balanceOf[account] > 0){ uint uniAmount = totalUNIRewards(); uint totalAmount = totalDebts.add(uniAmount).mul(balanceOf[account]).div(totalSupply); reward = totalAmount.sub(debtOf[account]); } } function stakingLPOf(address pair) public view returns(uint liquidity){ if(uniPool[pair] != address(0)){ liquidity = IStakingRewards(uniPool[pair]).balanceOf(address(this)); } } function _withdrawStaking(IUniswapV2Pair pair, uint share) internal returns(uint liquidity){ address stakingRewardAddr = uniPool[address(pair)]; if(stakingRewardAddr != address(0)){ liquidity = IStakingRewards(stakingRewardAddr).balanceOf(address(this)).mul(share).div(totalSupply); if(liquidity > 0){ IStakingRewards(stakingRewardAddr).withdraw(liquidity); IStakingRewards(stakingRewardAddr).getReward(); } } } function withdraw(uint share) public nonReentrant returns(uint amount) { require(share > 0 && share <= balanceOf[msg.sender], 'Not enough balance.'); uint _investment; (amount, _investment) = _withdraw(msg.sender, share); investmentOf[msg.sender] = investmentOf[msg.sender].sub(_investment); totalInvestment = totalInvestment.sub(_investment); _burn(msg.sender, share); IERC20(token).safeTransfer(msg.sender, amount); emit Withdraw(msg.sender, amount, share); } function _withdraw( address user, uint share ) internal returns (uint amount, uint investment) { address token0 = token; amount = IERC20(token0).balanceOf(address(this)).mul(share).div(totalSupply); for(uint i = 0; i < pairs.length; i++) { address token1 = pairs[i]; IUniswapV2Pair pair = IUniswapV2Pair(IUniswapV2Factory(UNISWAP_FACTORY).getPair(token0, token1)); uint liquidity = pair.balanceOf(address(this)).mul(share).div(totalSupply); liquidity = liquidity.add(_withdrawStaking(pair, share)); if(liquidity == 0) continue; (uint amount0, uint amount1) = IUniswapV2Router(UNISWAP_V2_ROUTER).removeLiquidity( token0, token1, liquidity, 0, 0, address(this), block.timestamp ); amount = amount.add(amount0).add(_swap(token1, token0, amount1)); } //withdraw UNI reward uint uniAmount = IERC20(UNI).balanceOf(address(this)); uint totalAmount = totalDebts.add(uniAmount).mul(share).div(totalSupply); if(totalAmount > 0){ uint debt = debtOf[user].mul(share).div(balanceOf[user]); debtOf[user] = debtOf[user].sub(debt); totalDebts = totalDebts.sub(debt); uint reward = totalAmount.sub(debt); if(reward > uniAmount) reward = uniAmount; if(reward > 0) IERC20(UNI).transfer(user, reward); } investment = investmentOf[user].mul(share).div(balanceOf[user]); if(amount > investment){ uint _fee = (amount.sub(investment)).mul(FEE).div(DIVISOR); amount = amount.sub(_fee); IERC20(token0).safeTransfer(controller, _fee); } else { investment = amount; } } function assets(uint index) public view returns(uint _assets) { require(index < pairs.length, 'Pair index out of range.'); address token0 = token; address token1 = pairs[index]; IUniswapV2Pair pair = IUniswapV2Pair(IUniswapV2Factory(UNISWAP_FACTORY).getPair(token0, token1)); (uint reserve0, uint reserve1, ) = pair.getReserves(); uint liquidity = pair.balanceOf(address(this)).add(stakingLPOf(address(pair))); if( pair.token0() == token0 ) _assets = (reserve0 << 1).mul(liquidity).div(pair.totalSupply()); else // pair.token1() == token0 _assets = (reserve1 << 1).mul(liquidity).div(pair.totalSupply()); } function totalAssets() public view returns(uint _assets) { address token0 = token; for(uint i=0; i<pairs.length; i++){ address token1 = pairs[i]; IUniswapV2Pair pair = IUniswapV2Pair(IUniswapV2Factory(UNISWAP_FACTORY).getPair(token0, token1)); (uint reserve0, uint reserve1, ) = pair.getReserves(); uint liquidity = pair.balanceOf(address(this)).add(stakingLPOf(address(pair))); if( pair.token0() == token0 ) _assets = _assets.add((reserve0 << 1).mul(liquidity).div(pair.totalSupply())); else // pair.token1() == token0 _assets = _assets.add((reserve1 << 1).mul(liquidity).div(pair.totalSupply())); } _assets = _assets.add(IERC20(token0).balanceOf(address(this))); } function pairsLength() public view returns(uint) { return pairs.length; } function setCurvePool(address _token, address _curvePool, int128 N_COINS) external onlyController { curvePool[_token] = _curvePool; if(_curvePool != address(0)) { if(IERC20(token).allowance(address(this), _curvePool) == 0){ IERC20(token).safeApprove(_curvePool, 2**256-1); } if(IERC20(_token).allowance(address(this), _curvePool) == 0){ IERC20(_token).safeApprove(_curvePool, 2**256-1); } CURVE_N_COINS[_curvePool] = N_COINS; } } function addPair(address _token) external onlyController { address pair = IUniswapV2Factory(UNISWAP_FACTORY).getPair(token, _token); require(pair != address(0), 'Pair not exist.'); //approve for add liquidity and swap. IERC20(_token).safeApprove(UNISWAP_V2_ROUTER, 2**256-1); //approve for remove liquidity IUniswapV2Pair(pair).approve(UNISWAP_V2_ROUTER, 2**256-1); for(uint i = 0; i < pairs.length; i++) { require(pairs[i] != _token, 'Pair existed.'); } pairs.push(_token); } function reBalance( uint add_index, uint remove_index, uint liquidity ) external onlyController { require(remove_index < pairs.length, 'Pair index out of range.'); address token0 = token; address token1 = pairs[remove_index]; IUniswapV2Pair pair = IUniswapV2Pair(IUniswapV2Factory(UNISWAP_FACTORY).getPair(token0, token1)); uint stakingLP = stakingLPOf(address(pair)); if(stakingLP > 0) IStakingRewards(uniPool[address(pair)]).exit(); require(liquidity <= pair.balanceOf(address(this)) && liquidity > 0, 'Not enough liquidity.'); (uint amount0, uint amount1) = IUniswapV2Router(UNISWAP_V2_ROUTER).removeLiquidity( token0, token1, liquidity, 0, 0, address(this), block.timestamp ); amount0 = amount0.add(_swap(token1, token0, amount1)); //Only remove liquidity if(add_index >= pairs.length || add_index == remove_index) return; token1 = pairs[add_index]; amount0 = amount0 >> 1; amount1 = _swap(token0, token1, amount0); (,uint amountB,) = IUniswapV2Router(UNISWAP_V2_ROUTER).addLiquidity( token0, token1, amount0, amount1, 0, 0, address(this), block.timestamp ); if(amount1 > amountB) _swap(token1, token0, amount1.sub(amountB)); } function removePair(uint index) external onlyController { require(index < pairs.length, 'Pair index out of range.'); address token0 = token; address token1 = pairs[index]; IUniswapV2Pair pair = IUniswapV2Pair(IUniswapV2Factory(UNISWAP_FACTORY).getPair(token0, token1)); _withdrawStaking(pair, totalSupply); uint liquidity = pair.balanceOf(address(this)); if(liquidity > 0){ (uint amount0, uint amount1) = IUniswapV2Router(UNISWAP_V2_ROUTER).removeLiquidity( token0, token1, liquidity, 0, 0, address(this), block.timestamp ); amount0 = amount0.add(_swap(token1, token0, amount1)); } IERC20(token1).safeApprove(UNISWAP_V2_ROUTER, 0); for (uint i = index; i < pairs.length-1; i++){ pairs[i] = pairs[i+1]; } pairs.pop(); } function _swap(address tokenIn, address tokenOut, uint amount) private returns(uint) { address pool = tokenIn == token ? curvePool[tokenOut] : curvePool[tokenIn]; if(pool != address(0)){ int128 N_COINS = CURVE_N_COINS[pool]; int128 idxIn = N_COINS; int128 idxOut = N_COINS; for(int128 i=0; i<N_COINS; i++){ address coin = ICurve(pool).coins(uint(i)); if(coin == tokenIn) {idxIn = i; continue;} if(coin == tokenOut) idxOut = i; } if(idxIn != N_COINS && idxOut != N_COINS){ uint amountBefore = IERC20(tokenOut).balanceOf(address(this)); ICurve(pool).exchange(idxIn, idxOut, amount, 0); return (IERC20(tokenOut).balanceOf(address(this))).sub(amountBefore); } } address[] memory path = new address[](2); path[0] = tokenIn; path[1] = tokenOut; uint[] memory amounts = IUniswapV2Router(UNISWAP_V2_ROUTER).swapExactTokensForTokens( amount, 0, path, address(this), block.timestamp); return amounts[1]; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_controller","type":"address"}],"payable":false,"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":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"share","type":"uint256"}],"name":"Deposit","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":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"share","type":"uint256"}],"name":"Withdraw","type":"event"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"UNIRewardsOf","outputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"addPair","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"assets","outputs":[{"internalType":"uint256","name":"_assets","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"controller","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"curvePool","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"debtOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"share","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256[]","name":"proportions","type":"uint256[]"}],"name":"invest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"investmentOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"mineUNI","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"mineUNIAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pairs","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pairsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"add_index","type":"uint256"},{"internalType":"uint256","name":"remove_index","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"reBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"removePair","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_curvePool","type":"address"},{"internalType":"int128","name":"N_COINS","type":"int128"}],"name":"setCurvePool","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"_uniPool","type":"address"}],"name":"setUNIPool","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"stakingLPOf","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"_assets","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalDebts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalInvestment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalUNIRewards","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"uniPool","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"share","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200452938038062004529833981810160405260408110156200003757600080fd5b5080516020918201516001600055909162000080906001600160a01b03841690737a250d5630b4cf539739df2c5dacb4c659f2488d906000199062003726620000b2821b17901c565b600480546001600160a01b039384166001600160a01b0319918216179091556005805492909316911617905562000273565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b179091526200010a9185916200010f16565b505050565b60006060836001600160a01b0316836040518082805190602001908083835b602083106200014f5780518252601f1990920191602091820191016200012e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114620001b3576040519150601f19603f3d011682016040523d82523d6000602084013e620001b8565b606091505b50915091508162000210576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156200026d578080602001905160208110156200022e57600080fd5b50516200026d5760405162461bcd60e51b815260040180806020018281038252602a815260200180620044ff602a913960400191505060405180910390fd5b50505050565b61427c80620002836000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c806378d1ce991161011a578063b91ac788116100ad578063dd62ed3e1161007c578063dd62ed3e14610601578063ed8a48441461062f578063f77c4791146106a6578063fc0c546a146106ae578063fedcf1d3146106b657610206565b8063b91ac7881461057b578063c2b7bbb614610598578063cf35bdd0146105be578063d283e75f146105db57610206565b80639b1146d8116100e95780639b1146d814610504578063a1ba46411461052a578063a9059cbb14610532578063b6b55f251461055e57610206565b806378d1ce991461045b57806393b19d681461049457806395c08f92146104d657806395d89b41146104fc57610206565b80632b42dc621161019d5780633268c9bd1161016c5780633268c9bd146103d657806334975748146103fc5780633b0cb86a146104045780634089382d1461042d57806370a082311461043557610206565b80632b42dc62146103565780632e1a7d4d146103755780632fcad52114610392578063313ce567146103b857610206565b806314a1c32d116101d957806314a1c32d146102ea57806318160ddd146102f257806323b872dd146102fa57806329349d961461033057610206565b806301e1d1141461020b57806306fdde0314610225578063095ea7b3146102a257806310ea13df146102e2575b600080fd5b6102136106e4565b60408051918252519081900360200190f35b61022d610b01565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026757818101518382015260200161024f565b50505050905090810190601f1680156102945780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102ce600480360360408110156102b857600080fd5b506001600160a01b038135169060200135610b26565b604080519115158252519081900360200190f35b610213610b3d565b610213610b43565b610213610b49565b6102ce6004803603606081101561031057600080fd5b506001600160a01b03813581169160208101359091169060400135610b4f565b6102136004803603602081101561034657600080fd5b50356001600160a01b0316610bbd565b6103736004803603602081101561036c57600080fd5b5035610c65565b005b6102136004803603602081101561038b57600080fd5b503561100c565b610213600480360360208110156103a857600080fd5b50356001600160a01b0316611193565b6103c061123e565b6040805160ff9092168252519081900360200190f35b610373600480360360208110156103ec57600080fd5b50356001600160a01b0316611243565b610213611394565b6103736004803603606081101561041a57600080fd5b508035906020810135906040013561139a565b610213611859565b6102136004803603602081101561044b57600080fd5b50356001600160a01b0316611a5e565b6103736004803603606081101561047157600080fd5b506001600160a01b03813581169160208101359091169060400135600f0b611a70565b6104ba600480360360208110156104aa57600080fd5b50356001600160a01b0316611c7c565b604080516001600160a01b039092168252519081900360200190f35b610213600480360360208110156104ec57600080fd5b50356001600160a01b0316611c97565b61022d611ca9565b6104ba6004803603602081101561051a57600080fd5b50356001600160a01b0316611ccb565b610373611ce6565b6102ce6004803603604081101561054857600080fd5b506001600160a01b038135169060200135611f0e565b6102136004803603602081101561057457600080fd5b5035611f1b565b6104ba6004803603602081101561059157600080fd5b503561212f565b610373600480360360208110156105ae57600080fd5b50356001600160a01b0316612156565b610213600480360360208110156105d457600080fd5b5035612423565b610213600480360360208110156105f157600080fd5b50356001600160a01b031661275d565b6102136004803603604081101561061757600080fd5b506001600160a01b038135811691602001351661276f565b6103736004803603604081101561064557600080fd5b8135919081019060408101602082013564010000000081111561066757600080fd5b82018360208201111561067957600080fd5b8035906020019184602083028401116401000000008311171561069b57600080fd5b50909250905061278c565b6104ba612b3c565b6104ba612b4b565b610373600480360360408110156106cc57600080fd5b506001600160a01b0381358116916020013516612b5a565b6004546000906001600160a01b0316815b600b54811015610a76576000600b828154811061070e57fe5b60009182526020808320909101546040805163e6a4390560e01b81526001600160a01b038881166004830152909216602483018190529051909450735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9263e6a439059260448082019391829003018186803b15801561078057600080fd5b505afa158015610794573d6000803e3d6000fd5b505050506040513d60208110156107aa57600080fd5b505160408051630240bc6b60e21b8152905191925060009182916001600160a01b03851691630902f1ac91600480820192606092909190829003018186803b1580156107f557600080fd5b505afa158015610809573d6000803e3d6000fd5b505050506040513d606081101561081f57600080fd5b5080516020909101516001600160701b03918216935016905060006108c461084685611193565b604080516370a0823160e01b815230600482015290516001600160a01b038816916370a08231916024808301926020929190829003018186803b15801561088c57600080fd5b505afa1580156108a0573d6000803e3d6000fd5b505050506040513d60208110156108b657600080fd5b50519063ffffffff612ce716565b9050866001600160a01b0316846001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561090957600080fd5b505afa15801561091d573d6000803e3d6000fd5b505050506040513d602081101561093357600080fd5b50516001600160a01b031614156109e3576109dc6109cf856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561098357600080fd5b505afa158015610997573d6000803e3d6000fd5b505050506040513d60208110156109ad57600080fd5b50516109c3600187901b8563ffffffff612d4116565b9063ffffffff612d9a16565b899063ffffffff612ce716565b9750610a65565b610a626109cf856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a2257600080fd5b505afa158015610a36573d6000803e3d6000fd5b505050506040513d6020811015610a4c57600080fd5b50516109c3600186901b8563ffffffff612d4116565b97505b5050600190930192506106f5915050565b50604080516370a0823160e01b81523060048201529051610afb916001600160a01b038416916370a0823191602480820192602092909190829003018186803b158015610ac257600080fd5b505afa158015610ad6573d6000803e3d6000fd5b505050506040513d6020811015610aec57600080fd5b5051839063ffffffff612ce716565b91505090565b60405180604001604052806009815260200168486f74706f7420563160b81b81525081565b6000610b33338484612e04565b5060015b92915050565b60065481565b60085481565b60015481565b6001600160a01b0383166000908152600360209081526040808320338452909152812054610b83908363ffffffff612ef016565b6001600160a01b0385166000908152600360209081526040808320338452909152902055610bb2848484612f32565b5060015b9392505050565b6001600160a01b03811660009081526002602052604081205415610c60576000610be5611859565b6001546001600160a01b0385166000908152600260205260408120546008549394509092610c2e92916109c391610c22908763ffffffff612ce716565b9063ffffffff612d4116565b6001600160a01b038516600090815260096020526040902054909150610c5b90829063ffffffff612ef016565b925050505b919050565b6005546001600160a01b03163314610cb2576040805162461bcd60e51b815260206004820152601a6024820152600080516020614173833981519152604482015290519081900360640190fd5b600b548110610d03576040805162461bcd60e51b81526020600482015260186024820152772830b4b91034b73232bc1037baba1037b3103930b733b29760411b604482015290519081900360640190fd5b600454600b80546001600160a01b03909216916000919084908110610d2457fe5b60009182526020808320909101546040805163e6a4390560e01b81526001600160a01b038781166004830152909216602483018190529051909450735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9263e6a439059260448082019391829003018186803b158015610d9657600080fd5b505afa158015610daa573d6000803e3d6000fd5b505050506040513d6020811015610dc057600080fd5b5051600154909150610dd3908290613076565b50604080516370a0823160e01b815230600482015290516000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b158015610e1e57600080fd5b505afa158015610e32573d6000803e3d6000fd5b505050506040513d6020811015610e4857600080fd5b505190508015610f315760408051635d5155ef60e11b81526001600160a01b0386811660048301528516602482015260448101839052600060648201819052608482018190523060a48301524260c4830152825190928392737a250d5630b4cf539739df2c5dacb4c659f2488d9263baa2abde9260e48084019391929182900301818787803b158015610eda57600080fd5b505af1158015610eee573d6000803e3d6000fd5b505050506040513d6040811015610f0457600080fd5b5080516020909101519092509050610f2d610f208688846131f2565b839063ffffffff612ce716565b5050505b610f606001600160a01b038416737a250d5630b4cf539739df2c5dacb4c659f2488d600063ffffffff61372616565b845b600b5460001901811015610fd757600b8160010181548110610f8057fe5b600091825260209091200154600b80546001600160a01b039092169183908110610fa657fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600101610f62565b50600b805480610fe357fe5b600082815260209020810160001990810180546001600160a01b03191690550190555050505050565b600060026000541415611066576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260005581158015906110895750336000908152600260205260409020548211155b6110d0576040805162461bcd60e51b81526020600482015260136024820152722737ba1032b737bab3b4103130b630b731b29760691b604482015290519081900360640190fd5b60006110dc3384613778565b336000908152600760205260409020549193509150611101908263ffffffff612ef016565b33600090815260076020526040902055600654611124908263ffffffff612ef016565b6006556111313384613cbb565b60045461114e906001600160a01b0316338463ffffffff613d9d16565b6040805183815260208101859052815133927ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568928290030190a2506001600055919050565b6001600160a01b038181166000908152600a602052604081205490911615610c60576001600160a01b038083166000908152600a60209081526040918290205482516370a0823160e01b815230600482015292519316926370a08231926024808201939291829003018186803b15801561120c57600080fd5b505afa158015611220573d6000803e3d6000fd5b505050506040513d602081101561123657600080fd5b505192915050565b601281565b6005546001600160a01b03163314611290576040805162461bcd60e51b815260206004820152601a6024820152600080516020614173833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600a602052604090205416801561139057604080516370a0823160e01b815230600482015290516000916001600160a01b038516916370a0823191602480820192602092909190829003018186803b1580156112fb57600080fd5b505afa15801561130f573d6000803e3d6000fd5b505050506040513d602081101561132557600080fd5b50519050801561138e57816001600160a01b031663a694fc3a826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561137557600080fd5b505af1158015611389573d6000803e3d6000fd5b505050505b505b5050565b600b5490565b6005546001600160a01b031633146113e7576040805162461bcd60e51b815260206004820152601a6024820152600080516020614173833981519152604482015290519081900360640190fd5b600b548210611438576040805162461bcd60e51b81526020600482015260186024820152772830b4b91034b73232bc1037baba1037b3103930b733b29760411b604482015290519081900360640190fd5b600454600b80546001600160a01b0390921691600091908590811061145957fe5b60009182526020808320909101546040805163e6a4390560e01b81526001600160a01b038781166004830152909216602483018190529051909450735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9263e6a439059260448082019391829003018186803b1580156114cb57600080fd5b505afa1580156114df573d6000803e3d6000fd5b505050506040513d60208110156114f557600080fd5b50519050600061150482611193565b90508015611575576001600160a01b038083166000908152600a60205260408082205481516374fd6c7760e11b8152915193169263e9fad8ee9260048084019391929182900301818387803b15801561155c57600080fd5b505af1158015611570573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b1580156115bb57600080fd5b505afa1580156115cf573d6000803e3d6000fd5b505050506040513d60208110156115e557600080fd5b505185118015906115f65750600085115b61163f576040805162461bcd60e51b81526020600482015260156024820152742737ba1032b737bab3b4103634b8bab4b234ba3c9760591b604482015290519081900360640190fd5b60408051635d5155ef60e11b81526001600160a01b0386811660048301528516602482015260448101879052600060648201819052608482018190523060a48301524260c4830152825190928392737a250d5630b4cf539739df2c5dacb4c659f2488d9263baa2abde9260e48084019391929182900301818787803b1580156116c757600080fd5b505af11580156116db573d6000803e3d6000fd5b505050506040513d60408110156116f157600080fd5b508051602090910151909250905061170d610f208688846131f2565b600b549092508910158061172057508789145b156117305750505050505061138e565b600b898154811061173d57fe5b6000918252602090912001546001600160a01b0316945060019190911c906117668686846131f2565b6040805162e8e33760e81b81526001600160a01b03898116600483015288166024820152604481018590526064810183905260006084820181905260a482018190523060c48301524260e483015291519293509091737a250d5630b4cf539739df2c5dacb4c659f2488d9163e8e337009161010480830192606092919082900301818787803b1580156117f857600080fd5b505af115801561180c573d6000803e3d6000fd5b505050506040513d606081101561182257600080fd5b506020015190508082111561184d5761184b8688611846858563ffffffff612ef016565b6131f2565b505b50505050505050505050565b604080516370a0823160e01b81523060048201529051600091731f9840a85d5af5bf1d1762f925bdaddc4201f984916370a0823191602480820192602092909190829003018186803b1580156118ae57600080fd5b505afa1580156118c2573d6000803e3d6000fd5b505050506040513d60208110156118d857600080fd5b5051905060005b600b54811015611a5a57600454600b8054600092735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9263e6a43905926001600160a01b03909216918690811061192557fe5b60009182526020918290200154604080516001600160e01b031960e087901b1681526001600160a01b03948516600482015293909116602484015251604480840193829003018186803b15801561197b57600080fd5b505afa15801561198f573d6000803e3d6000fd5b505050506040513d60208110156119a557600080fd5b50516001600160a01b038082166000908152600a6020526040902054919250168015611a5057604080516246613160e11b81523060048201529051611a4d916001600160a01b03841691628cc26291602480820192602092909190829003018186803b158015611a1457600080fd5b505afa158015611a28573d6000803e3d6000fd5b505050506040513d6020811015611a3e57600080fd5b5051859063ffffffff612ce716565b93505b50506001016118df565b5090565b60026020526000908152604090205481565b6005546001600160a01b03163314611abd576040805162461bcd60e51b815260206004820152601a6024820152600080516020614173833981519152604482015290519081900360640190fd5b6001600160a01b038381166000908152600c6020526040902080546001600160a01b03191691841691821790551561138e576004805460408051636eb1769f60e11b815230938101939093526001600160a01b038581166024850152905191169163dd62ed3e916044808301926020929190829003018186803b158015611b4357600080fd5b505afa158015611b57573d6000803e3d6000fd5b505050506040513d6020811015611b6d57600080fd5b5051611b9257600454611b92906001600160a01b03168360001963ffffffff61372616565b60408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015611be257600080fd5b505afa158015611bf6573d6000803e3d6000fd5b505050506040513d6020811015611c0c57600080fd5b5051611c2e57611c2e6001600160a01b0384168360001963ffffffff61372616565b6001600160a01b0382166000908152600d602052604090208054600f83900b6fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff19909116179055505050565b600a602052600090815260409020546001600160a01b031681565b60076020526000908152604090205481565b604051806040016040528060068152602001654850542d563160d01b81525081565b600c602052600090815260409020546001600160a01b031681565b6005546001600160a01b03163314611d33576040805162461bcd60e51b815260206004820152601a6024820152600080516020614173833981519152604482015290519081900360640190fd5b60005b600b54811015611f0b57600454600b8054600092735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9263e6a43905926001600160a01b039092169186908110611d7c57fe5b60009182526020918290200154604080516001600160e01b031960e087901b1681526001600160a01b03948516600482015293909116602484015251604480840193829003018186803b158015611dd257600080fd5b505afa158015611de6573d6000803e3d6000fd5b505050506040513d6020811015611dfc57600080fd5b50516001600160a01b038082166000908152600a6020526040902054919250168015611f0157604080516370a0823160e01b815230600482015290516000916001600160a01b038516916370a0823191602480820192602092909190829003018186803b158015611e6c57600080fd5b505afa158015611e80573d6000803e3d6000fd5b505050506040513d6020811015611e9657600080fd5b505190508015611eff57816001600160a01b031663a694fc3a826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611ee657600080fd5b505af1158015611efa573d6000803e3d6000fd5b505050505b505b5050600101611d36565b50565b6000610b33338484612f32565b600060026000541415611f75576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260005581611fc2576040805162461bcd60e51b815260206004820152601360248201527241726520796f75206b696464696e67206d653f60681b604482015290519081900360640190fd5b6000611fcc6106e4565b600454909150611fed906001600160a01b031633308663ffffffff613def16565b600154611ffc5782915061209a565b612015816109c360015486612d4190919063ffffffff16565b915060006120496001546109c361203c61202d611859565b6008549063ffffffff612ce716565b869063ffffffff612d4116565b905080156120985733600090815260096020526040902054612071908263ffffffff612ce716565b33600090815260096020526040902055600854612094908263ffffffff612ce716565b6008555b505b336000908152600760205260409020546120ba908463ffffffff612ce716565b336000908152600760205260409020556006546120dd908463ffffffff612ce716565b6006556120ea3383613e4f565b6040805184815260208101849052815133927f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15928290030190a2506001600055919050565b600b818154811061213c57fe5b6000918252602090912001546001600160a01b0316905081565b6005546001600160a01b031633146121a3576040805162461bcd60e51b815260206004820152601a6024820152600080516020614173833981519152604482015290519081900360640190fd5b600480546040805163e6a4390560e01b81526001600160a01b0392831693810193909352908316602483015251600091735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9163e6a4390591604480820192602092909190829003018186803b15801561220f57600080fd5b505afa158015612223573d6000803e3d6000fd5b505050506040513d602081101561223957600080fd5b505190506001600160a01b03811661228a576040805162461bcd60e51b815260206004820152600f60248201526e2830b4b9103737ba1032bc34b9ba1760891b604482015290519081900360640190fd5b6122ba6001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d60001963ffffffff61372616565b6040805163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d6004820152600019602482015290516001600160a01b0383169163095ea7b39160448083019260209291908290030181600087803b15801561231e57600080fd5b505af1158015612332573d6000803e3d6000fd5b505050506040513d602081101561234857600080fd5b50600090505b600b548110156123cf57826001600160a01b0316600b828154811061236f57fe5b6000918252602090912001546001600160a01b031614156123c7576040805162461bcd60e51b815260206004820152600d60248201526c2830b4b91032bc34b9ba32b21760991b604482015290519081900360640190fd5b60010161234e565b5050600b80546001810182556000919091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b0392909216919091179055565b600b546000908210612477576040805162461bcd60e51b81526020600482015260186024820152772830b4b91034b73232bc1037baba1037b3103930b733b29760411b604482015290519081900360640190fd5b600454600b80546001600160a01b0390921691600091908590811061249857fe5b60009182526020808320909101546040805163e6a4390560e01b81526001600160a01b038781166004830152909216602483018190529051909450735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9263e6a439059260448082019391829003018186803b15801561250a57600080fd5b505afa15801561251e573d6000803e3d6000fd5b505050506040513d602081101561253457600080fd5b505160408051630240bc6b60e21b8152905191925060009182916001600160a01b03851691630902f1ac91600480820192606092909190829003018186803b15801561257f57600080fd5b505afa158015612593573d6000803e3d6000fd5b505050506040513d60608110156125a957600080fd5b5080516020909101516001600160701b03918216935016905060006125d061084685611193565b9050856001600160a01b0316846001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561261557600080fd5b505afa158015612629573d6000803e3d6000fd5b505050506040513d602081101561263f57600080fd5b50516001600160a01b031614156126d3576126cc846001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561268c57600080fd5b505afa1580156126a0573d6000803e3d6000fd5b505050506040513d60208110156126b657600080fd5b50516109c3600186901b8463ffffffff612d4116565b9650612752565b61274f846001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561270f57600080fd5b505afa158015612723573d6000803e3d6000fd5b505050506040513d602081101561273957600080fd5b50516109c3600185901b8463ffffffff612d4116565b96505b505050505050919050565b60096020526000908152604090205481565b600360209081526000928352604080842090915290825290205481565b6005546001600160a01b031633146127d9576040805162461bcd60e51b815260206004820152601a6024820152600080516020614173833981519152604482015290519081900360640190fd5b600b5480612820576040805162461bcd60e51b815260206004820152600f60248201526e2830b4b9399034b99032b6b83a3c9760891b604482015290519081900360640190fd5b60048054604080516370a0823160e01b81523093810193909352516001600160a01b039091169182916370a0823191602480820192602092909190829003018186803b15801561286f57600080fd5b505afa158015612883573d6000803e3d6000fd5b505050506040513d602081101561289957600080fd5b50518511156128e5576040805162461bcd60e51b81526020600482015260136024820152722737ba1032b737bab3b4103130b630b731b29760691b604482015290519081900360640190fd5b600b54831461293b576040805162461bcd60e51b815260206004820152601f60248201527f50726f706f7274696f6e7320696e646578206f7574206f662072616e67652e00604482015290519081900360640190fd5b6000805b83811015612aea5785858281811061295357fe5b905060200201356000141561296757612ae2565b61298c86868381811061297657fe5b9050602002013583612ce790919063ffffffff16565b9150600060016129bc60646109c38a8a878181106129a657fe5b905060200201358c612d4190919063ffffffff16565b901c9050806129cb5750612ae2565b6000600b83815481106129da57fe5b60009182526020822001546001600160a01b031691506129fb8683856131f2565b6040805162e8e33760e81b81526001600160a01b03898116600483015285166024820152604481018690526064810183905260006084820181905260a482018190523060c48301524260e483015291519293509091737a250d5630b4cf539739df2c5dacb4c659f2488d9163e8e337009161010480830192606092919082900301818787803b158015612a8d57600080fd5b505af1158015612aa1573d6000803e3d6000fd5b505050506040513d6060811015612ab757600080fd5b5060200151905080821115612add57612adb8388611846858563ffffffff612ef016565b505b505050505b60010161293f565b5060648114612b34576040805162461bcd60e51b815260206004820152601160248201527022b93937b910383937b837b93a34b7b71760791b604482015290519081900360640190fd5b505050505050565b6005546001600160a01b031681565b6004546001600160a01b031681565b6005546001600160a01b03163314612ba7576040805162461bcd60e51b815260206004820152601a6024820152600080516020614173833981519152604482015290519081900360640190fd5b6001600160a01b03821615801590612bc757506001600160a01b03811615155b612c0b576040805162461bcd60e51b815260206004820152601060248201526f24b73b30b634b21030b2323932b9b99760811b604482015290519081900360640190fd5b6001600160a01b038281166000908152600a60205260409020541615612c3957612c3782600154613076565b505b6040805163095ea7b360e01b81526001600160a01b038381166004830152600019602483015291519184169163095ea7b3916044808201926020929091908290030181600087803b158015612c8d57600080fd5b505af1158015612ca1573d6000803e3d6000fd5b505050506040513d6020811015612cb757600080fd5b50506001600160a01b039182166000908152600a6020526040902080546001600160a01b03191691909216179055565b600082820183811015610bb6576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600082612d5057506000610b37565b82820282848281612d5d57fe5b0414610bb65760405162461bcd60e51b81526004018080602001828103825260218152602001806141936021913960400191505060405180910390fd5b6000808211612df0576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481612dfb57fe5b04949350505050565b6001600160a01b038316612e495760405162461bcd60e51b81526004018080602001828103825260248152602001806141fa6024913960400191505060405180910390fd5b6001600160a01b038216612e8e5760405162461bcd60e51b81526004018080602001828103825260228152602001806141516022913960400191505060405180910390fd5b6001600160a01b03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000610bb683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613f41565b6001600160a01b038316612f775760405162461bcd60e51b81526004018080602001828103825260258152602001806141d56025913960400191505060405180910390fd5b6001600160a01b038216612fbc5760405162461bcd60e51b815260040180806020018281038252602381526020018061412e6023913960400191505060405180910390fd5b6001600160a01b038316600090815260026020526040902054612fe5908263ffffffff612ef016565b6001600160a01b03808516600090815260026020526040808220939093559084168152205461301a908263ffffffff612ce716565b6001600160a01b0380841660008181526002602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6001600160a01b038083166000908152600a602052604081205490911680156131eb576131316001546109c385846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156130f957600080fd5b505afa15801561310d573d6000803e3d6000fd5b505050506040513d602081101561312357600080fd5b50519063ffffffff612d4116565b915081156131eb57806001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561317f57600080fd5b505af1158015613193573d6000803e3d6000fd5b50505050806001600160a01b0316633d18b9126040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156131d257600080fd5b505af11580156131e6573d6000803e3d6000fd5b505050505b5092915050565b60045460009081906001600160a01b0386811691161461322c576001600160a01b038086166000908152600c602052604090205416613248565b6001600160a01b038085166000908152600c6020526040902054165b90506001600160a01b038116156134f1576001600160a01b0381166000908152600d6020526040812054600f0b90819081905b83600f0b81600f0b1215613345576000856001600160a01b031663c661065783600f0b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156132d257600080fd5b505afa1580156132e6573d6000803e3d6000fd5b505050506040513d60208110156132fc57600080fd5b505190506001600160a01b03808216908b16141561331d578193505061333d565b886001600160a01b0316816001600160a01b0316141561333b578192505b505b60010161327b565b5082600f0b82600f0b14158015613362575082600f0b81600f0b14155b156134ed57604080516370a0823160e01b815230600482015290516000916001600160a01b038a16916370a0823191602480820192602092909190829003018186803b1580156133b157600080fd5b505afa1580156133c5573d6000803e3d6000fd5b505050506040513d60208110156133db57600080fd5b505160408051630f7c084960e21b8152600f86810b810b600483015285810b900b6024820152604481018a905260006064820181905291519293506001600160a01b03881692633df021249260848084019391929182900301818387803b15801561344557600080fd5b505af1158015613459573d6000803e3d6000fd5b5050604080516370a0823160e01b815230600482015290516134e193508492506001600160a01b038c16916370a08231916024808301926020929190829003018186803b1580156134a957600080fd5b505afa1580156134bd573d6000803e3d6000fd5b505050506040513d60208110156134d357600080fd5b50519063ffffffff612ef016565b95505050505050610bb6565b5050505b6040805160028082526060808301845292602083019080388339019050509050858160008151811061351f57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848160018151811061354d57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506060737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03166338ed17398660008530426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156136115781810151838201526020016135f9565b505050509050019650505050505050600060405180830381600087803b15801561363a57600080fd5b505af115801561364e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561367757600080fd5b810190808051604051939291908464010000000082111561369757600080fd5b9083019060208201858111156136ac57600080fd5b82518660208202830111640100000000821117156136c957600080fd5b82525081516020918201928201910280838360005b838110156136f65781810151838201526020016136de565b5050505090500160405250505090508060018151811061371257fe5b602002602001015193505050509392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261138e908490613fd8565b60048054600154604080516370a0823160e01b815230948101949094525160009384936001600160a01b0316926137d99290916109c391889186916370a0823191602480820192602092909190829003018186803b1580156130f957600080fd5b925060005b600b54811015613a15576000600b82815481106137f757fe5b60009182526020808320909101546040805163e6a4390560e01b81526001600160a01b038881166004830152909216602483018190529051909450735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9263e6a439059260448082019391829003018186803b15801561386957600080fd5b505afa15801561387d573d6000803e3d6000fd5b505050506040513d602081101561389357600080fd5b5051600154604080516370a0823160e01b815230600482015290519293506000926138f092916109c3918c916001600160a01b038816916370a0823191602480820192602092909190829003018186803b1580156130f957600080fd5b905061390c6138ff838a613076565b829063ffffffff612ce716565b90508061391b57505050613a0d565b60408051635d5155ef60e11b81526001600160a01b0387811660048301528516602482015260448101839052600060648201819052608482018190523060a48301524260c4830152825190928392737a250d5630b4cf539739df2c5dacb4c659f2488d9263baa2abde9260e48084019391929182900301818787803b1580156139a357600080fd5b505af11580156139b7573d6000803e3d6000fd5b505050506040513d60408110156139cd57600080fd5b5080516020909101519092509050613a056139e98689846131f2565b6139f98b8563ffffffff612ce716565b9063ffffffff612ce716565b985050505050505b6001016137de565b50604080516370a0823160e01b81523060048201529051600091731f9840a85d5af5bf1d1762f925bdaddc4201f984916370a0823191602480820192602092909190829003018186803b158015613a6b57600080fd5b505afa158015613a7f573d6000803e3d6000fd5b505050506040513d6020811015613a9557600080fd5b5051600154600854919250600091613abe91906109c3908990610c22908763ffffffff612ce716565b90508015613c12576001600160a01b0387166000908152600260209081526040808320546009909252822054613aff91906109c3908a63ffffffff612d4116565b6001600160a01b038916600090815260096020526040902054909150613b2b908263ffffffff612ef016565b6001600160a01b038916600090815260096020526040902055600854613b57908263ffffffff612ef016565b6008556000613b6c838363ffffffff612ef016565b905083811115613b795750825b8015613c0f576040805163a9059cbb60e01b81526001600160a01b038b166004820152602481018390529051731f9840a85d5af5bf1d1762f925bdaddc4201f9849163a9059cbb9160448083019260209291908290030181600087803b158015613be257600080fd5b505af1158015613bf6573d6000803e3d6000fd5b505050506040513d6020811015613c0c57600080fd5b50505b50505b6001600160a01b038716600090815260026020908152604080832054600790925290912054613c4c91906109c3908963ffffffff612d4116565b935083851115613cad576000613c7260646109c36014610c228a8a63ffffffff612ef016565b9050613c84868263ffffffff612ef016565b600554909650613ca7906001600160a01b0386811691168363ffffffff613d9d16565b50613cb1565b8493505b5050509250929050565b6001600160a01b038216613d005760405162461bcd60e51b81526004018080602001828103825260218152602001806141b46021913960400191505060405180910390fd5b6001600160a01b038216600090815260026020526040902054613d29908263ffffffff612ef016565b6001600160a01b038316600090815260026020526040902055600154613d55908263ffffffff612ef016565b6001556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261138e908490613fd8565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052613e49908590613fd8565b50505050565b6001600160a01b038216613eaa576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600154613ebd908263ffffffff612ce716565b6001556001600160a01b038216600090815260026020526040902054613ee9908263ffffffff612ce716565b6001600160a01b03831660008181526002602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008184841115613fd05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613f95578181015183820152602001613f7d565b50505050905090810190601f168015613fc25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60006060836001600160a01b0316836040518082805190602001908083835b602083106140165780518252601f199092019160209182019101613ff7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614078576040519150601f19603f3d011682016040523d82523d6000602084013e61407d565b606091505b5091509150816140d4576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115613e49578080602001905160208110156140f057600080fd5b5051613e495760405162461bcd60e51b815260040180806020018281038252602a81526020018061421e602a913960400191505060405180910390fdfe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734f6e6c792063616c6c656420627920436f6e74726f6c6c65722e000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158201a08d8e3abfaa2696a22890f7a9fc8c1722c9d5f369ab8b5e44a3c6edf37c9e364736f6c634300051100325361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565640000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000da2d6e2abb42deaa267e16504a164d5d8046454f
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102065760003560e01c806378d1ce991161011a578063b91ac788116100ad578063dd62ed3e1161007c578063dd62ed3e14610601578063ed8a48441461062f578063f77c4791146106a6578063fc0c546a146106ae578063fedcf1d3146106b657610206565b8063b91ac7881461057b578063c2b7bbb614610598578063cf35bdd0146105be578063d283e75f146105db57610206565b80639b1146d8116100e95780639b1146d814610504578063a1ba46411461052a578063a9059cbb14610532578063b6b55f251461055e57610206565b806378d1ce991461045b57806393b19d681461049457806395c08f92146104d657806395d89b41146104fc57610206565b80632b42dc621161019d5780633268c9bd1161016c5780633268c9bd146103d657806334975748146103fc5780633b0cb86a146104045780634089382d1461042d57806370a082311461043557610206565b80632b42dc62146103565780632e1a7d4d146103755780632fcad52114610392578063313ce567146103b857610206565b806314a1c32d116101d957806314a1c32d146102ea57806318160ddd146102f257806323b872dd146102fa57806329349d961461033057610206565b806301e1d1141461020b57806306fdde0314610225578063095ea7b3146102a257806310ea13df146102e2575b600080fd5b6102136106e4565b60408051918252519081900360200190f35b61022d610b01565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026757818101518382015260200161024f565b50505050905090810190601f1680156102945780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102ce600480360360408110156102b857600080fd5b506001600160a01b038135169060200135610b26565b604080519115158252519081900360200190f35b610213610b3d565b610213610b43565b610213610b49565b6102ce6004803603606081101561031057600080fd5b506001600160a01b03813581169160208101359091169060400135610b4f565b6102136004803603602081101561034657600080fd5b50356001600160a01b0316610bbd565b6103736004803603602081101561036c57600080fd5b5035610c65565b005b6102136004803603602081101561038b57600080fd5b503561100c565b610213600480360360208110156103a857600080fd5b50356001600160a01b0316611193565b6103c061123e565b6040805160ff9092168252519081900360200190f35b610373600480360360208110156103ec57600080fd5b50356001600160a01b0316611243565b610213611394565b6103736004803603606081101561041a57600080fd5b508035906020810135906040013561139a565b610213611859565b6102136004803603602081101561044b57600080fd5b50356001600160a01b0316611a5e565b6103736004803603606081101561047157600080fd5b506001600160a01b03813581169160208101359091169060400135600f0b611a70565b6104ba600480360360208110156104aa57600080fd5b50356001600160a01b0316611c7c565b604080516001600160a01b039092168252519081900360200190f35b610213600480360360208110156104ec57600080fd5b50356001600160a01b0316611c97565b61022d611ca9565b6104ba6004803603602081101561051a57600080fd5b50356001600160a01b0316611ccb565b610373611ce6565b6102ce6004803603604081101561054857600080fd5b506001600160a01b038135169060200135611f0e565b6102136004803603602081101561057457600080fd5b5035611f1b565b6104ba6004803603602081101561059157600080fd5b503561212f565b610373600480360360208110156105ae57600080fd5b50356001600160a01b0316612156565b610213600480360360208110156105d457600080fd5b5035612423565b610213600480360360208110156105f157600080fd5b50356001600160a01b031661275d565b6102136004803603604081101561061757600080fd5b506001600160a01b038135811691602001351661276f565b6103736004803603604081101561064557600080fd5b8135919081019060408101602082013564010000000081111561066757600080fd5b82018360208201111561067957600080fd5b8035906020019184602083028401116401000000008311171561069b57600080fd5b50909250905061278c565b6104ba612b3c565b6104ba612b4b565b610373600480360360408110156106cc57600080fd5b506001600160a01b0381358116916020013516612b5a565b6004546000906001600160a01b0316815b600b54811015610a76576000600b828154811061070e57fe5b60009182526020808320909101546040805163e6a4390560e01b81526001600160a01b038881166004830152909216602483018190529051909450735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9263e6a439059260448082019391829003018186803b15801561078057600080fd5b505afa158015610794573d6000803e3d6000fd5b505050506040513d60208110156107aa57600080fd5b505160408051630240bc6b60e21b8152905191925060009182916001600160a01b03851691630902f1ac91600480820192606092909190829003018186803b1580156107f557600080fd5b505afa158015610809573d6000803e3d6000fd5b505050506040513d606081101561081f57600080fd5b5080516020909101516001600160701b03918216935016905060006108c461084685611193565b604080516370a0823160e01b815230600482015290516001600160a01b038816916370a08231916024808301926020929190829003018186803b15801561088c57600080fd5b505afa1580156108a0573d6000803e3d6000fd5b505050506040513d60208110156108b657600080fd5b50519063ffffffff612ce716565b9050866001600160a01b0316846001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561090957600080fd5b505afa15801561091d573d6000803e3d6000fd5b505050506040513d602081101561093357600080fd5b50516001600160a01b031614156109e3576109dc6109cf856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561098357600080fd5b505afa158015610997573d6000803e3d6000fd5b505050506040513d60208110156109ad57600080fd5b50516109c3600187901b8563ffffffff612d4116565b9063ffffffff612d9a16565b899063ffffffff612ce716565b9750610a65565b610a626109cf856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a2257600080fd5b505afa158015610a36573d6000803e3d6000fd5b505050506040513d6020811015610a4c57600080fd5b50516109c3600186901b8563ffffffff612d4116565b97505b5050600190930192506106f5915050565b50604080516370a0823160e01b81523060048201529051610afb916001600160a01b038416916370a0823191602480820192602092909190829003018186803b158015610ac257600080fd5b505afa158015610ad6573d6000803e3d6000fd5b505050506040513d6020811015610aec57600080fd5b5051839063ffffffff612ce716565b91505090565b60405180604001604052806009815260200168486f74706f7420563160b81b81525081565b6000610b33338484612e04565b5060015b92915050565b60065481565b60085481565b60015481565b6001600160a01b0383166000908152600360209081526040808320338452909152812054610b83908363ffffffff612ef016565b6001600160a01b0385166000908152600360209081526040808320338452909152902055610bb2848484612f32565b5060015b9392505050565b6001600160a01b03811660009081526002602052604081205415610c60576000610be5611859565b6001546001600160a01b0385166000908152600260205260408120546008549394509092610c2e92916109c391610c22908763ffffffff612ce716565b9063ffffffff612d4116565b6001600160a01b038516600090815260096020526040902054909150610c5b90829063ffffffff612ef016565b925050505b919050565b6005546001600160a01b03163314610cb2576040805162461bcd60e51b815260206004820152601a6024820152600080516020614173833981519152604482015290519081900360640190fd5b600b548110610d03576040805162461bcd60e51b81526020600482015260186024820152772830b4b91034b73232bc1037baba1037b3103930b733b29760411b604482015290519081900360640190fd5b600454600b80546001600160a01b03909216916000919084908110610d2457fe5b60009182526020808320909101546040805163e6a4390560e01b81526001600160a01b038781166004830152909216602483018190529051909450735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9263e6a439059260448082019391829003018186803b158015610d9657600080fd5b505afa158015610daa573d6000803e3d6000fd5b505050506040513d6020811015610dc057600080fd5b5051600154909150610dd3908290613076565b50604080516370a0823160e01b815230600482015290516000916001600160a01b038416916370a0823191602480820192602092909190829003018186803b158015610e1e57600080fd5b505afa158015610e32573d6000803e3d6000fd5b505050506040513d6020811015610e4857600080fd5b505190508015610f315760408051635d5155ef60e11b81526001600160a01b0386811660048301528516602482015260448101839052600060648201819052608482018190523060a48301524260c4830152825190928392737a250d5630b4cf539739df2c5dacb4c659f2488d9263baa2abde9260e48084019391929182900301818787803b158015610eda57600080fd5b505af1158015610eee573d6000803e3d6000fd5b505050506040513d6040811015610f0457600080fd5b5080516020909101519092509050610f2d610f208688846131f2565b839063ffffffff612ce716565b5050505b610f606001600160a01b038416737a250d5630b4cf539739df2c5dacb4c659f2488d600063ffffffff61372616565b845b600b5460001901811015610fd757600b8160010181548110610f8057fe5b600091825260209091200154600b80546001600160a01b039092169183908110610fa657fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600101610f62565b50600b805480610fe357fe5b600082815260209020810160001990810180546001600160a01b03191690550190555050505050565b600060026000541415611066576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260005581158015906110895750336000908152600260205260409020548211155b6110d0576040805162461bcd60e51b81526020600482015260136024820152722737ba1032b737bab3b4103130b630b731b29760691b604482015290519081900360640190fd5b60006110dc3384613778565b336000908152600760205260409020549193509150611101908263ffffffff612ef016565b33600090815260076020526040902055600654611124908263ffffffff612ef016565b6006556111313384613cbb565b60045461114e906001600160a01b0316338463ffffffff613d9d16565b6040805183815260208101859052815133927ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568928290030190a2506001600055919050565b6001600160a01b038181166000908152600a602052604081205490911615610c60576001600160a01b038083166000908152600a60209081526040918290205482516370a0823160e01b815230600482015292519316926370a08231926024808201939291829003018186803b15801561120c57600080fd5b505afa158015611220573d6000803e3d6000fd5b505050506040513d602081101561123657600080fd5b505192915050565b601281565b6005546001600160a01b03163314611290576040805162461bcd60e51b815260206004820152601a6024820152600080516020614173833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600a602052604090205416801561139057604080516370a0823160e01b815230600482015290516000916001600160a01b038516916370a0823191602480820192602092909190829003018186803b1580156112fb57600080fd5b505afa15801561130f573d6000803e3d6000fd5b505050506040513d602081101561132557600080fd5b50519050801561138e57816001600160a01b031663a694fc3a826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561137557600080fd5b505af1158015611389573d6000803e3d6000fd5b505050505b505b5050565b600b5490565b6005546001600160a01b031633146113e7576040805162461bcd60e51b815260206004820152601a6024820152600080516020614173833981519152604482015290519081900360640190fd5b600b548210611438576040805162461bcd60e51b81526020600482015260186024820152772830b4b91034b73232bc1037baba1037b3103930b733b29760411b604482015290519081900360640190fd5b600454600b80546001600160a01b0390921691600091908590811061145957fe5b60009182526020808320909101546040805163e6a4390560e01b81526001600160a01b038781166004830152909216602483018190529051909450735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9263e6a439059260448082019391829003018186803b1580156114cb57600080fd5b505afa1580156114df573d6000803e3d6000fd5b505050506040513d60208110156114f557600080fd5b50519050600061150482611193565b90508015611575576001600160a01b038083166000908152600a60205260408082205481516374fd6c7760e11b8152915193169263e9fad8ee9260048084019391929182900301818387803b15801561155c57600080fd5b505af1158015611570573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b1580156115bb57600080fd5b505afa1580156115cf573d6000803e3d6000fd5b505050506040513d60208110156115e557600080fd5b505185118015906115f65750600085115b61163f576040805162461bcd60e51b81526020600482015260156024820152742737ba1032b737bab3b4103634b8bab4b234ba3c9760591b604482015290519081900360640190fd5b60408051635d5155ef60e11b81526001600160a01b0386811660048301528516602482015260448101879052600060648201819052608482018190523060a48301524260c4830152825190928392737a250d5630b4cf539739df2c5dacb4c659f2488d9263baa2abde9260e48084019391929182900301818787803b1580156116c757600080fd5b505af11580156116db573d6000803e3d6000fd5b505050506040513d60408110156116f157600080fd5b508051602090910151909250905061170d610f208688846131f2565b600b549092508910158061172057508789145b156117305750505050505061138e565b600b898154811061173d57fe5b6000918252602090912001546001600160a01b0316945060019190911c906117668686846131f2565b6040805162e8e33760e81b81526001600160a01b03898116600483015288166024820152604481018590526064810183905260006084820181905260a482018190523060c48301524260e483015291519293509091737a250d5630b4cf539739df2c5dacb4c659f2488d9163e8e337009161010480830192606092919082900301818787803b1580156117f857600080fd5b505af115801561180c573d6000803e3d6000fd5b505050506040513d606081101561182257600080fd5b506020015190508082111561184d5761184b8688611846858563ffffffff612ef016565b6131f2565b505b50505050505050505050565b604080516370a0823160e01b81523060048201529051600091731f9840a85d5af5bf1d1762f925bdaddc4201f984916370a0823191602480820192602092909190829003018186803b1580156118ae57600080fd5b505afa1580156118c2573d6000803e3d6000fd5b505050506040513d60208110156118d857600080fd5b5051905060005b600b54811015611a5a57600454600b8054600092735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9263e6a43905926001600160a01b03909216918690811061192557fe5b60009182526020918290200154604080516001600160e01b031960e087901b1681526001600160a01b03948516600482015293909116602484015251604480840193829003018186803b15801561197b57600080fd5b505afa15801561198f573d6000803e3d6000fd5b505050506040513d60208110156119a557600080fd5b50516001600160a01b038082166000908152600a6020526040902054919250168015611a5057604080516246613160e11b81523060048201529051611a4d916001600160a01b03841691628cc26291602480820192602092909190829003018186803b158015611a1457600080fd5b505afa158015611a28573d6000803e3d6000fd5b505050506040513d6020811015611a3e57600080fd5b5051859063ffffffff612ce716565b93505b50506001016118df565b5090565b60026020526000908152604090205481565b6005546001600160a01b03163314611abd576040805162461bcd60e51b815260206004820152601a6024820152600080516020614173833981519152604482015290519081900360640190fd5b6001600160a01b038381166000908152600c6020526040902080546001600160a01b03191691841691821790551561138e576004805460408051636eb1769f60e11b815230938101939093526001600160a01b038581166024850152905191169163dd62ed3e916044808301926020929190829003018186803b158015611b4357600080fd5b505afa158015611b57573d6000803e3d6000fd5b505050506040513d6020811015611b6d57600080fd5b5051611b9257600454611b92906001600160a01b03168360001963ffffffff61372616565b60408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015611be257600080fd5b505afa158015611bf6573d6000803e3d6000fd5b505050506040513d6020811015611c0c57600080fd5b5051611c2e57611c2e6001600160a01b0384168360001963ffffffff61372616565b6001600160a01b0382166000908152600d602052604090208054600f83900b6fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff19909116179055505050565b600a602052600090815260409020546001600160a01b031681565b60076020526000908152604090205481565b604051806040016040528060068152602001654850542d563160d01b81525081565b600c602052600090815260409020546001600160a01b031681565b6005546001600160a01b03163314611d33576040805162461bcd60e51b815260206004820152601a6024820152600080516020614173833981519152604482015290519081900360640190fd5b60005b600b54811015611f0b57600454600b8054600092735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9263e6a43905926001600160a01b039092169186908110611d7c57fe5b60009182526020918290200154604080516001600160e01b031960e087901b1681526001600160a01b03948516600482015293909116602484015251604480840193829003018186803b158015611dd257600080fd5b505afa158015611de6573d6000803e3d6000fd5b505050506040513d6020811015611dfc57600080fd5b50516001600160a01b038082166000908152600a6020526040902054919250168015611f0157604080516370a0823160e01b815230600482015290516000916001600160a01b038516916370a0823191602480820192602092909190829003018186803b158015611e6c57600080fd5b505afa158015611e80573d6000803e3d6000fd5b505050506040513d6020811015611e9657600080fd5b505190508015611eff57816001600160a01b031663a694fc3a826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611ee657600080fd5b505af1158015611efa573d6000803e3d6000fd5b505050505b505b5050600101611d36565b50565b6000610b33338484612f32565b600060026000541415611f75576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260005581611fc2576040805162461bcd60e51b815260206004820152601360248201527241726520796f75206b696464696e67206d653f60681b604482015290519081900360640190fd5b6000611fcc6106e4565b600454909150611fed906001600160a01b031633308663ffffffff613def16565b600154611ffc5782915061209a565b612015816109c360015486612d4190919063ffffffff16565b915060006120496001546109c361203c61202d611859565b6008549063ffffffff612ce716565b869063ffffffff612d4116565b905080156120985733600090815260096020526040902054612071908263ffffffff612ce716565b33600090815260096020526040902055600854612094908263ffffffff612ce716565b6008555b505b336000908152600760205260409020546120ba908463ffffffff612ce716565b336000908152600760205260409020556006546120dd908463ffffffff612ce716565b6006556120ea3383613e4f565b6040805184815260208101849052815133927f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15928290030190a2506001600055919050565b600b818154811061213c57fe5b6000918252602090912001546001600160a01b0316905081565b6005546001600160a01b031633146121a3576040805162461bcd60e51b815260206004820152601a6024820152600080516020614173833981519152604482015290519081900360640190fd5b600480546040805163e6a4390560e01b81526001600160a01b0392831693810193909352908316602483015251600091735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9163e6a4390591604480820192602092909190829003018186803b15801561220f57600080fd5b505afa158015612223573d6000803e3d6000fd5b505050506040513d602081101561223957600080fd5b505190506001600160a01b03811661228a576040805162461bcd60e51b815260206004820152600f60248201526e2830b4b9103737ba1032bc34b9ba1760891b604482015290519081900360640190fd5b6122ba6001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d60001963ffffffff61372616565b6040805163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d6004820152600019602482015290516001600160a01b0383169163095ea7b39160448083019260209291908290030181600087803b15801561231e57600080fd5b505af1158015612332573d6000803e3d6000fd5b505050506040513d602081101561234857600080fd5b50600090505b600b548110156123cf57826001600160a01b0316600b828154811061236f57fe5b6000918252602090912001546001600160a01b031614156123c7576040805162461bcd60e51b815260206004820152600d60248201526c2830b4b91032bc34b9ba32b21760991b604482015290519081900360640190fd5b60010161234e565b5050600b80546001810182556000919091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b0392909216919091179055565b600b546000908210612477576040805162461bcd60e51b81526020600482015260186024820152772830b4b91034b73232bc1037baba1037b3103930b733b29760411b604482015290519081900360640190fd5b600454600b80546001600160a01b0390921691600091908590811061249857fe5b60009182526020808320909101546040805163e6a4390560e01b81526001600160a01b038781166004830152909216602483018190529051909450735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9263e6a439059260448082019391829003018186803b15801561250a57600080fd5b505afa15801561251e573d6000803e3d6000fd5b505050506040513d602081101561253457600080fd5b505160408051630240bc6b60e21b8152905191925060009182916001600160a01b03851691630902f1ac91600480820192606092909190829003018186803b15801561257f57600080fd5b505afa158015612593573d6000803e3d6000fd5b505050506040513d60608110156125a957600080fd5b5080516020909101516001600160701b03918216935016905060006125d061084685611193565b9050856001600160a01b0316846001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561261557600080fd5b505afa158015612629573d6000803e3d6000fd5b505050506040513d602081101561263f57600080fd5b50516001600160a01b031614156126d3576126cc846001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561268c57600080fd5b505afa1580156126a0573d6000803e3d6000fd5b505050506040513d60208110156126b657600080fd5b50516109c3600186901b8463ffffffff612d4116565b9650612752565b61274f846001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561270f57600080fd5b505afa158015612723573d6000803e3d6000fd5b505050506040513d602081101561273957600080fd5b50516109c3600185901b8463ffffffff612d4116565b96505b505050505050919050565b60096020526000908152604090205481565b600360209081526000928352604080842090915290825290205481565b6005546001600160a01b031633146127d9576040805162461bcd60e51b815260206004820152601a6024820152600080516020614173833981519152604482015290519081900360640190fd5b600b5480612820576040805162461bcd60e51b815260206004820152600f60248201526e2830b4b9399034b99032b6b83a3c9760891b604482015290519081900360640190fd5b60048054604080516370a0823160e01b81523093810193909352516001600160a01b039091169182916370a0823191602480820192602092909190829003018186803b15801561286f57600080fd5b505afa158015612883573d6000803e3d6000fd5b505050506040513d602081101561289957600080fd5b50518511156128e5576040805162461bcd60e51b81526020600482015260136024820152722737ba1032b737bab3b4103130b630b731b29760691b604482015290519081900360640190fd5b600b54831461293b576040805162461bcd60e51b815260206004820152601f60248201527f50726f706f7274696f6e7320696e646578206f7574206f662072616e67652e00604482015290519081900360640190fd5b6000805b83811015612aea5785858281811061295357fe5b905060200201356000141561296757612ae2565b61298c86868381811061297657fe5b9050602002013583612ce790919063ffffffff16565b9150600060016129bc60646109c38a8a878181106129a657fe5b905060200201358c612d4190919063ffffffff16565b901c9050806129cb5750612ae2565b6000600b83815481106129da57fe5b60009182526020822001546001600160a01b031691506129fb8683856131f2565b6040805162e8e33760e81b81526001600160a01b03898116600483015285166024820152604481018690526064810183905260006084820181905260a482018190523060c48301524260e483015291519293509091737a250d5630b4cf539739df2c5dacb4c659f2488d9163e8e337009161010480830192606092919082900301818787803b158015612a8d57600080fd5b505af1158015612aa1573d6000803e3d6000fd5b505050506040513d6060811015612ab757600080fd5b5060200151905080821115612add57612adb8388611846858563ffffffff612ef016565b505b505050505b60010161293f565b5060648114612b34576040805162461bcd60e51b815260206004820152601160248201527022b93937b910383937b837b93a34b7b71760791b604482015290519081900360640190fd5b505050505050565b6005546001600160a01b031681565b6004546001600160a01b031681565b6005546001600160a01b03163314612ba7576040805162461bcd60e51b815260206004820152601a6024820152600080516020614173833981519152604482015290519081900360640190fd5b6001600160a01b03821615801590612bc757506001600160a01b03811615155b612c0b576040805162461bcd60e51b815260206004820152601060248201526f24b73b30b634b21030b2323932b9b99760811b604482015290519081900360640190fd5b6001600160a01b038281166000908152600a60205260409020541615612c3957612c3782600154613076565b505b6040805163095ea7b360e01b81526001600160a01b038381166004830152600019602483015291519184169163095ea7b3916044808201926020929091908290030181600087803b158015612c8d57600080fd5b505af1158015612ca1573d6000803e3d6000fd5b505050506040513d6020811015612cb757600080fd5b50506001600160a01b039182166000908152600a6020526040902080546001600160a01b03191691909216179055565b600082820183811015610bb6576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600082612d5057506000610b37565b82820282848281612d5d57fe5b0414610bb65760405162461bcd60e51b81526004018080602001828103825260218152602001806141936021913960400191505060405180910390fd5b6000808211612df0576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481612dfb57fe5b04949350505050565b6001600160a01b038316612e495760405162461bcd60e51b81526004018080602001828103825260248152602001806141fa6024913960400191505060405180910390fd5b6001600160a01b038216612e8e5760405162461bcd60e51b81526004018080602001828103825260228152602001806141516022913960400191505060405180910390fd5b6001600160a01b03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000610bb683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613f41565b6001600160a01b038316612f775760405162461bcd60e51b81526004018080602001828103825260258152602001806141d56025913960400191505060405180910390fd5b6001600160a01b038216612fbc5760405162461bcd60e51b815260040180806020018281038252602381526020018061412e6023913960400191505060405180910390fd5b6001600160a01b038316600090815260026020526040902054612fe5908263ffffffff612ef016565b6001600160a01b03808516600090815260026020526040808220939093559084168152205461301a908263ffffffff612ce716565b6001600160a01b0380841660008181526002602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6001600160a01b038083166000908152600a602052604081205490911680156131eb576131316001546109c385846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156130f957600080fd5b505afa15801561310d573d6000803e3d6000fd5b505050506040513d602081101561312357600080fd5b50519063ffffffff612d4116565b915081156131eb57806001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561317f57600080fd5b505af1158015613193573d6000803e3d6000fd5b50505050806001600160a01b0316633d18b9126040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156131d257600080fd5b505af11580156131e6573d6000803e3d6000fd5b505050505b5092915050565b60045460009081906001600160a01b0386811691161461322c576001600160a01b038086166000908152600c602052604090205416613248565b6001600160a01b038085166000908152600c6020526040902054165b90506001600160a01b038116156134f1576001600160a01b0381166000908152600d6020526040812054600f0b90819081905b83600f0b81600f0b1215613345576000856001600160a01b031663c661065783600f0b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156132d257600080fd5b505afa1580156132e6573d6000803e3d6000fd5b505050506040513d60208110156132fc57600080fd5b505190506001600160a01b03808216908b16141561331d578193505061333d565b886001600160a01b0316816001600160a01b0316141561333b578192505b505b60010161327b565b5082600f0b82600f0b14158015613362575082600f0b81600f0b14155b156134ed57604080516370a0823160e01b815230600482015290516000916001600160a01b038a16916370a0823191602480820192602092909190829003018186803b1580156133b157600080fd5b505afa1580156133c5573d6000803e3d6000fd5b505050506040513d60208110156133db57600080fd5b505160408051630f7c084960e21b8152600f86810b810b600483015285810b900b6024820152604481018a905260006064820181905291519293506001600160a01b03881692633df021249260848084019391929182900301818387803b15801561344557600080fd5b505af1158015613459573d6000803e3d6000fd5b5050604080516370a0823160e01b815230600482015290516134e193508492506001600160a01b038c16916370a08231916024808301926020929190829003018186803b1580156134a957600080fd5b505afa1580156134bd573d6000803e3d6000fd5b505050506040513d60208110156134d357600080fd5b50519063ffffffff612ef016565b95505050505050610bb6565b5050505b6040805160028082526060808301845292602083019080388339019050509050858160008151811061351f57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050848160018151811061354d57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506060737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03166338ed17398660008530426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156136115781810151838201526020016135f9565b505050509050019650505050505050600060405180830381600087803b15801561363a57600080fd5b505af115801561364e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561367757600080fd5b810190808051604051939291908464010000000082111561369757600080fd5b9083019060208201858111156136ac57600080fd5b82518660208202830111640100000000821117156136c957600080fd5b82525081516020918201928201910280838360005b838110156136f65781810151838201526020016136de565b5050505090500160405250505090508060018151811061371257fe5b602002602001015193505050509392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261138e908490613fd8565b60048054600154604080516370a0823160e01b815230948101949094525160009384936001600160a01b0316926137d99290916109c391889186916370a0823191602480820192602092909190829003018186803b1580156130f957600080fd5b925060005b600b54811015613a15576000600b82815481106137f757fe5b60009182526020808320909101546040805163e6a4390560e01b81526001600160a01b038881166004830152909216602483018190529051909450735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9263e6a439059260448082019391829003018186803b15801561386957600080fd5b505afa15801561387d573d6000803e3d6000fd5b505050506040513d602081101561389357600080fd5b5051600154604080516370a0823160e01b815230600482015290519293506000926138f092916109c3918c916001600160a01b038816916370a0823191602480820192602092909190829003018186803b1580156130f957600080fd5b905061390c6138ff838a613076565b829063ffffffff612ce716565b90508061391b57505050613a0d565b60408051635d5155ef60e11b81526001600160a01b0387811660048301528516602482015260448101839052600060648201819052608482018190523060a48301524260c4830152825190928392737a250d5630b4cf539739df2c5dacb4c659f2488d9263baa2abde9260e48084019391929182900301818787803b1580156139a357600080fd5b505af11580156139b7573d6000803e3d6000fd5b505050506040513d60408110156139cd57600080fd5b5080516020909101519092509050613a056139e98689846131f2565b6139f98b8563ffffffff612ce716565b9063ffffffff612ce716565b985050505050505b6001016137de565b50604080516370a0823160e01b81523060048201529051600091731f9840a85d5af5bf1d1762f925bdaddc4201f984916370a0823191602480820192602092909190829003018186803b158015613a6b57600080fd5b505afa158015613a7f573d6000803e3d6000fd5b505050506040513d6020811015613a9557600080fd5b5051600154600854919250600091613abe91906109c3908990610c22908763ffffffff612ce716565b90508015613c12576001600160a01b0387166000908152600260209081526040808320546009909252822054613aff91906109c3908a63ffffffff612d4116565b6001600160a01b038916600090815260096020526040902054909150613b2b908263ffffffff612ef016565b6001600160a01b038916600090815260096020526040902055600854613b57908263ffffffff612ef016565b6008556000613b6c838363ffffffff612ef016565b905083811115613b795750825b8015613c0f576040805163a9059cbb60e01b81526001600160a01b038b166004820152602481018390529051731f9840a85d5af5bf1d1762f925bdaddc4201f9849163a9059cbb9160448083019260209291908290030181600087803b158015613be257600080fd5b505af1158015613bf6573d6000803e3d6000fd5b505050506040513d6020811015613c0c57600080fd5b50505b50505b6001600160a01b038716600090815260026020908152604080832054600790925290912054613c4c91906109c3908963ffffffff612d4116565b935083851115613cad576000613c7260646109c36014610c228a8a63ffffffff612ef016565b9050613c84868263ffffffff612ef016565b600554909650613ca7906001600160a01b0386811691168363ffffffff613d9d16565b50613cb1565b8493505b5050509250929050565b6001600160a01b038216613d005760405162461bcd60e51b81526004018080602001828103825260218152602001806141b46021913960400191505060405180910390fd5b6001600160a01b038216600090815260026020526040902054613d29908263ffffffff612ef016565b6001600160a01b038316600090815260026020526040902055600154613d55908263ffffffff612ef016565b6001556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261138e908490613fd8565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052613e49908590613fd8565b50505050565b6001600160a01b038216613eaa576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600154613ebd908263ffffffff612ce716565b6001556001600160a01b038216600090815260026020526040902054613ee9908263ffffffff612ce716565b6001600160a01b03831660008181526002602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008184841115613fd05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613f95578181015183820152602001613f7d565b50505050905090810190601f168015613fc25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60006060836001600160a01b0316836040518082805190602001908083835b602083106140165780518252601f199092019160209182019101613ff7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614078576040519150601f19603f3d011682016040523d82523d6000602084013e61407d565b606091505b5091509150816140d4576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115613e49578080602001905160208110156140f057600080fd5b5051613e495760405162461bcd60e51b815260040180806020018281038252602a81526020018061421e602a913960400191505060405180910390fdfe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734f6e6c792063616c6c656420627920436f6e74726f6c6c65722e000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158201a08d8e3abfaa2696a22890f7a9fc8c1722c9d5f369ab8b5e44a3c6edf37c9e364736f6c63430005110032
Deployed Bytecode Sourcemap
14707:15343:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14707:15343:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24368:819;;;:::i;:::-;;;;;;;;;;;;;;;;10561:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;10561:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12338:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12338:147:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;15203:27;;;:::i;15318:22::-;;;:::i;10698:23::-;;;:::i;12640:230::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12640:230:0;;;;;;;;;;;;;;;;;:::i;20104:332::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20104:332:0;-1:-1:-1;;;;;20104:332:0;;:::i;27903:957::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27903:957:0;;:::i;:::-;;21189:540;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21189:540:0;;:::i;20444:213::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20444:213:0;-1:-1:-1;;;;;20444:213:0;;:::i;10656:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18645:364;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18645:364:0;-1:-1:-1;;;;;18645:364:0;;:::i;25195:87::-;;;:::i;26445:1450::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26445:1450:0;;;;;;;;;;;;:::i;19575:521::-;;;:::i;10728:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10728:41:0;-1:-1:-1;;;;;10728:41:0;;:::i;25290:560::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;25290:560:0;;;;;;;;;;;;;;;;;;;:::i;15437:42::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15437:42:0;-1:-1:-1;;;;;15437:42:0;;:::i;:::-;;;;-1:-1:-1;;;;;15437:42:0;;;;;;;;;;;;;;15237:45;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15237:45:0;-1:-1:-1;;;;;15237:45:0;;:::i;10609:40::-;;;:::i;15543:45::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15543:45:0;-1:-1:-1;;;;;15543:45:0;;:::i;19017:550::-;;;:::i;12493:139::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12493:139:0;;;;;;;;:::i;16184:913::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16184:913:0;;:::i;15488:22::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15488:22:0;;:::i;25858:579::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25858:579:0;-1:-1:-1;;;;;25858:579:0;;:::i;23649:711::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23649:711:0;;:::i;15347:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15347:41:0;-1:-1:-1;;;;;15347:41:0;;:::i;10776:61::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10776:61:0;;;;;;;;;;:::i;17107:1149::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17107:1149:0;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;17107:1149:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17107:1149:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;17107:1149:0;;-1:-1:-1;17107:1149:0;-1:-1:-1;17107:1149:0;:::i;15171:25::-;;;:::i;15144:20::-;;;:::i;18264:373::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18264:373:0;;;;;;;;;;:::i;24368:819::-;24453:5;;24411:12;;-1:-1:-1;;;;;24453:5:0;24411:12;24469:638;24485:5;:12;24483:14;;24469:638;;;24518:14;24535:5;24541:1;24535:8;;;;;;;;;;;;;;;;;;;;24595:58;;;-1:-1:-1;;;24595:58:0;;-1:-1:-1;;;;;24595:58:0;;;;;;;24535:8;;;24595:58;;;;;;;;24535:8;;-1:-1:-1;14870:42:0;;24595;;:58;;;;;;;;;;;14870:42;24595:58;;;5:2:-1;;;;30:1;27;20:12;5:2;24595:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24595:58:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24595:58:0;24704:18;;;-1:-1:-1;;;24704:18:0;;;;24595:58;;-1:-1:-1;24670:13:0;;;;-1:-1:-1;;;;;24704:16:0;;;;;:18;;;;;;;;;;;;;;;:16;:18;;;5:2:-1;;;;30:1;27;20:12;5:2;24704:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24704:18:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24704:18:0;;;;;;;-1:-1:-1;;;;;24669:53:0;;;;-1:-1:-1;24669:53:0;;-1:-1:-1;24737:14:0;24754:61;24788:26;24808:4;24788:11;:26::i;:::-;24754:29;;;-1:-1:-1;;;24754:29:0;;24777:4;24754:29;;;;;;-1:-1:-1;;;;;24754:14:0;;;;;:29;;;;;;;;;;;;;;:14;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;24754:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24754:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24754:29:0;;:61;:33;:61;:::i;:::-;24737:78;;24851:6;-1:-1:-1;;;;;24834:23:0;:4;-1:-1:-1;;;;;24834:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24834:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24834:13:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24834:13:0;-1:-1:-1;;;;;24834:23:0;;24830:265;;;24887:67;24899:54;24934:4;-1:-1:-1;;;;;24934:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24934:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24934:18:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24934:18:0;24899:30;24912:1;24900:13;;;24919:9;24899:30;:19;:30;:::i;:::-;:34;:54;:34;:54;:::i;:::-;24887:7;;:67;:11;:67;:::i;:::-;24877:77;;24830:265;;;25028:67;25040:54;25075:4;-1:-1:-1;;;;;25075:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25075:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25075:18:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25075:18:0;25040:30;25053:1;25041:13;;;25060:9;25040:30;:19;:30;:::i;25028:67::-;25018:77;;24830:265;-1:-1:-1;;24499:3:0;;;;;-1:-1:-1;24469:638:0;;-1:-1:-1;;24469:638:0;;-1:-1:-1;25139:39:0;;;-1:-1:-1;;;25139:39:0;;25172:4;25139:39;;;;;;25127:52;;-1:-1:-1;;;;;25139:24:0;;;;;:39;;;;;;;;;;;;;;;:24;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;25139:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25139:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25139:39:0;25127:7;;:52;:11;:52;:::i;:::-;25117:62;;24368:819;;:::o;10561:41::-;;;;;;;;;;;;;;-1:-1:-1;;;10561:41:0;;;;:::o;12338:147::-;12402:4;12419:36;12428:10;12440:7;12449:5;12419:8;:36::i;:::-;-1:-1:-1;12473:4:0;12338:147;;;;;:::o;15203:27::-;;;;:::o;15318:22::-;;;;:::o;10698:23::-;;;;:::o;12640:230::-;-1:-1:-1;;;;;12765:15:0;;12718:4;12765:15;;;:9;:15;;;;;;;;12781:10;12765:27;;;;;;;;:38;;12797:5;12765:38;:31;:38;:::i;:::-;-1:-1:-1;;;;;12735:15:0;;;;;;:9;:15;;;;;;;;12751:10;12735:27;;;;;;;:68;12814:26;12745:4;12830:2;12834:5;12814:9;:26::i;:::-;-1:-1:-1;12858:4:0;12640:230;;;;;;:::o;20104:332::-;-1:-1:-1;;;;;20189:18:0;;20163:11;20189:18;;;:9;:18;;;;;;:22;20186:243;;20227:14;20244:17;:15;:17::i;:::-;20349:11;;-1:-1:-1;;;;;20325:18:0;;20276:16;20325:18;;;:9;:18;;;;;;20295:10;;20227:34;;-1:-1:-1;20276:16:0;;20295:66;;20349:11;20295:49;;:25;;20227:34;20295:25;:14;:25;:::i;:::-;:29;:49;:29;:49;:::i;:66::-;-1:-1:-1;;;;;20401:15:0;;;;;;:6;:15;;;;;;20276:85;;-1:-1:-1;20385:32:0;;20276:85;;20385:32;:15;:32;:::i;:::-;20376:41;;20186:243;;;20104:332;;;:::o;27903:957::-;15704:10;;-1:-1:-1;;;;;15704:10:0;15690;:24;15682:63;;;;;-1:-1:-1;;;15682:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15682:63:0;;;;;;;;;;;;;;;27986:5;:12;27978:20;;27970:57;;;;;-1:-1:-1;;;27970:57:0;;;;;;;;;;;;-1:-1:-1;;;27970:57:0;;;;;;;;;;;;;;;28057:5;;28090;:12;;-1:-1:-1;;;;;28057:5:0;;;;28040:14;;28090:5;28096;;28090:12;;;;;;;;;;;;;;;;;;28150:58;;;-1:-1:-1;;;28150:58:0;;-1:-1:-1;;;;;28150:58:0;;;;;;;28090:12;;;28150:58;;;;;;;;28090:12;;-1:-1:-1;14870:42:0;;28150;;:58;;;;;;;;;;;14870:42;28150:58;;;5:2:-1;;;;30:1;27;20:12;5:2;28150:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28150:58:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28150:58:0;28243:11;;28150:58;;-1:-1:-1;28220:35:0;;28150:58;;28220:16;:35::i;:::-;-1:-1:-1;28283:29:0;;;-1:-1:-1;;;28283:29:0;;28306:4;28283:29;;;;;;28266:14;;-1:-1:-1;;;;;28283:14:0;;;;;:29;;;;;;;;;;;;;;;:14;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;28283:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28283:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28283:29:0;;-1:-1:-1;28328:13:0;;28325:342;;28388:199;;;-1:-1:-1;;;28388:199:0;;-1:-1:-1;;;;;28388:199:0;;;;;;;;;;;;;;;;;;;28358:12;28388:199;;;;;;;;;;;;28550:4;28388:199;;;;28557:15;28388:199;;;;;;28358:12;;;;14956:42;;28388:51;;:199;;;;;;;;;;;;;28358:12;14956:42;28388:199;;;5:2:-1;;;;30:1;27;20:12;5:2;28388:199:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28388:199:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;28388:199:0;;;;;;;;;-1:-1:-1;28388:199:0;-1:-1:-1;28612:43:0;28624:30;28630:6;28638;28388:199;28624:5;:30::i;:::-;28612:7;;:43;:11;:43;:::i;:::-;-1:-1:-1;;;28325:342:0;28677:48;-1:-1:-1;;;;;28677:26:0;;14956:42;28723:1;28677:48;:26;:48;:::i;:::-;28752:5;28738:93;28763:5;:12;-1:-1:-1;;28763:14:0;28759:18;;28738:93;;;28809:5;28815:1;28817;28815:3;28809:10;;;;;;;;;;;;;;;;;;28798:5;:8;;-1:-1:-1;;;;;28809:10:0;;;;28804:1;;28798:8;;;;;;;;;;;;;;;:21;;-1:-1:-1;;;;;;28798:21:0;-1:-1:-1;;;;;28798:21:0;;;;;;;;;;-1:-1:-1;28779:3:0;28738:93;;;;28841:5;:11;;;;;;;;;;;;;;;;-1:-1:-1;;28841:11:0;;;;;-1:-1:-1;;;;;;28841:11:0;;;;;;-1:-1:-1;;;;;27903:957:0:o;21189:540::-;21247:11;13752:1;14358:7;;:19;;14350:63;;;;;-1:-1:-1;;;14350:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13752:1;14491:7;:18;21279:9;;;;;:43;;-1:-1:-1;21311:10:0;21301:21;;;;:9;:21;;;;;;21292:30;;;21279:43;21271:75;;;;;-1:-1:-1;;;21271:75:0;;;;;;;;;;;;-1:-1:-1;;;21271:75:0;;;;;;;;;;;;;;;21359:16;21410:28;21420:10;21432:5;21410:9;:28::i;:::-;21489:10;21476:24;;;;:12;:24;;;;;;21386:52;;-1:-1:-1;21386:52:0;-1:-1:-1;21476:41:0;;21386:52;21476:41;:28;:41;:::i;:::-;21462:10;21449:24;;;;:12;:24;;;;;:68;21546:15;;:32;;21566:11;21546:32;:19;:32;:::i;:::-;21528:15;:50;21589:24;21595:10;21607:5;21589;:24::i;:::-;21631:5;;21624:46;;-1:-1:-1;;;;;21631:5:0;21651:10;21663:6;21624:46;:26;:46;:::i;:::-;21686:35;;;;;;;;;;;;;;21695:10;;21686:35;;;;;;;;-1:-1:-1;13708:1:0;14670:7;:22;21189:540;;-1:-1:-1;21189:540:0:o;20444:213::-;-1:-1:-1;;;;;20528:13:0;;;20499:14;20528:13;;;:7;:13;;;;;;20499:14;;20528:13;:27;20525:125;;-1:-1:-1;;;;;20599:13:0;;;;;;;:7;:13;;;;;;;;;;20583:55;;-1:-1:-1;;;20583:55:0;;20632:4;20583:55;;;;;;20599:13;;;20583:40;;:55;;;;;20599:13;20583:55;;;;;;20599:13;20583:55;;;5:2:-1;;;;30:1;27;20:12;5:2;20583:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20583:55:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20583:55:0;;20444:213;-1:-1:-1;;20444:213:0:o;10656:35::-;10689:2;10656:35;:::o;18645:364::-;15704:10;;-1:-1:-1;;;;;15704:10:0;15690;:24;15682:63;;;;;-1:-1:-1;;;15682:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15682:63:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;18737:13:0;;;18709:25;18737:13;;;:7;:13;;;;;;;18764:31;;18761:241;;18828:45;;;-1:-1:-1;;;18828:45:0;;18867:4;18828:45;;;;;;18811:14;;-1:-1:-1;;;;;18828:30:0;;;;;:45;;;;;;;;;;;;;;;:30;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;18828:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18828:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18828:45:0;;-1:-1:-1;18891:13:0;;18888:103;;18940:17;-1:-1:-1;;;;;18924:40:0;;18965:9;18924:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18924:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18924:51:0;;;;18888:103;18761:241;;15756:1;18645:364;:::o;25195:87::-;25262:5;:12;25195:87;:::o;26445:1450::-;15704:10;;-1:-1:-1;;;;;15704:10:0;15690;:24;15682:63;;;;;-1:-1:-1;;;15682:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15682:63:0;;;;;;;;;;;;;;;26607:5;:12;26592:27;;26584:64;;;;;-1:-1:-1;;;26584:64:0;;;;;;;;;;;;-1:-1:-1;;;26584:64:0;;;;;;;;;;;;;;;26678:5;;26711;:19;;-1:-1:-1;;;;;26678:5:0;;;;26661:14;;26711:5;26717:12;;26711:19;;;;;;;;;;;;;;;;;;26778:58;;;-1:-1:-1;;;26778:58:0;;-1:-1:-1;;;;;26778:58:0;;;;;;;26711:19;;;26778:58;;;;;;;;26711:19;;-1:-1:-1;14870:42:0;;26778;;:58;;;;;;;;;;;14870:42;26778:58;;;5:2:-1;;;;30:1;27;20:12;5:2;26778:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26778:58:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26778:58:0;;-1:-1:-1;26850:14:0;26867:26;26778:58;26867:11;:26::i;:::-;26850:43;-1:-1:-1;26907:13:0;;26904:64;;-1:-1:-1;;;;;26938:22:0;;;;;;;:7;:22;;;;;;;26922:46;;-1:-1:-1;;;26922:46:0;;;;26938:22;;;26922:44;;:46;;;;;26938:22;;26922:46;;;;;;26938:22;;26922:46;;;5:2:-1;;;;30:1;27;20:12;5:2;26922:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26922:46:0;;;;26904:64;27002:29;;;-1:-1:-1;;;27002:29:0;;27025:4;27002:29;;;;;;-1:-1:-1;;;;;27002:14:0;;;;;:29;;;;;;;;;;;;;;:14;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;27002:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27002:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27002:29:0;26989:42;;;;;:59;;;27047:1;27035:9;:13;26989:59;26981:93;;;;;-1:-1:-1;;;26981:93:0;;;;;;;;;;;;-1:-1:-1;;;26981:93:0;;;;;;;;;;;;;;;27118:179;;;-1:-1:-1;;;27118:179:0;;-1:-1:-1;;;;;27118:179:0;;;;;;;;;;;;;;;;;;;27088:12;27118:179;;;;;;;;;;;;27264:4;27118:179;;;;27271:15;27118:179;;;;;;27088:12;;;;14956:42;;27118:51;;:179;;;;;;;;;;;;;27088:12;14956:42;27118:179;;;5:2:-1;;;;30:1;27;20:12;5:2;27118:179:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27118:179:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27118:179:0;;;;;;;;;-1:-1:-1;27118:179:0;-1:-1:-1;27318:43:0;27330:30;27336:6;27344;27118:179;27330:5;:30::i;27318:43::-;27423:5;:12;27308:53;;-1:-1:-1;27410:25:0;;;;:54;;;27452:12;27439:9;:25;27410:54;27407:66;;;27466:7;;;;;;;;27407:66;27494:5;27500:9;27494:16;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27494:16:0;;-1:-1:-1;27494:16:0;27531:12;;;;;27564:30;27570:6;27494:16;27531:12;27564:5;:30::i;:::-;27626:183;;;-1:-1:-1;;;27626:183:0;;-1:-1:-1;;;;;27626:183:0;;;;;;;;;;;;;;;;;;;;;;;;;27609:12;27626:183;;;;;;;;;;;;27776:4;27626:183;;;;27783:15;27626:183;;;;;;27554:40;;-1:-1:-1;27609:12:0;;14956:42;;27626:48;;:183;;;;;;;;;;;;;;27609:12;14956:42;27626:183;;;5:2:-1;;;;30:1;27;20:12;5:2;27626:183:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27626:183:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27626:183:0;;;;-1:-1:-1;27825:17:0;;;27822:65;;;27844:43;27850:6;27858;27866:20;:7;27878;27866:20;:11;:20;:::i;:::-;27844:5;:43::i;:::-;;27822:65;15756:1;;;;;;;26445:1450;;;:::o;19575:521::-;19654:36;;;-1:-1:-1;;;19654:36:0;;19684:4;19654:36;;;;;;19622:11;;15028:42;;19654:21;;:36;;;;;;;;;;;;;;;15028:42;19654:36;;;5:2:-1;;;;30:1;27;20:12;5:2;19654:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19654:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19654:36:0;;-1:-1:-1;19705:6:0;19701:388;19721:5;:12;19717:16;;19701:388;;;19834:5;;19841;:8;;19754:19;;14870:42;;19791;;-1:-1:-1;;;;;19834:5:0;;;;19847:1;;19841:8;;;;;;;;;;;;;;;;;19791:59;;;-1:-1:-1;;;;;;19791:59:0;;;;;;;-1:-1:-1;;;;;19791:59:0;;;;;;;19841:8;;;;19791:59;;;;;;;;;;;;;;;;;;;5:2:-1;;;;30:1;27;20:12;5:2;19791:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19791:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19791:59:0;-1:-1:-1;;;;;19894:22:0;;;19866:25;19894:22;;;:7;19791:59;19894:22;;;;;19791:59;;-1:-1:-1;19894:22:0;19934:31;;19931:147;;20005:56;;;-1:-1:-1;;;20005:56:0;;20055:4;20005:56;;;;;;19994:68;;-1:-1:-1;;;;;20005:41:0;;;;;:56;;;;;;;;;;;;;;;:41;:56;;;5:2:-1;;;;30:1;27;20:12;5:2;20005:56:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20005:56:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20005:56:0;19994:6;;:68;:10;:68;:::i;:::-;19985:77;;19931:147;-1:-1:-1;;19735:3:0;;19701:388;;;;19575:521;:::o;10728:41::-;;;;;;;;;;;;;:::o;25290:560::-;15704:10;;-1:-1:-1;;;;;15704:10:0;15690;:24;15682:63;;;;;-1:-1:-1;;;15682:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15682:63:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;25399:17:0;;;;;;;:9;:17;;;;;:30;;-1:-1:-1;;;;;;25399:30:0;;;;;;;;;25443:24;25440:403;;25494:5;;;25487:50;;;-1:-1:-1;;;25487:50:0;;25519:4;25487:50;;;;;;;-1:-1:-1;;;;;25487:50:0;;;;;;;;;25494:5;;;25487:23;;:50;;;;;;;;;;;;;;25494:5;25487:50;;;5:2:-1;;;;30:1;27;20:12;5:2;25487:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25487:50:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25487:50:0;25484:141;;25569:5;;25562:47;;-1:-1:-1;;;;;25569:5:0;25588:10;-1:-1:-1;;25562:47:0;:25;:47;:::i;:::-;25642:51;;;-1:-1:-1;;;25642:51:0;;25675:4;25642:51;;;;-1:-1:-1;;;;;25642:51:0;;;;;;;;;:24;;;;;;:51;;;;;;;;;;;;;;;:24;:51;;;5:2:-1;;;;30:1;27;20:12;5:2;25642:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25642:51:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25642:51:0;25639:143;;25718:48;-1:-1:-1;;;;;25718:26:0;;25745:10;-1:-1:-1;;25718:48:0;:26;:48;:::i;:::-;-1:-1:-1;;;;;25796:25:0;;;;;;:13;:25;;;;;:35;;;;;;;;-1:-1:-1;;25796:35:0;;;;;;25290:560;;;:::o;15437:42::-;;;;;;;;;;;;-1:-1:-1;;;;;15437:42:0;;:::o;15237:45::-;;;;;;;;;;;;;:::o;10609:40::-;;;;;;;;;;;;;;-1:-1:-1;;;10609:40:0;;;;:::o;15543:45::-;;;;;;;;;;;;-1:-1:-1;;;;;15543:45:0;;:::o;19017:550::-;15704:10;;-1:-1:-1;;;;;15704:10:0;15690;:24;15682:63;;;;;-1:-1:-1;;;15682:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15682:63:0;;;;;;;;;;;;;;;19078:6;19074:486;19094:5;:12;19090:16;;19074:486;;;19207:5;;19214;:8;;19127:19;;14870:42;;19164;;-1:-1:-1;;;;;19207:5:0;;;;19220:1;;19214:8;;;;;;;;;;;;;;;;;19164:59;;;-1:-1:-1;;;;;;19164:59:0;;;;;;;-1:-1:-1;;;;;19164:59:0;;;;;;;19214:8;;;;19164:59;;;;;;;;;;;;;;;;;;;5:2:-1;;;;30:1;27;20:12;5:2;19164:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19164:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19164:59:0;-1:-1:-1;;;;;19267:22:0;;;19239:25;19267:22;;;:7;19164:59;19267:22;;;;;19164:59;;-1:-1:-1;19267:22:0;19307:31;;19304:245;;19375:29;;;-1:-1:-1;;;19375:29:0;;19398:4;19375:29;;;;;;19358:14;;-1:-1:-1;;;;;19375:14:0;;;;;:29;;;;;;;;;;;;;;;:14;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;19375:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19375:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19375:29:0;;-1:-1:-1;19426:13:0;;19423:111;;19479:17;-1:-1:-1;;;;;19463:40:0;;19504:9;19463:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19463:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19463:51:0;;;;19423:111;19304:245;;-1:-1:-1;;19108:3:0;;19074:486;;;;19017:550::o;12493:139::-;12553:4;12570:32;12580:10;12592:2;12596:5;12570:9;:32::i;16184:913::-;16242:10;13752:1;14358:7;;:19;;14350:63;;;;;-1:-1:-1;;;14350:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13752:1;14491:7;:18;16273:10;16265:42;;;;;-1:-1:-1;;;16265:42:0;;;;;;;;;;;;-1:-1:-1;;;16265:42:0;;;;;;;;;;;;;;;16318:18;16339:13;:11;:13::i;:::-;16370:5;;16318:34;;-1:-1:-1;16363:65:0;;-1:-1:-1;;;;;16370:5:0;16394:10;16414:4;16421:6;16363:65;:30;:65;:::i;:::-;16444:11;;16441:432;;16484:6;16476:14;;16441:432;;;16539:42;16567:13;16539:23;16550:11;;16539:6;:10;;:23;;;;:::i;:42::-;16531:50;;16626:9;16638:61;16687:11;;16638:44;16648:33;16663:17;:15;:17::i;:::-;16648:10;;;:33;:14;:33;:::i;:::-;16638:5;;:44;:9;:44;:::i;:61::-;16626:73;-1:-1:-1;16717:8:0;;16714:148;;16773:10;16766:18;;;;:6;:18;;;;;;:28;;16789:4;16766:28;:22;:28;:::i;:::-;16752:10;16745:18;;;;:6;:18;;;;;:49;16826:10;;:20;;16841:4;16826:20;:14;:20;:::i;:::-;16813:10;:33;16714:148;16441:432;;16925:10;16912:24;;;;:12;:24;;;;;;:36;;16941:6;16912:36;:28;:36;:::i;:::-;16898:10;16885:24;;;;:12;:24;;;;;:63;16977:15;;:27;;16997:6;16977:27;:19;:27;:::i;:::-;16959:15;:45;17015:24;17021:10;17033:5;17015;:24::i;:::-;17055:34;;;;;;;;;;;;;;17063:10;;17055:34;;;;;;;;-1:-1:-1;13708:1:0;14670:7;:22;16184:913;;-1:-1:-1;16184:913:0:o;15488:22::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15488:22:0;;-1:-1:-1;15488:22:0;:::o;25858:579::-;15704:10;;-1:-1:-1;;;;;15704:10:0;15690;:24;15682:63;;;;;-1:-1:-1;;;15682:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15682:63:0;;;;;;;;;;;;;;;25984:5;;;25941:57;;;-1:-1:-1;;;25941:57:0;;-1:-1:-1;;;;;25984:5:0;;;25941:57;;;;;;;;;;;;;;;25926:12;;14870:42;;25941;;:57;;;;;;;;;;;;;;;14870:42;25941:57;;;5:2:-1;;;;30:1;27;20:12;5:2;25941:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25941:57:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25941:57:0;;-1:-1:-1;;;;;;26017:18:0;;26009:46;;;;;-1:-1:-1;;;26009:46:0;;;;;;;;;;;;-1:-1:-1;;;26009:46:0;;;;;;;;;;;;;;;26115:55;-1:-1:-1;;;;;26115:26:0;;14956:42;-1:-1:-1;;26115:55:0;:26;:55;:::i;:::-;26221:57;;;-1:-1:-1;;;26221:57:0;;14956:42;26221:57;;;;-1:-1:-1;;26221:57:0;;;;;;-1:-1:-1;;;;;26221:28:0;;;;;:57;;;;;;;;;;;;;;-1:-1:-1;26221:28:0;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;26221:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26221:57:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26295:6:0;;-1:-1:-1;26291:110:0;26311:5;:12;26307:16;;26291:110;;;26365:6;-1:-1:-1;;;;;26353:18:0;:5;26359:1;26353:8;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26353:8:0;:18;;26345:44;;;;;-1:-1:-1;;;26345:44:0;;;;;;;;;;;;-1:-1:-1;;;26345:44:0;;;;;;;;;;;;;;;26325:3;;26291:110;;;-1:-1:-1;;26411:5:0;27:10:-1;;39:1;23:18;;45:23;;-1:-1;26411:18:0;;;;;;;;-1:-1:-1;;;;;;26411:18:0;-1:-1:-1;;;;;26411:18:0;;;;;;;;;;25858:579::o;23649:711::-;23738:5;:12;23697;;23730:20;;23722:57;;;;;-1:-1:-1;;;23722:57:0;;;;;;;;;;;;-1:-1:-1;;;23722:57:0;;;;;;;;;;;;;;;23807:5;;23840;:12;;-1:-1:-1;;;;;23807:5:0;;;;23790:14;;23840:5;23846;;23840:12;;;;;;;;;;;;;;;;;;23900:58;;;-1:-1:-1;;;23900:58:0;;-1:-1:-1;;;;;23900:58:0;;;;;;;23840:12;;;23900:58;;;;;;;;23840:12;;-1:-1:-1;14870:42:0;;23900;;:58;;;;;;;;;;;14870:42;23900:58;;;5:2:-1;;;;30:1;27;20:12;5:2;23900:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23900:58:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23900:58:0;24005:18;;;-1:-1:-1;;;24005:18:0;;;;23900:58;;-1:-1:-1;23971:13:0;;;;-1:-1:-1;;;;;24005:16:0;;;;;:18;;;;;;;;;;;;;;;:16;:18;;;5:2:-1;;;;30:1;27;20:12;5:2;24005:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24005:18:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24005:18:0;;;;;;;-1:-1:-1;;;;;23970:53:0;;;;-1:-1:-1;23970:53:0;;-1:-1:-1;24036:14:0;24053:61;24087:26;24107:4;24087:11;:26::i;24053:61::-;24036:78;;24146:6;-1:-1:-1;;;;;24129:23:0;:4;-1:-1:-1;;;;;24129:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24129:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24129:13:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24129:13:0;-1:-1:-1;;;;;24129:23:0;;24125:227;;;24178:54;24213:4;-1:-1:-1;;;;;24213:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24213:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24213:18:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24213:18:0;24178:30;24191:1;24179:13;;;24198:9;24178:30;:19;:30;:::i;:54::-;24168:64;;24125:227;;;24298:54;24333:4;-1:-1:-1;;;;;24333:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24333:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24333:18:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24333:18:0;24298:30;24311:1;24299:13;;;24318:9;24298:30;:19;:30;:::i;:54::-;24288:64;;24125:227;23649:711;;;;;;;;;:::o;15347:41::-;;;;;;;;;;;;;:::o;10776:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;17107:1149::-;15704:10;;-1:-1:-1;;;;;15704:10:0;15690;:24;15682:63;;;;;-1:-1:-1;;;15682:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15682:63:0;;;;;;;;;;;;;;;17211:5;:12;17242:5;17234:33;;;;;-1:-1:-1;;;17234:33:0;;;;;;;;;;;;-1:-1:-1;;;17234:33:0;;;;;;;;;;;;;;;17295:5;;;17329:39;;;-1:-1:-1;;;17329:39:0;;17362:4;17329:39;;;;;;;;-1:-1:-1;;;;;17295:5:0;;;;;;17329:24;;:39;;;;;;;;;;;;;;;17295:5;17329:39;;;5:2:-1;;;;30:1;27;20:12;5:2;17329:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17329:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17329:39:0;17319:49;;;17311:81;;;;;-1:-1:-1;;;17311:81:0;;;;;;;;;;;;-1:-1:-1;;;17311:81:0;;;;;;;;;;;;;;;17433:5;:12;17411:34;;17403:78;;;;;-1:-1:-1;;;17403:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17494:11;;17516:675;17532:3;17530:1;:5;17516:675;;;17559:11;;17571:1;17559:14;;;;;;;;;;;;;17577:1;17559:19;17556:32;;;17580:8;;17556:32;17612:26;17623:11;;17635:1;17623:14;;;;;;;;;;;;;17612:6;:10;;:26;;;;:::i;:::-;17603:35;;17655:12;17715:1;17671:39;15103:3;17671:26;17682:11;;17694:1;17682:14;;;;;;;;;;;;;17671:6;:10;;:26;;;;:::i;:39::-;17670:46;;;-1:-1:-1;17734:12:0;17731:25;;17748:8;;;17731:25;17773:14;17790:5;17796:1;17790:8;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17790:8:0;;-1:-1:-1;17828:30:0;17834:6;17790:8;17850:7;17828:5;:30::i;:::-;17894:203;;;-1:-1:-1;;;17894:203:0;;-1:-1:-1;;;;;17894:203:0;;;;;;;;;;;;;;;;;;;;;;;;;17877:12;17894:203;;;;;;;;;;;;18060:4;17894:203;;;;18067:15;17894:203;;;;;;17813:45;;-1:-1:-1;17877:12:0;;14956:42;;17894:48;;:203;;;;;;;;;;;;;;17877:12;14956:42;17894:203;;;5:2:-1;;;;30:1;27;20:12;5:2;17894:203:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17894:203:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17894:203:0;;;;-1:-1:-1;18117:17:0;;;18114:65;;;18136:43;18142:6;18150;18158:20;:7;18170;18158:20;:11;:20;:::i;18136:43::-;;18114:65;17516:675;;;;;17537:3;;17516:675;;;;15103:3;18209:6;:17;18201:47;;;;;-1:-1:-1;;;18201:47:0;;;;;;;;;;;;-1:-1:-1;;;18201:47:0;;;;;;;;;;;;;;;15756:1;;;17107:1149;;;:::o;15171:25::-;;;-1:-1:-1;;;;;15171:25:0;;:::o;15144:20::-;;;-1:-1:-1;;;;;15144:20:0;;:::o;18264:373::-;15704:10;;-1:-1:-1;;;;;15704:10:0;15690;:24;15682:63;;;;;-1:-1:-1;;;15682:63:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15682:63:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;18359:17:0;;;;;;:42;;-1:-1:-1;;;;;;18380:21:0;;;;18359:42;18351:71;;;;;-1:-1:-1;;;18351:71:0;;;;;;;;;;;;-1:-1:-1;;;18351:71:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;18438:13:0;;;18463:1;18438:13;;;:7;:13;;;;;;;:27;18435:109;;18481:51;18513:4;18520:11;;18481:16;:51::i;:::-;;18435:109;18554:40;;;-1:-1:-1;;;18554:40:0;;-1:-1:-1;;;;;18554:40:0;;;;;;;-1:-1:-1;;18554:40:0;;;;;;:20;;;;;;:40;;;;;;;;;;;;;;;-1:-1:-1;18554:20:0;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18554:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18554:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;;18605:13:0;;;;;;;:7;18554:40;18605:13;;;;:24;;-1:-1:-1;;;;;;18605:24:0;;;;;;;;18264:373::o;4232:181::-;4290:7;4322:5;;;4346:6;;;;4338:46;;;;;-1:-1:-1;;;4338:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;5586:471;5644:7;5889:6;5885:47;;-1:-1:-1;5919:1:0;5912:8;;5885:47;5956:5;;;5960:1;5956;:5;:1;5980:5;;;;;:10;5972:56;;;;-1:-1:-1;;;5972:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6533:266;6591:7;6623:1;6619;:5;6611:44;;;;;-1:-1:-1;;;6611:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6666:9;6682:1;6678;:5;;;;;;;6533:266;-1:-1:-1;;;;6533:266:0:o;11617:329::-;-1:-1:-1;;;;;11706:19:0;;11698:68;;;;-1:-1:-1;;;11698:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11785:21:0;;11777:68;;;;-1:-1:-1;;;11777:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11858:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;11907:31;;;;;;;;;;;;;;;;;11617:329;;;:::o;4696:136::-;4754:7;4781:43;4785:1;4788;4781:43;;;;;;;;;;;;;;;;;:3;:43::i;11954:376::-;-1:-1:-1;;;;;12038:18:0;;12030:68;;;;-1:-1:-1;;;12030:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12117:16:0;;12109:64;;;;-1:-1:-1;;;12109:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12204:15:0;;;;;;:9;:15;;;;;;:26;;12224:5;12204:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;12186:15:0;;;;;;;:9;:15;;;;;;:44;;;;12257:13;;;;;;;:24;;12275:5;12257:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;12241:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;12297:25;;;;;;;12241:13;;12297:25;;;;;;;;;;;;;11954:376;;;:::o;20665:516::-;-1:-1:-1;;;;;20795:22:0;;;20741:14;20795:22;;;:7;:22;;;;;;20741:14;;20795:22;20831:31;;20828:346;;20890:87;20965:11;;20890:70;20954:5;20906:17;-1:-1:-1;;;;;20890:44:0;;20943:4;20890:59;;;;;;;;;;;;;-1:-1:-1;;;;;20890:59:0;-1:-1:-1;;;;;20890:59:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20890:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20890:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20890:59:0;;:70;:63;:70;:::i;:87::-;20878:99;-1:-1:-1;20995:13:0;;20992:171;;21044:17;-1:-1:-1;;;;;21028:43:0;;21072:9;21028:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21028:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21028:54:0;;;;21117:17;-1:-1:-1;;;;;21101:44:0;;:46;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21101:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21101:46:0;;;;20992:171;20665:516;;;;;:::o;28868:1179::-;28991:5;;28948:4;;;;-1:-1:-1;;;;;28980:16:0;;;28991:5;;28980:16;:59;;-1:-1:-1;;;;;29021:18:0;;;;;;;:9;:18;;;;;;;28980:59;;;-1:-1:-1;;;;;28999:19:0;;;;;;;:9;:19;;;;;;;28980:59;28965:74;-1:-1:-1;;;;;;29053:18:0;;;29050:696;;-1:-1:-1;;;;;29104:19:0;;29087:14;29104:19;;;:13;:19;;;;;;;;;;;;;29213:218;29231:7;29229:9;;:1;:9;;;29213:218;;;29263:12;29285:4;-1:-1:-1;;;;;29278:18:0;;29302:1;29297:7;;29278:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29278:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29278:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29278:27:0;;-1:-1:-1;;;;;;29327:15:0;;;;;;;29324:42;;;29353:1;29345:9;;29356:8;;;29324:42;29395:8;-1:-1:-1;;;;;29387:16:0;:4;-1:-1:-1;;;;;29387:16:0;;29384:31;;;29414:1;29405:10;;29384:31;29213:218;;29240:3;;29213:218;;;;29457:7;29448:16;;:5;:16;;;;:37;;;;;29478:7;29468:17;;:6;:17;;;;29448:37;29445:290;;;29525:41;;;-1:-1:-1;;;29525:41:0;;29560:4;29525:41;;;;;;29505:17;;-1:-1:-1;;;;;29525:26:0;;;;;:41;;;;;;;;;;;;;;;:26;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;29525:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29525:41:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29525:41:0;29585:47;;;-1:-1:-1;;;29585:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;29630:1;29585:47;;;;;;;;29525:41;;-1:-1:-1;;;;;;29585:21:0;;;;;:47;;;;;29630:1;;29585:47;;;;;;29630:1;29585:21;:47;;;5:2:-1;;;;30:1;27;20:12;5:2;29585:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;29659:41:0;;;-1:-1:-1;;;29659:41:0;;29694:4;29659:41;;;;;;29658:61;;-1:-1:-1;29706:12:0;;-1:-1:-1;;;;;;29659:26:0;;;;;:41;;;;;;;;;;;;;;:26;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;29659:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29659:41:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29659:41:0;;29658:61;:47;:61;:::i;:::-;29651:68;;;;;;;;;29445:290;29050:696;;;;29780:16;;;29794:1;29780:16;;;29756:21;29780:16;;;;;29756:21;29780:16;;;;;105:10:-1;29780:16:0;88:34:-1;136:17;;-1:-1;29780:16:0;29756:40;;29817:7;29807:4;29812:1;29807:7;;;;;;;;;;;;;:17;-1:-1:-1;;;;;29807:17:0;;;-1:-1:-1;;;;;29807:17:0;;;;;29845:8;29835:4;29840:1;29835:7;;;;;;;;;;;;;:18;-1:-1:-1;;;;;29835:18:0;;;-1:-1:-1;;;;;29835:18:0;;;;;29864:21;14956:42;-1:-1:-1;;;;;29888:60:0;;29963:6;29971:1;29974:4;29988;29995:15;29888:123;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29888:123:0;-1:-1:-1;;;;;29888:123:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;29888:123:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29888:123:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29888:123:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;29888:123:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;29888:123:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;29888:123:0;;421:4:-1;412:14;;;;29888:123:0;;;;;412:14:-1;29888:123:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;29888:123:0;;;;;;;;;;;29864:147;;30029:7;30037:1;30029:10;;;;;;;;;;;;;;30022:17;;;;;28868:1179;;;;;:::o;9021:184::-;9134:62;;;-1:-1:-1;;;;;9134:62:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;9134:62:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;9108:89:0;;9127:5;;9108:18;:89::i;21737:1904::-;21883:5;;;;21963:11;21908:39;;;-1:-1:-1;;;21908:39:0;;21941:4;21908:39;;;;;;;;21825:11;;;;-1:-1:-1;;;;;21883:5:0;;21908:67;;21963:11;;21908:50;;21952:5;;21883;;21908:24;;:39;;;;;;;;;;;;;;;21883:5;21908:39;;;5:2:-1;;;;30:1;27;20:12;21908:67:0;21899:76;-1:-1:-1;21990:6:0;21986:731;22006:5;:12;22002:16;;21986:731;;;22040:14;22057:5;22063:1;22057:8;;;;;;;;;;;;;;;;;;;;22117:58;;;-1:-1:-1;;;22117:58:0;;-1:-1:-1;;;;;22117:58:0;;;;;;;22057:8;;;22117:58;;;;;;;;22057:8;;-1:-1:-1;14870:42:0;;22117;;:58;;;;;;;;;;;14870:42;22117:58;;;5:2:-1;;;;30:1;27;20:12;5:2;22117:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22117:58:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22117:58:0;22253:11;;22208:29;;;-1:-1:-1;;;22208:29:0;;22231:4;22208:29;;;;;;22117:58;;-1:-1:-1;22191:14:0;;22208:57;;22253:11;22208:40;;22242:5;;-1:-1:-1;;;;;22208:14:0;;;;;:29;;;;;22117:58;;22208:29;;;;;;;;:14;:29;;;5:2:-1;;;;30:1;27;20:12;22208:57:0;22191:74;;22293:44;22307:29;22324:4;22330:5;22307:16;:29::i;:::-;22293:9;;:44;:13;:44;:::i;:::-;22280:57;-1:-1:-1;22355:14:0;22352:27;;22371:8;;;;;22352:27;22427:199;;;-1:-1:-1;;;22427:199:0;;-1:-1:-1;;;;;22427:199:0;;;;;;;;;;;;;;;;;;;22397:12;22427:199;;;;;;;;;;;;22589:4;22427:199;;;;22596:15;22427:199;;;;;;22397:12;;;;14956:42;;22427:51;;:199;;;;;;;;;;;;;22397:12;14956:42;22427:199;;;5:2:-1;;;;30:1;27;20:12;5:2;22427:199:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22427:199:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22427:199:0;;;;;;;;;-1:-1:-1;22427:199:0;-1:-1:-1;22650:55:0;22674:30;22680:6;22688;22427:199;22674:5;:30::i;:::-;22650:19;:6;22661:7;22650:19;:10;:19;:::i;:::-;:23;:55;:23;:55;:::i;:::-;22641:64;;21986:731;;;;;;22020:3;;21986:731;;;-1:-1:-1;22777:36:0;;;-1:-1:-1;;;22777:36:0;;22807:4;22777:36;;;;;;22760:14;;15028:42;;22777:21;;:36;;;;;;;;;;;;;;;15028:42;22777:36;;;5:2:-1;;;;30:1;27;20:12;5:2;22777:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22777:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22777:36:0;22884:11;;22843:10;;22777:36;;-1:-1:-1;22824:16:0;;22843:53;;22884:11;22843:36;;22873:5;;22843:25;;22777:36;22843:25;:14;:25;:::i;:53::-;22824:72;-1:-1:-1;22910:15:0;;22907:372;;-1:-1:-1;;;;;22981:15:0;;22941:9;22981:15;;;:9;:15;;;;;;;;;22953:6;:12;;;;;;:44;;22981:15;22953:23;;22970:5;22953:23;:16;:23;:::i;:44::-;-1:-1:-1;;;;;23027:12:0;;;;;;:6;:12;;;;;;22941:56;;-1:-1:-1;23027:22:0;;22941:56;23027:22;:16;:22;:::i;:::-;-1:-1:-1;;;;;23012:12:0;;;;;;:6;:12;;;;;:37;23077:10;;:20;;23092:4;23077:20;:14;:20;:::i;:::-;23064:10;:33;23112:11;23126:21;:11;23142:4;23126:21;:15;:21;:::i;:::-;23112:35;;23174:9;23165:6;:18;23162:41;;;-1:-1:-1;23194:9:0;23162:41;23221:10;;23218:49;;23233:34;;;-1:-1:-1;;;23233:34:0;;-1:-1:-1;;;;;23233:34:0;;;;;;;;;;;;;;15028:42;;23233:20;;:34;;;;;;;;;;;;;;-1:-1:-1;15028:42:0;23233:34;;;5:2:-1;;;;30:1;27;20:12;5:2;23233:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23233:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;23218:49:0;22907:372;;;-1:-1:-1;;;;;23338:15:0;;;;;;:9;:15;;;;;;;;;23304:12;:18;;;;;;;:50;;23338:15;23304:29;;23327:5;23304:29;:22;:29;:::i;:50::-;23291:63;;23377:10;23368:6;:19;23365:269;;;23403:9;23415:46;15103:3;23415:33;15133:2;23416:22;:6;23427:10;23416:22;:10;:22;:::i;23415:46::-;23403:58;-1:-1:-1;23485:16:0;:6;23403:58;23485:16;:10;:16;:::i;:::-;23544:10;;23476:25;;-1:-1:-1;23516:45:0;;-1:-1:-1;;;;;23516:27:0;;;;23544:10;23556:4;23516:45;:27;:45;:::i;:::-;23365:269;;;;23616:6;23603:19;;23365:269;21737:1904;;;;;;;;:::o;11323:286::-;-1:-1:-1;;;;;11392:18:0;;11384:64;;;;-1:-1:-1;;;11384:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11479:15:0;;;;;;:9;:15;;;;;;:26;;11499:5;11479:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;11461:15:0;;;;;;:9;:15;;;;;:44;11530:11;;:22;;11546:5;11530:22;:15;:22;:::i;:::-;11516:11;:36;11568:33;;;;;;;;11591:1;;-1:-1:-1;;;;;11568:33:0;;;;;;;;;;;;11323:286;;:::o;8625:176::-;8734:58;;;-1:-1:-1;;;;;8734:58:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;8734:58:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;8708:85:0;;8727:5;;8708:18;:85::i;8809:204::-;8936:68;;;-1:-1:-1;;;;;8936:68:0;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;8936:68:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;8910:95:0;;8929:5;;8910:18;:95::i;:::-;8809:204;;;;:::o;11041:274::-;-1:-1:-1;;;;;11108:16:0;;11100:60;;;;;-1:-1:-1;;;11100:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11187:11;;:22;;11203:5;11187:22;:15;:22;:::i;:::-;11173:11;:36;-1:-1:-1;;;;;11236:13:0;;;;;;:9;:13;;;;;;:24;;11254:5;11236:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;11220:13:0;;;;;;:9;:13;;;;;;;;:40;;;;11276:31;;;;;;;11220:13;;;;11276:31;;;;;;;;;;11041:274;;:::o;5135:192::-;5221:7;5257:12;5249:6;;;;5241:29;;;;-1:-1:-1;;;5241:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5241:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5293:5:0;;;5135:192::o;9596:894::-;10117:12;10131:23;10166:5;-1:-1:-1;;;;;10158:19:0;10178:4;10158:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;10158:25:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;10116:67:0;;;;10202:7;10194:52;;;;;-1:-1:-1;;;10194:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10263:17;;:21;10259:224;;10405:10;10394:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10394:30:0;10386:85;;;;-1:-1:-1;;;10386:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Swarm Source
bzzr://1a08d8e3abfaa2696a22890f7a9fc8c1722c9d5f369ab8b5e44a3c6edf37c9e3
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.