Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 11 from a total of 11 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20258142 | 212 days ago | IN | 0 ETH | 0.00010747 | ||||
Approve | 20154370 | 227 days ago | IN | 0 ETH | 0.00010721 | ||||
Approve | 19866347 | 267 days ago | IN | 0 ETH | 0.00026385 | ||||
Approve | 19866327 | 267 days ago | IN | 0 ETH | 0.00027874 | ||||
Approve | 19794140 | 277 days ago | IN | 0 ETH | 0.00029738 | ||||
Approve | 19794134 | 277 days ago | IN | 0 ETH | 0.00028385 | ||||
Approve | 19658174 | 296 days ago | IN | 0 ETH | 0.00044279 | ||||
Approve | 19617938 | 302 days ago | IN | 0 ETH | 0.00110835 | ||||
Approve | 19012475 | 387 days ago | IN | 0 ETH | 0.00065281 | ||||
Approve | 18897232 | 403 days ago | IN | 0 ETH | 0.00076519 | ||||
Approve | 18897082 | 403 days ago | IN | 0 ETH | 0.00062297 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
18868306 | 407 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
LiquidXv2Pair
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-01-10 */ // SPDX-License-Identifier: MIT pragma solidity >=0.8.0 <0.9.0; interface ILiquidXv2Pair { function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (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); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface ILiquidXv2ERC20 { function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (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); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; } library SafeMath { function add(uint x, uint y) internal pure returns (uint z) { require((z = x + y) >= x, 'ds-math-add-overflow'); } function sub(uint x, uint y) internal pure returns (uint z) { require((z = x - y) <= x, 'ds-math-sub-underflow'); } function mul(uint x, uint y) internal pure returns (uint z) { require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow'); } } contract LiquidXv2ERC20 is ILiquidXv2ERC20 { using SafeMath for uint; string public constant name = 'JFX V2'; string public constant symbol = 'JFX-V2'; uint8 public constant decimals = 18; uint public totalSupply; mapping(address => uint) public balanceOf; mapping(address => mapping(address => uint)) public allowance; bytes32 public DOMAIN_SEPARATOR; // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; mapping(address => uint) public nonces; event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); constructor() { DOMAIN_SEPARATOR = keccak256( abi.encode( keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'), keccak256(bytes(name)), keccak256(bytes('1')), 3501, address(this) ) ); } function _mint(address to, uint value) internal { totalSupply = totalSupply.add(value); balanceOf[to] = balanceOf[to].add(value); emit Transfer(address(0), to, value); } function _burn(address from, uint value) internal { 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 { allowance[owner][spender] = value; emit Approval(owner, spender, value); } function _transfer(address from, address to, uint value) private { 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) { if (allowance[from][msg.sender] != type(uint256).max) { allowance[from][msg.sender] = allowance[from][msg.sender].sub(value); } _transfer(from, to, value); return true; } function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external { require(deadline >= block.timestamp, 'LiquidXv2: EXPIRED'); bytes32 digest = keccak256( abi.encodePacked( '\x19\x01', DOMAIN_SEPARATOR, keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline)) ) ); address recoveredAddress = ecrecover(digest, v, r, s); require(recoveredAddress != address(0) && recoveredAddress == owner, 'LiquidXv2: INVALID_SIGNATURE'); _approve(owner, spender, value); } } library Math { function min(uint x, uint y) internal pure returns (uint z) { z = x < y ? x : y; } // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method) function sqrt(uint y) internal pure returns (uint z) { if (y > 3) { z = y; uint x = y / 2 + 1; while (x < z) { z = x; x = (y / x + x) / 2; } } else if (y != 0) { z = 1; } } } library UQ112x112 { uint224 constant Q112 = 2**112; // encode a uint112 as a UQ112x112 function encode(uint112 y) internal pure returns (uint224 z) { z = uint224(y) * Q112; // never overflows } // divide a UQ112x112 by a uint112, returning a UQ112x112 function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) { z = x / uint224(y); } } interface IERC20 { 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 ILiquidXv2Factory { function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface ILiquidXv2Callee { function LiquidXv2Call(address sender, uint amount0, uint amount1, bytes calldata data) external; } contract LiquidXv2Pair is LiquidXv2ERC20 { using SafeMath for uint; using UQ112x112 for uint224; uint public constant MINIMUM_LIQUIDITY = 10**3; bytes4 private constant SELECTOR = bytes4(keccak256(bytes('transfer(address,uint256)'))); address public factory; address public token0; address public token1; uint112 private reserve0; // uses single storage slot, accessible via getReserves uint112 private reserve1; // uses single storage slot, accessible via getReserves uint32 private blockTimestampLast; // uses single storage slot, accessible via getReserves uint public price0CumulativeLast; uint public price1CumulativeLast; uint public kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event uint private unlocked = 1; modifier lock() { require(unlocked == 1, 'LiquidXv2: LOCKED'); unlocked = 0; _; unlocked = 1; } function getReserves() public view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) { _reserve0 = reserve0; _reserve1 = reserve1; _blockTimestampLast = blockTimestampLast; } function _safeTransfer(address token, address to, uint value) private { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'LiquidXv2: TRANSFER_FAILED'); } event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); constructor() { factory = msg.sender; } // called once by the factory at time of deployment function initialize(address _token0, address _token1) external { require(msg.sender == factory, 'LiquidXv2: FORBIDDEN'); // sufficient check token0 = _token0; token1 = _token1; } // update reserves and, on the first call per block, price accumulators function _update(uint balance0, uint balance1, uint112 _reserve0, uint112 _reserve1) private { require(balance0 <= type(uint112).max && balance1 <= type(uint112).max, 'LiquidXv2: OVERFLOW'); uint32 blockTimestamp = uint32(block.timestamp % 2**32); uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) { // * never overflows, and + overflow is desired price0CumulativeLast += uint(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed; price1CumulativeLast += uint(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed; } reserve0 = uint112(balance0); reserve1 = uint112(balance1); blockTimestampLast = blockTimestamp; emit Sync(reserve0, reserve1); } // if fee is on, mint liquidity equivalent to 1/6th of the growth in sqrt(k) function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) { address feeTo = ILiquidXv2Factory(factory).feeTo(); feeOn = feeTo != address(0); uint _kLast = kLast; // gas savings if (feeOn) { if (_kLast != 0) { uint rootK = Math.sqrt(uint(_reserve0).mul(_reserve1)); uint rootKLast = Math.sqrt(_kLast); if (rootK > rootKLast) { uint numerator = totalSupply.mul(rootK.sub(rootKLast)); uint denominator = rootK.mul(5).add(rootKLast); uint liquidity = numerator / denominator; if (liquidity > 0) _mint(feeTo, liquidity); } } } else if (_kLast != 0) { kLast = 0; } } // this low-level function should be called from a contract which performs important safety checks function mint(address to) external lock returns (uint liquidity) { (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings uint balance0 = IERC20(token0).balanceOf(address(this)); uint balance1 = IERC20(token1).balanceOf(address(this)); uint amount0 = balance0.sub(_reserve0); uint amount1 = balance1.sub(_reserve1); bool feeOn = _mintFee(_reserve0, _reserve1); uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee if (_totalSupply == 0) { liquidity = Math.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY); _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock the first MINIMUM_LIQUIDITY tokens } else { liquidity = Math.min(amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1); } require(liquidity > 0, 'LiquidXv2: INSUFFICIENT_LIQUIDITY_MINTED'); _mint(to, liquidity); _update(balance0, balance1, _reserve0, _reserve1); if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date emit Mint(msg.sender, amount0, amount1); } // this low-level function should be called from a contract which performs important safety checks function burn(address to) external lock returns (uint amount0, uint amount1) { (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings address _token0 = token0; // gas savings address _token1 = token1; // gas savings uint balance0 = IERC20(_token0).balanceOf(address(this)); uint balance1 = IERC20(_token1).balanceOf(address(this)); uint liquidity = balanceOf[address(this)]; bool feeOn = _mintFee(_reserve0, _reserve1); uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee amount0 = liquidity.mul(balance0) / _totalSupply; // using balances ensures pro-rata distribution amount1 = liquidity.mul(balance1) / _totalSupply; // using balances ensures pro-rata distribution require(amount0 > 0 && amount1 > 0, 'LiquidXv2: INSUFFICIENT_LIQUIDITY_BURNED'); _burn(address(this), liquidity); _safeTransfer(_token0, to, amount0); _safeTransfer(_token1, to, amount1); balance0 = IERC20(_token0).balanceOf(address(this)); balance1 = IERC20(_token1).balanceOf(address(this)); _update(balance0, balance1, _reserve0, _reserve1); if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date emit Burn(msg.sender, amount0, amount1, to); } // this low-level function should be called from a contract which performs important safety checks function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external lock { require(amount0Out > 0 || amount1Out > 0, 'LiquidXv2: INSUFFICIENT_OUTPUT_AMOUNT'); (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings require(amount0Out < _reserve0 && amount1Out < _reserve1, 'LiquidXv2: INSUFFICIENT_LIQUIDITY'); uint balance0; uint balance1; { // scope for _token{0,1}, avoids stack too deep errors address _token0 = token0; address _token1 = token1; require(to != _token0 && to != _token1, 'LiquidXv2: INVALID_TO'); if (amount0Out > 0) _safeTransfer(_token0, to, amount0Out); // optimistically transfer tokens if (amount1Out > 0) _safeTransfer(_token1, to, amount1Out); // optimistically transfer tokens if (data.length > 0) ILiquidXv2Callee(to).LiquidXv2Call(msg.sender, amount0Out, amount1Out, data); balance0 = IERC20(_token0).balanceOf(address(this)); balance1 = IERC20(_token1).balanceOf(address(this)); } uint amount0In = balance0 > _reserve0 - amount0Out ? balance0 - (_reserve0 - amount0Out) : 0; uint amount1In = balance1 > _reserve1 - amount1Out ? balance1 - (_reserve1 - amount1Out) : 0; require(amount0In > 0 || amount1In > 0, 'LiquidXv2: INSUFFICIENT_INPUT_AMOUNT'); { // scope for reserve{0,1}Adjusted, avoids stack too deep errors uint balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(3)); uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(3)); require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'LiquidXv2: K'); } _update(balance0, balance1, _reserve0, _reserve1); emit Swap(msg.sender, amount0In, amount1In, amount0Out, amount1Out, to); } // force balances to match reserves function skim(address to) external lock { address _token0 = token0; // gas savings address _token1 = token1; // gas savings _safeTransfer(_token0, to, IERC20(_token0).balanceOf(address(this)).sub(reserve0)); _safeTransfer(_token1, to, IERC20(_token1).balanceOf(address(this)).sub(reserve1)); } // force reserves to match balances function sync() external lock { _update(IERC20(token0).balanceOf(address(this)), IERC20(token1).balanceOf(address(this)), reserve0, reserve1); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526001600c5534801561001557600080fd5b50604080518082018252600681526525232c102b1960d11b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f0aa5abe42c453a012b8a1287f21008695ac9ee11b7ec2ffb337bfeedbe5e8a83918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152610dad60808201523060a082015260c00160408051601f198184030181529190528051602090910120600355600580546001600160a01b031916331790556122218061010c6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610404578063d505accf14610417578063dd62ed3e1461042a578063fff6cae91461045557600080fd5b8063ba9a7a56146103d5578063bc25cf77146103de578063c45a0155146103f157600080fd5b80637ecebe00116100d35780637ecebe001461035557806389afcb441461037557806395d89b411461039d578063a9059cbb146103c257600080fd5b80636a6278421461031957806370a082311461032c5780637464fc3d1461034c57600080fd5b806323b872dd116101665780633644e515116101405780633644e515146102eb578063485cc955146102f45780635909c0d5146103075780635a3d54931461031057600080fd5b806323b872dd1461029757806330adf81f146102aa578063313ce567146102d157600080fd5b8063022c0d9f146101ae57806306fdde03146101c35780630902f1ac146101fe578063095ea7b3146102325780630dfe16811461025557806318160ddd14610280575b600080fd5b6101c16101bc366004611db3565b61045d565b005b6101e86040518060400160405280600681526020016525232c102b1960d11b81525081565b6040516101f59190611e6d565b60405180910390f35b610206610963565b604080516001600160701b03948516815293909216602084015263ffffffff16908201526060016101f5565b610245610240366004611ea0565b61098d565b60405190151581526020016101f5565b600654610268906001600160a01b031681565b6040516001600160a01b0390911681526020016101f5565b61028960005481565b6040519081526020016101f5565b6102456102a5366004611ecc565b6109a4565b6102897f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6102d9601281565b60405160ff90911681526020016101f5565b61028960035481565b6101c1610302366004611f0d565b610a38565b61028960095481565b610289600a5481565b610289610327366004611f46565b610ab7565b61028961033a366004611f46565b60016020526000908152604090205481565b610289600b5481565b610289610363366004611f46565b60046020526000908152604090205481565b610388610383366004611f46565b610d7f565b604080519283526020830191909152016101f5565b6101e86040518060400160405280600681526020016525232c16ab1960d11b81525081565b6102456103d0366004611ea0565b6110e5565b6102896103e881565b6101c16103ec366004611f46565b6110f2565b600554610268906001600160a01b031681565b600754610268906001600160a01b031681565b6101c1610425366004611f63565b611206565b610289610438366004611f0d565b600260209081526000928352604080842090915290825290205481565b6101c161141a565b600c546001146104885760405162461bcd60e51b815260040161047f90611fda565b60405180910390fd5b6000600c558415158061049b5750600084115b6104f55760405162461bcd60e51b815260206004820152602560248201527f4c69717569645876323a20494e53554646494349454e545f4f55545055545f416044820152641353d5539560da1b606482015260840161047f565b600080610500610963565b5091509150816001600160701b0316871080156105255750806001600160701b031686105b61057b5760405162461bcd60e51b815260206004820152602160248201527f4c69717569645876323a20494e53554646494349454e545f4c495155494449546044820152605960f81b606482015260840161047f565b60065460075460009182916001600160a01b039182169190811690891682148015906105b95750806001600160a01b0316896001600160a01b031614155b6105fd5760405162461bcd60e51b81526020600482015260156024820152744c69717569645876323a20494e56414c49445f544f60581b604482015260640161047f565b8a1561060e5761060e828a8d61153e565b891561061f5761061f818a8c61153e565b861561068c5760405163623ab41560e01b81526001600160a01b038a169063623ab415906106599033908f908f908e908e90600401612005565b600060405180830381600087803b15801561067357600080fd5b505af1158015610687573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa1580156106d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f49190612051565b6040516370a0823160e01b81523060048201529094506001600160a01b038216906370a0823190602401602060405180830381865afa15801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075f9190612051565b92505050600089856001600160701b031661077a9190612080565b83116107875760006107a4565b61079a8a6001600160701b038716612080565b6107a49084612080565b905060006107bb8a6001600160701b038716612080565b83116107c85760006107e5565b6107db8a6001600160701b038716612080565b6107e59084612080565b905060008211806107f65750600081115b61084e5760405162461bcd60e51b8152602060048201526024808201527f4c69717569645876323a20494e53554646494349454e545f494e5055545f414d60448201526313d5539560e21b606482015260840161047f565b600061087061085e846003611689565b61086a876103e8611689565b906116f0565b9050600061088261085e846003611689565b90506108a7620f42406108a16001600160701b038b8116908b16611689565b90611689565b6108b18383611689565b10156108ee5760405162461bcd60e51b815260206004820152600c60248201526b4c69717569645876323a204b60a01b604482015260640161047f565b50506108fc84848888611746565b60408051838152602081018390529081018c9052606081018b90526001600160a01b038a169033907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229060800160405180910390a350506001600c55505050505050505050565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b600061099a338484611932565b5060015b92915050565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610a23576001600160a01b03841660009081526002602090815260408083203384529091529020546109fe90836116f0565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610a2e848484611994565b5060019392505050565b6005546001600160a01b03163314610a895760405162461bcd60e51b81526020600482015260146024820152732634b8bab4b22c3b191d102327a92124a22222a760611b604482015260640161047f565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6000600c54600114610adb5760405162461bcd60e51b815260040161047f90611fda565b6000600c81905580610aeb610963565b506006546040516370a0823160e01b81523060048201529294509092506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b619190612051565b6007546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610baf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd39190612051565b90506000610bea836001600160701b0387166116f0565b90506000610c01836001600160701b0387166116f0565b90506000610c0f8787611a3a565b60008054919250819003610c4957610c356103e861086a610c308787611689565b611b77565b9850610c4460006103e8611be7565b610c90565b610c8d6001600160701b038916610c608684611689565b610c6a91906120a9565b6001600160701b038916610c7e8685611689565b610c8891906120a9565b611c76565b98505b60008911610cf15760405162461bcd60e51b815260206004820152602860248201527f4c69717569645876323a20494e53554646494349454e545f4c495155494449546044820152671657d3525395115160c21b606482015260840161047f565b610cfb8a8a611be7565b610d0786868a8a611746565b8115610d3157600854610d2d906001600160701b0380821691600160701b900416611689565b600b555b604080518581526020810185905233917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a250506001600c5550949695505050505050565b600080600c54600114610da45760405162461bcd60e51b815260040161047f90611fda565b6000600c81905580610db4610963565b506006546007546040516370a0823160e01b81523060048201529395509193506001600160a01b039081169291169060009083906370a0823190602401602060405180830381865afa158015610e0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e329190612051565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610e7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea09190612051565b30600090815260016020526040812054919250610ebd8888611a3a565b60005490915080610ece8487611689565b610ed891906120a9565b9a5080610ee58486611689565b610eef91906120a9565b995060008b118015610f01575060008a115b610f5e5760405162461bcd60e51b815260206004820152602860248201527f4c69717569645876323a20494e53554646494349454e545f4c495155494449546044820152671657d0955493915160c21b606482015260840161047f565b610f683084611c8e565b610f73878d8d61153e565b610f7e868d8c61153e565b6040516370a0823160e01b81523060048201526001600160a01b038816906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190612051565b6040516370a0823160e01b81523060048201529095506001600160a01b038716906370a0823190602401602060405180830381865afa15801561102d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110519190612051565b935061105f85858b8b611746565b811561108957600854611085906001600160701b0380821691600160701b900416611689565b600b555b604080518c8152602081018c90526001600160a01b038e169133917fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496910160405180910390a35050505050505050506001600c81905550915091565b600061099a338484611994565b600c546001146111145760405162461bcd60e51b815260040161047f90611fda565b6000600c556006546007546008546040516370a0823160e01b81523060048201526001600160a01b0393841693909216916111af91849186916111aa916001600160701b039091169084906370a08231906024015b602060405180830381865afa158015611186573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086a9190612051565b61153e565b6008546040516370a0823160e01b81523060048201526111fc91839186916111aa91600160701b9091046001600160701b0316906001600160a01b038516906370a0823190602401611169565b50506001600c5550565b4284101561124b5760405162461bcd60e51b8152602060048201526012602482015271131a5c5d5a59161d8c8e881156141254915160721b604482015260640161047f565b6003546001600160a01b038816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91908761129e836120bd565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012060405160200161131792919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611382573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906113b85750886001600160a01b0316816001600160a01b0316145b6114045760405162461bcd60e51b815260206004820152601c60248201527f4c69717569645876323a20494e56414c49445f5349474e415455524500000000604482015260640161047f565b61140f898989611932565b505050505050505050565b600c5460011461143c5760405162461bcd60e51b815260040161047f90611fda565b6000600c556006546040516370a0823160e01b8152306004820152611537916001600160a01b0316906370a0823190602401602060405180830381865afa15801561148b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114af9190612051565b6007546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156114f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151b9190612051565b6008546001600160701b0380821691600160701b900416611746565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b179052915160009283928716916115ca91906120d6565b6000604051808303816000865af19150503d8060008114611607576040519150601f19603f3d011682016040523d82523d6000602084013e61160c565b606091505b509150915081801561163657508051158061163657508080602001905181019061163691906120f2565b6116825760405162461bcd60e51b815260206004820152601a60248201527f4c69717569645876323a205452414e534645525f4641494c4544000000000000604482015260640161047f565b5050505050565b60008115806116ad5750828261169f8183612114565b92506116ab90836120a9565b145b61099e5760405162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015260640161047f565b6000826116fd8382612080565b915081111561099e5760405162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015260640161047f565b6001600160701b03841180159061176457506001600160701b038311155b6117a65760405162461bcd60e51b81526020600482015260136024820152724c69717569645876323a204f564552464c4f5760681b604482015260640161047f565b60006117b76401000000004261212b565b6008549091506000906117d790600160e01b900463ffffffff168361213f565b905060008163ffffffff161180156117f757506001600160701b03841615155b801561180b57506001600160701b03831615155b1561189a578063ffffffff166118338561182486611d18565b6001600160e01b031690611d31565b6001600160e01b03166118469190612114565b600960008282546118579190612163565b909155505063ffffffff81166118708461182487611d18565b6001600160e01b03166118839190612114565b600a60008282546118949190612163565b90915550505b6008805463ffffffff8416600160e01b026001600160e01b036001600160701b03898116600160701b9081026001600160e01b03199095168c83161794909417918216831794859055604080519382169282169290921783529290930490911660208201527f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1910160405180910390a1505050505050565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166000908152600160205260409020546119b790826116f0565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546119e69082611d46565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119879085815260200190565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab49190612176565b600b546001600160a01b038216158015945091925090611b63578015611b5e576000611aef610c306001600160701b03888116908816611689565b90506000611afc83611b77565b905080821115611b5b576000611b1e611b1584846116f0565b60005490611689565b90506000611b3783611b31866005611689565b90611d46565b90506000611b4582846120a9565b90508015611b5757611b578782611be7565b5050505b50505b611b6f565b8015611b6f576000600b555b505092915050565b60006003821115611bd85750806000611b916002836120a9565b611b9c906001612163565b90505b81811015611bd257905080600281611bb781866120a9565b611bc19190612163565b611bcb91906120a9565b9050611b9f565b50919050565b8115611be2575060015b919050565b600054611bf49082611d46565b60009081556001600160a01b038316815260016020526040902054611c199082611d46565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c6a9085815260200190565b60405180910390a35050565b6000818310611c855781611c87565b825b9392505050565b6001600160a01b038216600090815260016020526040902054611cb190826116f0565b6001600160a01b03831660009081526001602052604081209190915554611cd890826116f0565b60009081556040518281526001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611c6a565b600061099e600160701b6001600160701b038416612193565b6000611c876001600160701b038316846121c5565b600082611d538382612163565b915081101561099e5760405162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015260640161047f565b6001600160a01b0381168114611db057600080fd5b50565b600080600080600060808688031215611dcb57600080fd5b85359450602086013593506040860135611de481611d9b565b9250606086013567ffffffffffffffff80821115611e0157600080fd5b818801915088601f830112611e1557600080fd5b813581811115611e2457600080fd5b896020828501011115611e3657600080fd5b9699959850939650602001949392505050565b60005b83811015611e64578181015183820152602001611e4c565b50506000910152565b6020815260008251806020840152611e8c816040850160208701611e49565b601f01601f19169190910160400192915050565b60008060408385031215611eb357600080fd5b8235611ebe81611d9b565b946020939093013593505050565b600080600060608486031215611ee157600080fd5b8335611eec81611d9b565b92506020840135611efc81611d9b565b929592945050506040919091013590565b60008060408385031215611f2057600080fd5b8235611f2b81611d9b565b91506020830135611f3b81611d9b565b809150509250929050565b600060208284031215611f5857600080fd5b8135611c8781611d9b565b600080600080600080600060e0888a031215611f7e57600080fd5b8735611f8981611d9b565b96506020880135611f9981611d9b565b95506040880135945060608801359350608088013560ff81168114611fbd57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b602080825260119082015270131a5c5d5a59161d8c8e881313d0d2d151607a1b604082015260600190565b60018060a01b038616815284602082015283604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b60006020828403121561206357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561099e5761099e61206a565b634e487b7160e01b600052601260045260246000fd5b6000826120b8576120b8612093565b500490565b6000600182016120cf576120cf61206a565b5060010190565b600082516120e8818460208701611e49565b9190910192915050565b60006020828403121561210457600080fd5b81518015158114611c8757600080fd5b808202811582820484141761099e5761099e61206a565b60008261213a5761213a612093565b500690565b63ffffffff82811682821603908082111561215c5761215c61206a565b5092915050565b8082018082111561099e5761099e61206a565b60006020828403121561218857600080fd5b8151611c8781611d9b565b6001600160e01b038281168282168181028316929181158285048214176121bc576121bc61206a565b50505092915050565b60006001600160e01b03838116806121df576121df612093565b9216919091049291505056fea26469706673582212209d7629e63494de4124f09695b7a973c100cb7deb99d2dd6bacbccccc27e8264764736f6c63430008130033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610404578063d505accf14610417578063dd62ed3e1461042a578063fff6cae91461045557600080fd5b8063ba9a7a56146103d5578063bc25cf77146103de578063c45a0155146103f157600080fd5b80637ecebe00116100d35780637ecebe001461035557806389afcb441461037557806395d89b411461039d578063a9059cbb146103c257600080fd5b80636a6278421461031957806370a082311461032c5780637464fc3d1461034c57600080fd5b806323b872dd116101665780633644e515116101405780633644e515146102eb578063485cc955146102f45780635909c0d5146103075780635a3d54931461031057600080fd5b806323b872dd1461029757806330adf81f146102aa578063313ce567146102d157600080fd5b8063022c0d9f146101ae57806306fdde03146101c35780630902f1ac146101fe578063095ea7b3146102325780630dfe16811461025557806318160ddd14610280575b600080fd5b6101c16101bc366004611db3565b61045d565b005b6101e86040518060400160405280600681526020016525232c102b1960d11b81525081565b6040516101f59190611e6d565b60405180910390f35b610206610963565b604080516001600160701b03948516815293909216602084015263ffffffff16908201526060016101f5565b610245610240366004611ea0565b61098d565b60405190151581526020016101f5565b600654610268906001600160a01b031681565b6040516001600160a01b0390911681526020016101f5565b61028960005481565b6040519081526020016101f5565b6102456102a5366004611ecc565b6109a4565b6102897f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6102d9601281565b60405160ff90911681526020016101f5565b61028960035481565b6101c1610302366004611f0d565b610a38565b61028960095481565b610289600a5481565b610289610327366004611f46565b610ab7565b61028961033a366004611f46565b60016020526000908152604090205481565b610289600b5481565b610289610363366004611f46565b60046020526000908152604090205481565b610388610383366004611f46565b610d7f565b604080519283526020830191909152016101f5565b6101e86040518060400160405280600681526020016525232c16ab1960d11b81525081565b6102456103d0366004611ea0565b6110e5565b6102896103e881565b6101c16103ec366004611f46565b6110f2565b600554610268906001600160a01b031681565b600754610268906001600160a01b031681565b6101c1610425366004611f63565b611206565b610289610438366004611f0d565b600260209081526000928352604080842090915290825290205481565b6101c161141a565b600c546001146104885760405162461bcd60e51b815260040161047f90611fda565b60405180910390fd5b6000600c558415158061049b5750600084115b6104f55760405162461bcd60e51b815260206004820152602560248201527f4c69717569645876323a20494e53554646494349454e545f4f55545055545f416044820152641353d5539560da1b606482015260840161047f565b600080610500610963565b5091509150816001600160701b0316871080156105255750806001600160701b031686105b61057b5760405162461bcd60e51b815260206004820152602160248201527f4c69717569645876323a20494e53554646494349454e545f4c495155494449546044820152605960f81b606482015260840161047f565b60065460075460009182916001600160a01b039182169190811690891682148015906105b95750806001600160a01b0316896001600160a01b031614155b6105fd5760405162461bcd60e51b81526020600482015260156024820152744c69717569645876323a20494e56414c49445f544f60581b604482015260640161047f565b8a1561060e5761060e828a8d61153e565b891561061f5761061f818a8c61153e565b861561068c5760405163623ab41560e01b81526001600160a01b038a169063623ab415906106599033908f908f908e908e90600401612005565b600060405180830381600087803b15801561067357600080fd5b505af1158015610687573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa1580156106d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f49190612051565b6040516370a0823160e01b81523060048201529094506001600160a01b038216906370a0823190602401602060405180830381865afa15801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075f9190612051565b92505050600089856001600160701b031661077a9190612080565b83116107875760006107a4565b61079a8a6001600160701b038716612080565b6107a49084612080565b905060006107bb8a6001600160701b038716612080565b83116107c85760006107e5565b6107db8a6001600160701b038716612080565b6107e59084612080565b905060008211806107f65750600081115b61084e5760405162461bcd60e51b8152602060048201526024808201527f4c69717569645876323a20494e53554646494349454e545f494e5055545f414d60448201526313d5539560e21b606482015260840161047f565b600061087061085e846003611689565b61086a876103e8611689565b906116f0565b9050600061088261085e846003611689565b90506108a7620f42406108a16001600160701b038b8116908b16611689565b90611689565b6108b18383611689565b10156108ee5760405162461bcd60e51b815260206004820152600c60248201526b4c69717569645876323a204b60a01b604482015260640161047f565b50506108fc84848888611746565b60408051838152602081018390529081018c9052606081018b90526001600160a01b038a169033907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229060800160405180910390a350506001600c55505050505050505050565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b600061099a338484611932565b5060015b92915050565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610a23576001600160a01b03841660009081526002602090815260408083203384529091529020546109fe90836116f0565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610a2e848484611994565b5060019392505050565b6005546001600160a01b03163314610a895760405162461bcd60e51b81526020600482015260146024820152732634b8bab4b22c3b191d102327a92124a22222a760611b604482015260640161047f565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6000600c54600114610adb5760405162461bcd60e51b815260040161047f90611fda565b6000600c81905580610aeb610963565b506006546040516370a0823160e01b81523060048201529294509092506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b619190612051565b6007546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015610baf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd39190612051565b90506000610bea836001600160701b0387166116f0565b90506000610c01836001600160701b0387166116f0565b90506000610c0f8787611a3a565b60008054919250819003610c4957610c356103e861086a610c308787611689565b611b77565b9850610c4460006103e8611be7565b610c90565b610c8d6001600160701b038916610c608684611689565b610c6a91906120a9565b6001600160701b038916610c7e8685611689565b610c8891906120a9565b611c76565b98505b60008911610cf15760405162461bcd60e51b815260206004820152602860248201527f4c69717569645876323a20494e53554646494349454e545f4c495155494449546044820152671657d3525395115160c21b606482015260840161047f565b610cfb8a8a611be7565b610d0786868a8a611746565b8115610d3157600854610d2d906001600160701b0380821691600160701b900416611689565b600b555b604080518581526020810185905233917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a250506001600c5550949695505050505050565b600080600c54600114610da45760405162461bcd60e51b815260040161047f90611fda565b6000600c81905580610db4610963565b506006546007546040516370a0823160e01b81523060048201529395509193506001600160a01b039081169291169060009083906370a0823190602401602060405180830381865afa158015610e0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e329190612051565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610e7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea09190612051565b30600090815260016020526040812054919250610ebd8888611a3a565b60005490915080610ece8487611689565b610ed891906120a9565b9a5080610ee58486611689565b610eef91906120a9565b995060008b118015610f01575060008a115b610f5e5760405162461bcd60e51b815260206004820152602860248201527f4c69717569645876323a20494e53554646494349454e545f4c495155494449546044820152671657d0955493915160c21b606482015260840161047f565b610f683084611c8e565b610f73878d8d61153e565b610f7e868d8c61153e565b6040516370a0823160e01b81523060048201526001600160a01b038816906370a0823190602401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe69190612051565b6040516370a0823160e01b81523060048201529095506001600160a01b038716906370a0823190602401602060405180830381865afa15801561102d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110519190612051565b935061105f85858b8b611746565b811561108957600854611085906001600160701b0380821691600160701b900416611689565b600b555b604080518c8152602081018c90526001600160a01b038e169133917fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496910160405180910390a35050505050505050506001600c81905550915091565b600061099a338484611994565b600c546001146111145760405162461bcd60e51b815260040161047f90611fda565b6000600c556006546007546008546040516370a0823160e01b81523060048201526001600160a01b0393841693909216916111af91849186916111aa916001600160701b039091169084906370a08231906024015b602060405180830381865afa158015611186573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086a9190612051565b61153e565b6008546040516370a0823160e01b81523060048201526111fc91839186916111aa91600160701b9091046001600160701b0316906001600160a01b038516906370a0823190602401611169565b50506001600c5550565b4284101561124b5760405162461bcd60e51b8152602060048201526012602482015271131a5c5d5a59161d8c8e881156141254915160721b604482015260640161047f565b6003546001600160a01b038816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91908761129e836120bd565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012060405160200161131792919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611382573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906113b85750886001600160a01b0316816001600160a01b0316145b6114045760405162461bcd60e51b815260206004820152601c60248201527f4c69717569645876323a20494e56414c49445f5349474e415455524500000000604482015260640161047f565b61140f898989611932565b505050505050505050565b600c5460011461143c5760405162461bcd60e51b815260040161047f90611fda565b6000600c556006546040516370a0823160e01b8152306004820152611537916001600160a01b0316906370a0823190602401602060405180830381865afa15801561148b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114af9190612051565b6007546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156114f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151b9190612051565b6008546001600160701b0380821691600160701b900416611746565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b179052915160009283928716916115ca91906120d6565b6000604051808303816000865af19150503d8060008114611607576040519150601f19603f3d011682016040523d82523d6000602084013e61160c565b606091505b509150915081801561163657508051158061163657508080602001905181019061163691906120f2565b6116825760405162461bcd60e51b815260206004820152601a60248201527f4c69717569645876323a205452414e534645525f4641494c4544000000000000604482015260640161047f565b5050505050565b60008115806116ad5750828261169f8183612114565b92506116ab90836120a9565b145b61099e5760405162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015260640161047f565b6000826116fd8382612080565b915081111561099e5760405162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015260640161047f565b6001600160701b03841180159061176457506001600160701b038311155b6117a65760405162461bcd60e51b81526020600482015260136024820152724c69717569645876323a204f564552464c4f5760681b604482015260640161047f565b60006117b76401000000004261212b565b6008549091506000906117d790600160e01b900463ffffffff168361213f565b905060008163ffffffff161180156117f757506001600160701b03841615155b801561180b57506001600160701b03831615155b1561189a578063ffffffff166118338561182486611d18565b6001600160e01b031690611d31565b6001600160e01b03166118469190612114565b600960008282546118579190612163565b909155505063ffffffff81166118708461182487611d18565b6001600160e01b03166118839190612114565b600a60008282546118949190612163565b90915550505b6008805463ffffffff8416600160e01b026001600160e01b036001600160701b03898116600160701b9081026001600160e01b03199095168c83161794909417918216831794859055604080519382169282169290921783529290930490911660208201527f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1910160405180910390a1505050505050565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166000908152600160205260409020546119b790826116f0565b6001600160a01b0380851660009081526001602052604080822093909355908416815220546119e69082611d46565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119879085815260200190565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab49190612176565b600b546001600160a01b038216158015945091925090611b63578015611b5e576000611aef610c306001600160701b03888116908816611689565b90506000611afc83611b77565b905080821115611b5b576000611b1e611b1584846116f0565b60005490611689565b90506000611b3783611b31866005611689565b90611d46565b90506000611b4582846120a9565b90508015611b5757611b578782611be7565b5050505b50505b611b6f565b8015611b6f576000600b555b505092915050565b60006003821115611bd85750806000611b916002836120a9565b611b9c906001612163565b90505b81811015611bd257905080600281611bb781866120a9565b611bc19190612163565b611bcb91906120a9565b9050611b9f565b50919050565b8115611be2575060015b919050565b600054611bf49082611d46565b60009081556001600160a01b038316815260016020526040902054611c199082611d46565b6001600160a01b0383166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c6a9085815260200190565b60405180910390a35050565b6000818310611c855781611c87565b825b9392505050565b6001600160a01b038216600090815260016020526040902054611cb190826116f0565b6001600160a01b03831660009081526001602052604081209190915554611cd890826116f0565b60009081556040518281526001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611c6a565b600061099e600160701b6001600160701b038416612193565b6000611c876001600160701b038316846121c5565b600082611d538382612163565b915081101561099e5760405162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015260640161047f565b6001600160a01b0381168114611db057600080fd5b50565b600080600080600060808688031215611dcb57600080fd5b85359450602086013593506040860135611de481611d9b565b9250606086013567ffffffffffffffff80821115611e0157600080fd5b818801915088601f830112611e1557600080fd5b813581811115611e2457600080fd5b896020828501011115611e3657600080fd5b9699959850939650602001949392505050565b60005b83811015611e64578181015183820152602001611e4c565b50506000910152565b6020815260008251806020840152611e8c816040850160208701611e49565b601f01601f19169190910160400192915050565b60008060408385031215611eb357600080fd5b8235611ebe81611d9b565b946020939093013593505050565b600080600060608486031215611ee157600080fd5b8335611eec81611d9b565b92506020840135611efc81611d9b565b929592945050506040919091013590565b60008060408385031215611f2057600080fd5b8235611f2b81611d9b565b91506020830135611f3b81611d9b565b809150509250929050565b600060208284031215611f5857600080fd5b8135611c8781611d9b565b600080600080600080600060e0888a031215611f7e57600080fd5b8735611f8981611d9b565b96506020880135611f9981611d9b565b95506040880135945060608801359350608088013560ff81168114611fbd57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b602080825260119082015270131a5c5d5a59161d8c8e881313d0d2d151607a1b604082015260600190565b60018060a01b038616815284602082015283604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b60006020828403121561206357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561099e5761099e61206a565b634e487b7160e01b600052601260045260246000fd5b6000826120b8576120b8612093565b500490565b6000600182016120cf576120cf61206a565b5060010190565b600082516120e8818460208701611e49565b9190910192915050565b60006020828403121561210457600080fd5b81518015158114611c8757600080fd5b808202811582820484141761099e5761099e61206a565b60008261213a5761213a612093565b500690565b63ffffffff82811682821603908082111561215c5761215c61206a565b5092915050565b8082018082111561099e5761099e61206a565b60006020828403121561218857600080fd5b8151611c8781611d9b565b6001600160e01b038281168282168181028316929181158285048214176121bc576121bc61206a565b50505092915050565b60006001600160e01b03838116806121df576121df612093565b9216919091049291505056fea26469706673582212209d7629e63494de4124f09695b7a973c100cb7deb99d2dd6bacbccccc27e8264764736f6c63430008130033
Deployed Bytecode Sourcemap
8530:9079:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15239:1809;;;;;;:::i;:::-;;:::i;:::-;;3366:38;;;;;;;;;;;;;;;-1:-1:-1;;;3366:38:0;;;;;;;;;;;;:::i;:::-;;;;;;;;9485:217;;;:::i;:::-;;;;-1:-1:-1;;;;;1941:15:1;;;1923:34;;1993:15;;;;1988:2;1973:18;;1966:43;2057:10;2045:23;2025:18;;;2018:51;1862:2;1847:18;9485:217:0;1674:401:1;5165:137:0;;;;;;:::i;:::-;;:::i;:::-;;;2565:14:1;;2558:22;2540:41;;2528:2;2513:18;5165:137:0;2400:187:1;8812:21:0;;;;;-1:-1:-1;;;;;8812:21:0;;;;;;-1:-1:-1;;;;;2756:32:1;;;2738:51;;2726:2;2711:18;8812:21:0;2592:203:1;3494:24:0;;;;;;;;;2946:25:1;;;2934:2;2919:18;3494:24:0;2800:177:1;5443:286:0;;;;;;:::i;:::-;;:::i;3776:108::-;;3818:66;3776:108;;3454:35;;3487:2;3454:35;;;;;3797:4:1;3785:17;;;3767:36;;3755:2;3740:18;3454:35:0;3625:184:1;3637:31:0;;;;;;10466:196;;;;;;:::i;:::-;;:::i;9153:32::-;;;;;;9190;;;;;;12474:1161;;;;;;:::i;:::-;;:::i;3523:41::-;;;;;;:::i;:::-;;;;;;;;;;;;;;9227:17;;;;;;3889:38;;;;;;:::i;:::-;;;;;;;;;;;;;;13743:1388;;;;;;:::i;:::-;;:::i;:::-;;;;4633:25:1;;;4689:2;4674:18;;4667:34;;;;4606:18;13743:1388:0;4459:248:1;3409:40:0;;;;;;;;;;;;;;;-1:-1:-1;;;3409:40:0;;;;;5308:129;;;;;;:::i;:::-;;:::i;8639:46::-;;8680:5;8639:46;;17093:316;;;;;;:::i;:::-;;:::i;8785:22::-;;;;;-1:-1:-1;;;;;8785:22:0;;;8838:21;;;;;-1:-1:-1;;;;;8838:21:0;;;5735:612;;;;;;:::i;:::-;;:::i;3569:61::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;17454:152;;;:::i;15239:1809::-;9392:8;;9404:1;9392:13;9384:43;;;;-1:-1:-1;;;9384:43:0;;;;;;;:::i;:::-;;;;;;;;;9445:1;9434:8;:12;15349:14;;;;:32:::1;;;15380:1;15367:10;:14;15349:32;15341:82;;;::::0;-1:-1:-1;;;15341:82:0;;6094:2:1;15341:82:0::1;::::0;::::1;6076:21:1::0;6133:2;6113:18;;;6106:30;6172:34;6152:18;;;6145:62;-1:-1:-1;;;6223:18:1;;;6216:35;6268:19;;15341:82:0::1;5892:401:1::0;15341:82:0::1;15431:17;15450::::0;15472:13:::1;:11;:13::i;:::-;15430:55;;;;;15528:9;-1:-1:-1::0;;;;;15515:22:0::1;:10;:22;:48;;;;;15554:9;-1:-1:-1::0;;;;;15541:22:0::1;:10;:22;15515:48;15507:94;;;::::0;-1:-1:-1;;;15507:94:0;;6500:2:1;15507:94:0::1;::::0;::::1;6482:21:1::0;6539:2;6519:18;;;6512:30;6578:34;6558:18;;;6551:62;-1:-1:-1;;;6629:18:1;;;6622:31;6670:19;;15507:94:0::1;6298:397:1::0;15507:94:0::1;15732:6;::::0;15765::::1;::::0;15610:13:::1;::::0;;;-1:-1:-1;;;;;15732:6:0;;::::1;::::0;15765;;::::1;::::0;15788:13;::::1;::::0;::::1;::::0;::::1;::::0;:30:::1;;;15811:7;-1:-1:-1::0;;;;;15805:13:0::1;:2;-1:-1:-1::0;;;;;15805:13:0::1;;;15788:30;15780:64;;;::::0;-1:-1:-1;;;15780:64:0;;6902:2:1;15780:64:0::1;::::0;::::1;6884:21:1::0;6941:2;6921:18;;;6914:30;-1:-1:-1;;;6960:18:1;;;6953:51;7021:18;;15780:64:0::1;6700:345:1::0;15780:64:0::1;15857:14:::0;;15853:58:::1;;15873:38;15887:7;15896:2;15900:10;15873:13;:38::i;:::-;15958:14:::0;;15954:58:::1;;15974:38;15988:7;15997:2;16001:10;15974:13;:38::i;:::-;16059:15:::0;;16055:97:::1;;16076:76;::::0;-1:-1:-1;;;16076:76:0;;-1:-1:-1;;;;;16076:34:0;::::1;::::0;::::1;::::0;:76:::1;::::0;16111:10:::1;::::0;16123;;16135;;16147:4;;;;16076:76:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16055:97;16172:40;::::0;-1:-1:-1;;;16172:40:0;;16206:4:::1;16172:40;::::0;::::1;2738:51:1::0;-1:-1:-1;;;;;16172:25:0;::::1;::::0;::::1;::::0;2711:18:1;;16172:40:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16232;::::0;-1:-1:-1;;;16232:40:0;;16266:4:::1;16232:40;::::0;::::1;2738:51:1::0;16161::0;;-1:-1:-1;;;;;;16232:25:0;::::1;::::0;::::1;::::0;2711:18:1;;16232:40:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16221:51;;15650:630;;16286:14;16326:10;16314:9;-1:-1:-1::0;;;;;16314:22:0::1;;;;;:::i;:::-;16303:8;:33;:75;;16377:1;16303:75;;;16351:22;16363:10:::0;-1:-1:-1;;;;;16351:22:0;::::1;;:::i;:::-;16339:35;::::0;:8;:35:::1;:::i;:::-;16286:92:::0;-1:-1:-1;16385:14:0::1;16413:22;16425:10:::0;-1:-1:-1;;;;;16413:22:0;::::1;;:::i;:::-;16402:8;:33;:75;;16476:1;16402:75;;;16450:22;16462:10:::0;-1:-1:-1;;;;;16450:22:0;::::1;;:::i;:::-;16438:35;::::0;:8;:35:::1;:::i;:::-;16385:92;;16504:1;16492:9;:13;:30;;;;16521:1;16509:9;:13;16492:30;16484:79;;;::::0;-1:-1:-1;;;16484:79:0;;8343:2:1;16484:79:0::1;::::0;::::1;8325:21:1::0;8382:2;8362:18;;;8355:30;8421:34;8401:18;;;8394:62;-1:-1:-1;;;8472:18:1;;;8465:34;8516:19;;16484:79:0::1;8141:400:1::0;16484:79:0::1;16643:21;16667:40;16690:16;:9:::0;16704:1:::1;16690:13;:16::i;:::-;16667:18;:8:::0;16680:4:::1;16667:12;:18::i;:::-;:22:::0;::::1;:40::i;:::-;16643:64:::0;-1:-1:-1;16716:21:0::1;16740:40;16763:16;:9:::0;16777:1:::1;16763:13;:16::i;16740:40::-;16716:64:::0;-1:-1:-1;16839:43:0::1;16874:7;16839:30;-1:-1:-1::0;;;;;16839:15:0;;::::1;::::0;:30;::::1;:19;:30::i;:::-;:34:::0;::::1;:43::i;:::-;16797:38;:16:::0;16818;16797:20:::1;:38::i;:::-;:85;;16789:110;;;::::0;-1:-1:-1;;;16789:110:0;;8748:2:1;16789:110:0::1;::::0;::::1;8730:21:1::0;8787:2;8767:18;;;8760:30;-1:-1:-1;;;8806:18:1;;;8799:42;8858:18;;16789:110:0::1;8546:336:1::0;16789:110:0::1;16570:337;;16915:49;16923:8;16933;16943:9;16954;16915:7;:49::i;:::-;16976:66;::::0;;9118:25:1;;;9174:2;9159:18;;9152:34;;;9202:18;;;9195:34;;;9260:2;9245:18;;9238:34;;;-1:-1:-1;;;;;16976:66:0;::::1;::::0;16981:10:::1;::::0;16976:66:::1;::::0;9105:3:1;9090:19;16976:66:0::1;;;;;;;-1:-1:-1::0;;9472:1:0;9461:8;:12;-1:-1:-1;;;;;;;;;15239:1809:0:o;9485:217::-;9614:8;;-1:-1:-1;;;;;9614:8:0;;;;-1:-1:-1;;;9641:8:0;;;;;;-1:-1:-1;;;9678:18:0;;;;;9485:217::o;5165:137::-;5229:4;5242:36;5251:10;5263:7;5272:5;5242:8;:36::i;:::-;-1:-1:-1;5292:4:0;5165:137;;;;;:::o;5443:286::-;-1:-1:-1;;;;;5538:15:0;;5521:4;5538:15;;;:9;:15;;;;;;;;5554:10;5538:27;;;;;;;;-1:-1:-1;;5538:48:0;5534:139;;-1:-1:-1;;;;;5627:15:0;;;;;;:9;:15;;;;;;;;5643:10;5627:27;;;;;;;;:38;;5659:5;5627:31;:38::i;:::-;-1:-1:-1;;;;;5597:15:0;;;;;;:9;:15;;;;;;;;5613:10;5597:27;;;;;;;:68;5534:139;5679:26;5689:4;5695:2;5699:5;5679:9;:26::i;:::-;-1:-1:-1;5719:4:0;5443:286;;;;;:::o;10466:196::-;10558:7;;-1:-1:-1;;;;;10558:7:0;10544:10;:21;10536:54;;;;-1:-1:-1;;;10536:54:0;;9485:2:1;10536:54:0;;;9467:21:1;9524:2;9504:18;;;9497:30;-1:-1:-1;;;9543:18:1;;;9536:50;9603:18;;10536:54:0;9283:344:1;10536:54:0;10617:6;:16;;-1:-1:-1;;;;;10617:16:0;;;-1:-1:-1;;;;;;10617:16:0;;;;;;;10640:6;:16;;;;;;;;;;;10466:196::o;12474:1161::-;12523:14;9392:8;;9404:1;9392:13;9384:43;;;;-1:-1:-1;;;9384:43:0;;;;;;;:::i;:::-;9445:1;9434:8;:12;;;9445:1;12588:13:::1;:11;:13::i;:::-;-1:-1:-1::0;12646:6:0::1;::::0;12639:39:::1;::::0;-1:-1:-1;;;12639:39:0;;12672:4:::1;12639:39;::::0;::::1;2738:51:1::0;12546:55:0;;-1:-1:-1;12546:55:0;;-1:-1:-1;12623:13:0::1;::::0;-1:-1:-1;;;;;12646:6:0;;::::1;::::0;12639:24:::1;::::0;2711:18:1;;12639:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12708:6;::::0;12701:39:::1;::::0;-1:-1:-1;;;12701:39:0;;12734:4:::1;12701:39;::::0;::::1;2738:51:1::0;12623:55:0;;-1:-1:-1;12685:13:0::1;::::0;-1:-1:-1;;;;;12708:6:0;;::::1;::::0;12701:24:::1;::::0;2711:18:1;;12701:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12685:55:::0;-1:-1:-1;12747:12:0::1;12762:23;:8:::0;-1:-1:-1;;;;;12762:23:0;::::1;:12;:23::i;:::-;12747:38:::0;-1:-1:-1;12792:12:0::1;12807:23;:8:::0;-1:-1:-1;;;;;12807:23:0;::::1;:12;:23::i;:::-;12792:38;;12839:10;12852:30;12861:9;12872;12852:8;:30::i;:::-;12889:17;12909:11:::0;;12839:43;;-1:-1:-1;13009:17:0;;;13005:327:::1;;13049:54;8680:5;13049:31;13059:20;:7:::0;13071;13059:11:::1;:20::i;:::-;13049:9;:31::i;:54::-;13037:66;;13112:36;13126:1;8680:5;13112;:36::i;:::-;13005:327;;;13238:86;-1:-1:-1::0;;;;;13247:37:0;::::1;:25;:7:::0;13259:12;13247:11:::1;:25::i;:::-;:37;;;;:::i;:::-;-1:-1:-1::0;;;;;13286:37:0;::::1;:25;:7:::0;13298:12;13286:11:::1;:25::i;:::-;:37;;;;:::i;:::-;13238:8;:86::i;:::-;13226:98;;13005:327;13358:1;13346:9;:13;13338:66;;;::::0;-1:-1:-1;;;13338:66:0;;10091:2:1;13338:66:0::1;::::0;::::1;10073:21:1::0;10130:2;10110:18;;;10103:30;10169:34;10149:18;;;10142:62;-1:-1:-1;;;10220:18:1;;;10213:38;10268:19;;13338:66:0::1;9889:404:1::0;13338:66:0::1;13411:20;13417:2;13421:9;13411:5;:20::i;:::-;13440:49;13448:8;13458;13468:9;13479;13440:7;:49::i;:::-;13500:5;13496:47;;;13534:8;::::0;13515:28:::1;::::0;-1:-1:-1;;;;;13520:8:0;;::::1;::::0;-1:-1:-1;;;13534:8:0;::::1;;13515:18;:28::i;:::-;13507:5;:36:::0;13496:47:::1;13595:34;::::0;;4633:25:1;;;4689:2;4674:18;;4667:34;;;13600:10:0::1;::::0;13595:34:::1;::::0;4606:18:1;13595:34:0::1;;;;;;;-1:-1:-1::0;;9472:1:0;9461:8;:12;-1:-1:-1;12474:1161:0;;;-1:-1:-1;;;;;;12474:1161:0:o;13743:1388::-;13792:12;13806;9392:8;;9404:1;9392:13;9384:43;;;;-1:-1:-1;;;9384:43:0;;;;;;;:::i;:::-;9445:1;9434:8;:12;;;9445:1;13869:13:::1;:11;:13::i;:::-;-1:-1:-1::0;13922:6:0::1;::::0;13999::::1;::::0;14074:40:::1;::::0;-1:-1:-1;;;14074:40:0;;14108:4:::1;14074:40;::::0;::::1;2738:51:1::0;13827:55:0;;-1:-1:-1;13827:55:0;;-1:-1:-1;;;;;;13922:6:0;;::::1;::::0;13999;::::1;::::0;13904:15:::1;::::0;13922:6;;14074:25:::1;::::0;2711:18:1;;14074:40:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14137;::::0;-1:-1:-1;;;14137:40:0;;14171:4:::1;14137:40;::::0;::::1;2738:51:1::0;14058:56:0;;-1:-1:-1;14121:13:0::1;::::0;-1:-1:-1;;;;;14137:25:0;::::1;::::0;::::1;::::0;2711:18:1;;14137:40:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14219:4;14184:14;14201:24:::0;;;:9:::1;:24;::::0;;;;;14121:56;;-1:-1:-1;14247:30:0::1;14256:9:::0;14267;14247:8:::1;:30::i;:::-;14284:17;14304:11:::0;14234:43;;-1:-1:-1;14304:11:0;14410:23:::1;:9:::0;14424:8;14410:13:::1;:23::i;:::-;:38;;;;:::i;:::-;14400:48:::0;-1:-1:-1;14539:12:0;14513:23:::1;:9:::0;14527:8;14513:13:::1;:23::i;:::-;:38;;;;:::i;:::-;14503:48;;14624:1;14614:7;:11;:26;;;;;14639:1;14629:7;:11;14614:26;14606:79;;;::::0;-1:-1:-1;;;14606:79:0;;10500:2:1;14606:79:0::1;::::0;::::1;10482:21:1::0;10539:2;10519:18;;;10512:30;10578:34;10558:18;;;10551:62;-1:-1:-1;;;10629:18:1;;;10622:38;10677:19;;14606:79:0::1;10298:404:1::0;14606:79:0::1;14692:31;14706:4;14713:9;14692:5;:31::i;:::-;14730:35;14744:7;14753:2;14757:7;14730:13;:35::i;:::-;14772;14786:7;14795:2;14799:7;14772:13;:35::i;:::-;14825:40;::::0;-1:-1:-1;;;14825:40:0;;14859:4:::1;14825:40;::::0;::::1;2738:51:1::0;-1:-1:-1;;;;;14825:25:0;::::1;::::0;::::1;::::0;2711:18:1;;14825:40:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14883;::::0;-1:-1:-1;;;14883:40:0;;14917:4:::1;14883:40;::::0;::::1;2738:51:1::0;14814::0;;-1:-1:-1;;;;;;14883:25:0;::::1;::::0;::::1;::::0;2711:18:1;;14883:40:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14872:51;;14932:49;14940:8;14950;14960:9;14971;14932:7;:49::i;:::-;14992:5;14988:47;;;15026:8;::::0;15007:28:::1;::::0;-1:-1:-1;;;;;15012:8:0;;::::1;::::0;-1:-1:-1;;;15026:8:0;::::1;;15007:18;:28::i;:::-;14999:5;:36:::0;14988:47:::1;15087:38;::::0;;4633:25:1;;;4689:2;4674:18;;4667:34;;;-1:-1:-1;;;;;15087:38:0;::::1;::::0;15092:10:::1;::::0;15087:38:::1;::::0;4606:18:1;15087:38:0::1;;;;;;;13820:1311;;;;;;;;;9472:1:::0;9461:8;:12;;;;13743:1388;;;:::o;5308:129::-;5368:4;5381:32;5391:10;5403:2;5407:5;5381:9;:32::i;17093:316::-;9392:8;;9404:1;9392:13;9384:43;;;;-1:-1:-1;;;9384:43:0;;;;;;;:::i;:::-;9445:1;9434:8;:12;17158:6:::1;::::0;17204::::1;::::0;17304:8:::1;::::0;17259:40:::1;::::0;-1:-1:-1;;;17259:40:0;;17293:4:::1;17259:40;::::0;::::1;2738:51:1::0;-1:-1:-1;;;;;17158:6:0;;::::1;::::0;17204;;::::1;::::0;17232:82:::1;::::0;17158:6;;17255:2;;17259:54:::1;::::0;-1:-1:-1;;;;;17304:8:0;;::::1;::::0;17158:6;;17259:25:::1;::::0;2711:18:1;;17259:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:54::-;17232:13;:82::i;:::-;17393:8;::::0;17348:40:::1;::::0;-1:-1:-1;;;17348:40:0;;17382:4:::1;17348:40;::::0;::::1;2738:51:1::0;17321:82:0::1;::::0;17335:7;;17344:2;;17348:54:::1;::::0;-1:-1:-1;;;17393:8:0;;::::1;-1:-1:-1::0;;;;;17393:8:0::1;::::0;-1:-1:-1;;;;;17348:25:0;::::1;::::0;::::1;::::0;2711:18:1;;17348:40:0::1;2592:203:1::0;17321:82:0::1;-1:-1:-1::0;;9472:1:0;9461:8;:12;-1:-1:-1;17093:316:0:o;5735:612::-;5877:15;5865:8;:27;;5857:58;;;;-1:-1:-1;;;5857:58:0;;10909:2:1;5857:58:0;;;10891:21:1;10948:2;10928:18;;;10921:30;-1:-1:-1;;;10967:18:1;;;10960:48;11025:18;;5857:58:0;10707:342:1;5857:58:0;6005:16;;-1:-1:-1;;;;;6093:13:0;;5922:14;6093:13;;;:6;:13;;;;;:15;;5922:14;;6005:16;3818:66;;6070:5;;6077:7;;6086:5;;6093:15;5922:14;6093:15;;;:::i;:::-;;;;-1:-1:-1;6042:77:0;;;;;;11481:25:1;;;;-1:-1:-1;;;;;11580:15:1;;;11560:18;;;11553:43;11632:15;;;;11612:18;;;11605:43;11664:18;;;11657:34;11707:19;;;11700:35;11751:19;;;11744:35;;;11453:19;;6042:77:0;;;;;;;;;;;;6032:88;;;;;;5957:172;;;;;;;;-1:-1:-1;;;12048:27:1;;12100:1;12091:11;;12084:27;;;;12136:2;12127:12;;12120:28;12173:2;12164:12;;11790:392;5957:172:0;;;;-1:-1:-1;;5957:172:0;;;;;;;;;5939:197;;5957:172;5939:197;;;;6143:24;6170:26;;;;;;;;;12414:25:1;;;12487:4;12475:17;;12455:18;;;12448:45;;;;12509:18;;;12502:34;;;12552:18;;;12545:34;;;5939:197:0;;-1:-1:-1;6143:24:0;6170:26;;12386:19:1;;6170:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6170:26:0;;-1:-1:-1;;6170:26:0;;;-1:-1:-1;;;;;;;6211:30:0;;;;;;:59;;;6265:5;-1:-1:-1;;;;;6245:25:0;:16;-1:-1:-1;;;;;6245:25:0;;6211:59;6203:100;;;;-1:-1:-1;;;6203:100:0;;12792:2:1;6203:100:0;;;12774:21:1;12831:2;12811:18;;;12804:30;12870;12850:18;;;12843:58;12918:18;;6203:100:0;12590:352:1;6203:100:0;6310:31;6319:5;6326:7;6335:5;6310:8;:31::i;:::-;5850:497;;5735:612;;;;;;;:::o;17454:152::-;9392:8;;9404:1;9392:13;9384:43;;;;-1:-1:-1;;;9384:43:0;;;;;;;:::i;:::-;9445:1;9434:8;:12;17506:6:::1;::::0;17499:39:::1;::::0;-1:-1:-1;;;17499:39:0;;17532:4:::1;17499:39;::::0;::::1;2738:51:1::0;17491:109:0::1;::::0;-1:-1:-1;;;;;17506:6:0::1;::::0;17499:24:::1;::::0;2711:18:1;;17499:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17547:6;::::0;17540:39:::1;::::0;-1:-1:-1;;;17540:39:0;;17573:4:::1;17540:39;::::0;::::1;2738:51:1::0;-1:-1:-1;;;;;17547:6:0;;::::1;::::0;17540:24:::1;::::0;2711:18:1;;17540:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17581:8;::::0;-1:-1:-1;;;;;17581:8:0;;::::1;::::0;-1:-1:-1;;;17591:8:0;::::1;;17491:7;:109::i;:::-;9472:1:::0;9461:8;:12;17454:152::o;9708:277::-;8742:34;;;;;;;;;;;;;;;;;9832:43;;-1:-1:-1;;;;;13139:32:1;;;9832:43:0;;;13121:51:1;13188:18;;;;13181:34;;;9832:43:0;;;;;;;;;;13094:18:1;;;;9832:43:0;;;;;;;-1:-1:-1;;;;;9832:43:0;-1:-1:-1;;;9832:43:0;;;9821:55;;-1:-1:-1;;;;9821:10:0;;;:55;;9832:43;9821:55;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9785:91;;;;9891:7;:57;;;;-1:-1:-1;9903:11:0;;:16;;:44;;;9934:4;9923:24;;;;;;;;;;;;:::i;:::-;9883:96;;;;-1:-1:-1;;;9883:96:0;;14002:2:1;9883:96:0;;;13984:21:1;14041:2;14021:18;;;14014:30;14080:28;14060:18;;;14053:56;14126:18;;9883:96:0;13800:350:1;9883:96:0;9778:207;;9708:277;;;:::o;3145:136::-;3197:6;3220;;;:30;;-1:-1:-1;3249:1:0;3244;3235:5;3244:1;3249;3235:5;:::i;:::-;3231:9;-1:-1:-1;3230:15:0;;3231:9;3230:15;:::i;:::-;:20;3220:30;3212:63;;;;-1:-1:-1;;;3212:63:0;;14530:2:1;3212:63:0;;;14512:21:1;14569:2;14549:18;;;14542:30;-1:-1:-1;;;14588:18:1;;;14581:50;14648:18;;3212:63:0;14328:344:1;3016:123:0;3068:6;3106:1;3096:5;3100:1;3106;3096:5;:::i;:::-;3092:9;;;3091:16;;3083:50;;;;-1:-1:-1;;;3083:50:0;;14879:2:1;3083:50:0;;;14861:21:1;14918:2;14898:18;;;14891:30;-1:-1:-1;;;14937:18:1;;;14930:51;14998:18;;3083:50:0;14677:345:1;10743:816:0;-1:-1:-1;;;;;10851:29:0;;;;;:62;;-1:-1:-1;;;;;;10884:29:0;;;10851:62;10843:94;;;;-1:-1:-1;;;10843:94:0;;15229:2:1;10843:94:0;;;15211:21:1;15268:2;15248:18;;;15241:30;-1:-1:-1;;;15287:18:1;;;15280:49;15346:18;;10843:94:0;15027:343:1;10843:94:0;10944:21;10975:23;10993:5;10975:15;:23;:::i;:::-;11044:18;;10944:55;;-1:-1:-1;11006:18:0;;11027:35;;-1:-1:-1;;;11044:18:0;;;;10944:55;11027:35;:::i;:::-;11006:56;;11110:1;11096:11;:15;;;:33;;;;-1:-1:-1;;;;;;11115:14:0;;;;11096:33;:51;;;;-1:-1:-1;;;;;;11133:14:0;;;;11096:51;11092:314;;;11290:11;11237:64;;11242:44;11276:9;11242:27;11259:9;11242:16;:27::i;:::-;-1:-1:-1;;;;;11242:33:0;;;:44::i;:::-;-1:-1:-1;;;;;11237:50:0;:64;;;;:::i;:::-;11213:20;;:88;;;;;;;:::i;:::-;;;;-1:-1:-1;;11334:64:0;;;11339:44;11373:9;11339:27;11356:9;11339:16;:27::i;:44::-;-1:-1:-1;;;;;11334:50:0;:64;;;;:::i;:::-;11310:20;;:88;;;;;;;:::i;:::-;;;;-1:-1:-1;;11092:314:0;11412:8;:28;;11482:35;;;-1:-1:-1;;;11482:35:0;-1:-1:-1;;;;;;;;;;11447:28:0;;;-1:-1:-1;;;11447:28:0;;;-1:-1:-1;;;;;;11447:28:0;;;11412;;;11447;;;;;11482:35;;;;;;;;;11529:24;;;11534:8;;;;;;;;;;16025:34:1;;11544:8:0;;;;;;;16090:2:1;16075:18;;16068:43;11529:24:0;;15949:18:1;11529:24:0;;;;;;;10836:723;;10743:816;;;;:::o;4788:159::-;-1:-1:-1;;;;;4865:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;4910:31;;2946:25:1;;;4910:31:0;;2919:18:1;4910:31:0;;;;;;;;4788:159;;;:::o;4953:206::-;-1:-1:-1;;;;;5043:15:0;;;;;;:9;:15;;;;;;:26;;5063:5;5043:19;:26::i;:::-;-1:-1:-1;;;;;5025:15:0;;;;;;;:9;:15;;;;;;:44;;;;5092:13;;;;;;;:24;;5110:5;5092:17;:24::i;:::-;-1:-1:-1;;;;;5076:13:0;;;;;;;:9;:13;;;;;;;:40;;;;5128:25;;;;;;;;;;5147:5;2946:25:1;;2934:2;2919:18;;2800:177;11645:721:0;11718:10;11737:13;11771:7;;;;;;;;;-1:-1:-1;;;;;11771:7:0;-1:-1:-1;;;;;11753:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11842:5;;-1:-1:-1;;;;;11802:19:0;;;;;;-1:-1:-1;11737:50:0;;-1:-1:-1;11842:5:0;11869:492;;11893:11;;11889:416;;11917:10;11930:41;11940:30;-1:-1:-1;;;;;11940:15:0;;;;:30;;:19;:30::i;11930:41::-;11917:54;;11982:14;11999:17;12009:6;11999:9;:17::i;:::-;11982:34;;12039:9;12031:5;:17;12027:269;;;12063:14;12080:37;12096:20;:5;12106:9;12096;:20::i;:::-;12080:11;;;:15;:37::i;:::-;12063:54;-1:-1:-1;12130:16:0;12149:27;12166:9;12149:12;:5;12159:1;12149:9;:12::i;:::-;:16;;:27::i;:::-;12130:46;-1:-1:-1;12189:14:0;12206:23;12130:46;12206:9;:23;:::i;:::-;12189:40;-1:-1:-1;12246:13:0;;12242:42;;12261:23;12267:5;12274:9;12261:5;:23::i;:::-;12050:246;;;12027:269;11906:399;;11889:416;11869:492;;;12322:11;;12318:43;;12352:1;12344:5;:9;12318:43;11730:636;;11645:721;;;;:::o;6576:243::-;6621:6;6644:1;6640;:5;6636:178;;;-1:-1:-1;6660:1:0;6670:6;6679:5;6683:1;6660;6679:5;:::i;:::-;:9;;6687:1;6679:9;:::i;:::-;6670:18;;6697:70;6708:1;6704;:5;6697:70;;;6726:1;-1:-1:-1;6726:1:0;6756;6726;6743:5;6726:1;6743;:5;:::i;:::-;:9;;;;:::i;:::-;6742:15;;;;:::i;:::-;6738:19;;6697:70;;;6647:127;6576:243;;;:::o;6636:178::-;6784:6;;6780:34;;-1:-1:-1;6805:1:0;6780:34;6576:243;;;:::o;4394:187::-;4463:11;;:22;;4479:5;4463:15;:22::i;:::-;4449:11;:36;;;-1:-1:-1;;;;;4508:13:0;;;;:9;:13;;;;;;:24;;4526:5;4508:17;:24::i;:::-;-1:-1:-1;;;;;4492:13:0;;;;;;:9;:13;;;;;;:40;;;;4544:31;;4492:13;;;4544:31;;;;4569:5;2946:25:1;;2934:2;2919:18;;2800:177;4544:31:0;;;;;;;;4394:187;;:::o;6372:90::-;6424:6;6447:1;6443;:5;:13;;6455:1;6443:13;;;6451:1;6443:13;6439:17;6372:90;-1:-1:-1;;;6372:90:0:o;4587:195::-;-1:-1:-1;;;;;4662:15:0;;;;;;:9;:15;;;;;;:26;;4682:5;4662:19;:26::i;:::-;-1:-1:-1;;;;;4644:15:0;;;;;;:9;:15;;;;;:44;;;;4709:11;:22;;4725:5;4709:15;:22::i;:::-;4695:11;:36;;;4743:33;;2946:25:1;;;-1:-1:-1;;;;;4743:33:0;;;;;2934:2:1;2919:18;4743:33:0;2800:177:1;6924:114:0;6974:9;6996:17;-1:-1:-1;;;;;;;;6996:10:0;;:17;:::i;7105:102::-;7165:9;7187:14;-1:-1:-1;;;;;7191:10:0;;7187:1;:14;:::i;2888:122::-;2940:6;2978:1;2968:5;2972:1;2978;2968:5;:::i;:::-;2964:9;;;2963:16;;2955:49;;;;-1:-1:-1;;;2955:49:0;;17076:2:1;2955:49:0;;;17058:21:1;17115:2;17095:18;;;17088:30;-1:-1:-1;;;17134:18:1;;;17127:50;17194:18;;2955:49:0;16874:344:1;14:131;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:863::-;247:6;255;263;271;279;332:3;320:9;311:7;307:23;303:33;300:53;;;349:1;346;339:12;300:53;385:9;372:23;362:33;;442:2;431:9;427:18;414:32;404:42;;496:2;485:9;481:18;468:32;509:31;534:5;509:31;:::i;:::-;559:5;-1:-1:-1;615:2:1;600:18;;587:32;638:18;668:14;;;665:34;;;695:1;692;685:12;665:34;733:6;722:9;718:22;708:32;;778:7;771:4;767:2;763:13;759:27;749:55;;800:1;797;790:12;749:55;840:2;827:16;866:2;858:6;855:14;852:34;;;882:1;879;872:12;852:34;927:7;922:2;913:6;909:2;905:15;901:24;898:37;895:57;;;948:1;945;938:12;895:57;150:863;;;;-1:-1:-1;150:863:1;;-1:-1:-1;979:2:1;971:11;;1001:6;150:863;-1:-1:-1;;;150:863:1:o;1018:250::-;1103:1;1113:113;1127:6;1124:1;1121:13;1113:113;;;1203:11;;;1197:18;1184:11;;;1177:39;1149:2;1142:10;1113:113;;;-1:-1:-1;;1260:1:1;1242:16;;1235:27;1018:250::o;1273:396::-;1422:2;1411:9;1404:21;1385:4;1454:6;1448:13;1497:6;1492:2;1481:9;1477:18;1470:34;1513:79;1585:6;1580:2;1569:9;1565:18;1560:2;1552:6;1548:15;1513:79;:::i;:::-;1653:2;1632:15;-1:-1:-1;;1628:29:1;1613:45;;;;1660:2;1609:54;;1273:396;-1:-1:-1;;1273:396:1:o;2080:315::-;2148:6;2156;2209:2;2197:9;2188:7;2184:23;2180:32;2177:52;;;2225:1;2222;2215:12;2177:52;2264:9;2251:23;2283:31;2308:5;2283:31;:::i;:::-;2333:5;2385:2;2370:18;;;;2357:32;;-1:-1:-1;;;2080:315:1:o;2982:456::-;3059:6;3067;3075;3128:2;3116:9;3107:7;3103:23;3099:32;3096:52;;;3144:1;3141;3134:12;3096:52;3183:9;3170:23;3202:31;3227:5;3202:31;:::i;:::-;3252:5;-1:-1:-1;3309:2:1;3294:18;;3281:32;3322:33;3281:32;3322:33;:::i;:::-;2982:456;;3374:7;;-1:-1:-1;;;3428:2:1;3413:18;;;;3400:32;;2982:456::o;3814:388::-;3882:6;3890;3943:2;3931:9;3922:7;3918:23;3914:32;3911:52;;;3959:1;3956;3949:12;3911:52;3998:9;3985:23;4017:31;4042:5;4017:31;:::i;:::-;4067:5;-1:-1:-1;4124:2:1;4109:18;;4096:32;4137:33;4096:32;4137:33;:::i;:::-;4189:7;4179:17;;;3814:388;;;;;:::o;4207:247::-;4266:6;4319:2;4307:9;4298:7;4294:23;4290:32;4287:52;;;4335:1;4332;4325:12;4287:52;4374:9;4361:23;4393:31;4418:5;4393:31;:::i;4712:829::-;4823:6;4831;4839;4847;4855;4863;4871;4924:3;4912:9;4903:7;4899:23;4895:33;4892:53;;;4941:1;4938;4931:12;4892:53;4980:9;4967:23;4999:31;5024:5;4999:31;:::i;:::-;5049:5;-1:-1:-1;5106:2:1;5091:18;;5078:32;5119:33;5078:32;5119:33;:::i;:::-;5171:7;-1:-1:-1;5225:2:1;5210:18;;5197:32;;-1:-1:-1;5276:2:1;5261:18;;5248:32;;-1:-1:-1;5332:3:1;5317:19;;5304:33;5381:4;5368:18;;5356:31;;5346:59;;5401:1;5398;5391:12;5346:59;4712:829;;;;-1:-1:-1;4712:829:1;;;;5424:7;5478:3;5463:19;;5450:33;;-1:-1:-1;5530:3:1;5515:19;;;5502:33;;4712:829;-1:-1:-1;;4712:829:1:o;5546:341::-;5748:2;5730:21;;;5787:2;5767:18;;;5760:30;-1:-1:-1;;;5821:2:1;5806:18;;5799:47;5878:2;5863:18;;5546:341::o;7050:632::-;7320:1;7316;7311:3;7307:11;7303:19;7295:6;7291:32;7280:9;7273:51;7360:6;7355:2;7344:9;7340:18;7333:34;7403:6;7398:2;7387:9;7383:18;7376:34;7446:3;7441:2;7430:9;7426:18;7419:31;7487:6;7481:3;7470:9;7466:19;7459:35;7545:6;7537;7531:3;7520:9;7516:19;7503:49;7602:1;7572:22;;;7596:3;7568:32;;;7561:43;;;;7665:2;7644:15;;;-1:-1:-1;;7640:29:1;7625:45;7621:55;;7050:632;-1:-1:-1;;;;7050:632:1:o;7687:184::-;7757:6;7810:2;7798:9;7789:7;7785:23;7781:32;7778:52;;;7826:1;7823;7816:12;7778:52;-1:-1:-1;7849:16:1;;7687:184;-1:-1:-1;7687:184:1:o;7876:127::-;7937:10;7932:3;7928:20;7925:1;7918:31;7968:4;7965:1;7958:15;7992:4;7989:1;7982:15;8008:128;8075:9;;;8096:11;;;8093:37;;;8110:18;;:::i;9632:127::-;9693:10;9688:3;9684:20;9681:1;9674:31;9724:4;9721:1;9714:15;9748:4;9745:1;9738:15;9764:120;9804:1;9830;9820:35;;9835:18;;:::i;:::-;-1:-1:-1;9869:9:1;;9764:120::o;11054:135::-;11093:3;11114:17;;;11111:43;;11134:18;;:::i;:::-;-1:-1:-1;11181:1:1;11170:13;;11054:135::o;13226:287::-;13355:3;13393:6;13387:13;13409:66;13468:6;13463:3;13456:4;13448:6;13444:17;13409:66;:::i;:::-;13491:16;;;;;13226:287;-1:-1:-1;;13226:287:1:o;13518:277::-;13585:6;13638:2;13626:9;13617:7;13613:23;13609:32;13606:52;;;13654:1;13651;13644:12;13606:52;13686:9;13680:16;13739:5;13732:13;13725:21;13718:5;13715:32;13705:60;;13761:1;13758;13751:12;14155:168;14228:9;;;14259;;14276:15;;;14270:22;;14256:37;14246:71;;14297:18;;:::i;15375:112::-;15407:1;15433;15423:35;;15438:18;;:::i;:::-;-1:-1:-1;15472:9:1;;15375:112::o;15492:175::-;15560:10;15603;;;15591;;;15587:27;;15626:12;;;15623:38;;;15641:18;;:::i;:::-;15623:38;15492:175;;;;:::o;15672:125::-;15737:9;;;15758:10;;;15755:36;;;15771:18;;:::i;16122:251::-;16192:6;16245:2;16233:9;16224:7;16220:23;16216:32;16213:52;;;16261:1;16258;16251:12;16213:52;16293:9;16287:16;16312:31;16337:5;16312:31;:::i;16378:285::-;-1:-1:-1;;;;;16519:10:1;;;16489;;;16553:13;;;16549:22;;;16450:19;16593:11;;16614:17;;;16606:26;;16590:43;16580:77;;16637:18;;:::i;:::-;16580:77;;;16378:285;;;;:::o;16668:201::-;16708:1;-1:-1:-1;;;;;16773:10:1;;;;16792:37;;16809:18;;:::i;:::-;16847:10;;16843:20;;;;;16668:201;-1:-1:-1;;16668:201:1:o
Swarm Source
ipfs://9d7629e63494de4124f09695b7a973c100cb7deb99d2dd6bacbccccc27e82647
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.