ERC-20
NFT
Overview
Max Total Supply
1,000,000 DCX
Holders
742 (0.00%)
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 |
---|
Contract Name:
DECEXERC20
Compiler Version
v0.6.6+commit.6c089d02
Contract Source Code (Solidity)Audit Report
/** *Submitted for verification at Etherscan.io on 2021-01-26 */ pragma solidity ^0.6.6; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function 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 removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) 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 swapTokensForExactTokens( uint amountOut, uint amountInMax, 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 swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); 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 IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message 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, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); 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) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message 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, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract UniPart is Ownable{ using SafeMath for uint256; using Address for address; address public constant unifactoryAddress = 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f; address public constant UNISWAP_ROUTER_ADDRESS = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; IUniswapV2Factory public factory; IUniswapV2Router02 public uniswapRouter; event CreateUniPairEvent(address uniPair, uint timeStamp); event InitialPairEvent(uint256 DecexIn, uint256 ETHIN, uint timeStamp); uint public constant initialDecexIn = 40e18; //add with 0.1 eth function createPair() public onlyOwner returns (address){ address uniPair; if (factory.getPair(address(this), uniswapRouter.WETH()) == address(0)) { uint createdTime = block.timestamp; uniPair = factory.createPair(address(this), uniswapRouter.WETH()); emit CreateUniPairEvent(uniPair,createdTime); }else{ uniPair = factory.getPair(address(this), uniswapRouter.WETH()); } return uniPair; } function initialPair() public payable onlyOwner returns (bool){ //create pair with liquidity and add pair and uniswap routerV2 to white list to enable buy and sell uint deadline = block.timestamp + 15; IERC20 DecexToken = IERC20(address(this)); require(DecexToken.approve(address(UNISWAP_ROUTER_ADDRESS), initialDecexIn), 'approve failed.'); // require(WETHToken.approve(address(UNISWAP_ROUTER_ADDRESS), initialETHIn), 'approve failed.'); uniswapRouter.addLiquidityETH{ value: msg.value }(address(this), initialDecexIn , initialDecexIn, msg.value ,address(this),deadline); emit InitialPairEvent(initialDecexIn, msg.value ,deadline ); return true; } function getPair() public view returns (address){ return factory.getPair(address(this), uniswapRouter.WETH()); } } contract ManagementPart is UniPart { using SafeMath for uint256; using Address for address; address public uniPair; mapping (address => bool) public _whiteList; mapping (address => bool) public _frozenAccount; event FrozenAccountEvent(address account, bool frozen); event ChangeWhiteListEvent(address account, bool isWhite); function addWhiteList(address _user) public onlyOwner { require(_user != address(0), "Ownable: new owner is the zero address"); require(_frozenAccount[msg.sender] != true, "sender was frozen" ); _whiteList[_user] = true; emit ChangeWhiteListEvent( _user, true); } function removeWhiteList(address _user) public onlyOwner { require(_user != address(0), "Ownable: new owner is the zero address"); require(_frozenAccount[msg.sender] != true, "sender was frozen" ); _whiteList[_user] = false; emit ChangeWhiteListEvent( _user, false); } function freezeAccount(address target, bool freeze) public onlyOwner { _frozenAccount[target] = freeze; emit FrozenAccountEvent( target, freeze); } function isWhiteList(address account) public view returns (bool) { return _whiteList[account]; } } contract DECEXERC20 is ManagementPart,IERC20 { using SafeMath for uint256; using Address for address; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////public usage part///////////////////// mapping (address => mapping (address => uint256)) private _allowances; mapping (address => uint256) public _balances; uint256 public _totalSupply; string public _name; string public _symbol; uint8 public _decimals; ///////////////UniSwap part////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////token distribution part///////////////////// uint256 public constant MaxSupply = 1000000e18; uint256 public initialSupply; ///////////////10% for airDrop and Marketing//////////// //mint 1% for public airdrop //mint 0.5% for CoreAirdrop uint256 public constant forAirdropSociety = 5000e18; //0.5% uint256 public constant forAirdropMedia = 5000e18; //0.5% uint256 public constant forMarketing = 80000e18; //8% //////////////////////////////////////////////////////// uint256 public constant forSeedSell = 50000e18; //5% uint256 public constant forGenesisStakingPool = 50000e18; //lock 30 days 5% uint256 public constant forLaterProgress = 100000e18; //lock 90 days 10% uint256 public constant forProjectKeep = 50000e18; // lock 90 days 5% uint256 public constant initialLiquidity = 40e18; ///40 dcx for initail uniswap pool uint256 public constant forLiquidity = 199960e18; //20% 40 decex for initial liquidity uint256 public constant forPublicSell = 450000e18; //45% 45w decex for PublicSellContract address public _forAirdropSocietyAddress = address(0xe2E68a22A3Ad7B8181b6A6bFC8a985B4c7c5367D); address public _forAirdropMediaAddress = address(0xF26C3875b2BA60FEcDcec2c615c85FbD139a1503); address public _forMarketingAddress = address(0xf2342b1D5154C0f06F1eb7E8d09f0e71Ba103734); address public _forSeedSellAddress = address(0x8353B27a37C4bFb648A510358998AEEdBF68D9d0); address public _forGenesisStakingPoolAddress = address(0x1ca7163c8C323F14d5054e28Eac2DF196bCd104f); //10% lock 30 days //5 address public _forLaterProgressAddress = address(0xF662B5c689c8382367aFEDbdBFa9085EF07Af3AB); //10% lock 90 days //6 address public _forProjectKeepAddress = address(0xC564b835AAdF56De1884FED770643a61eB0426A7); //5% lock 90 days //7 address public _forLiquidPoolAddress = address(0x695493347bb71bF68683bC0628dd1180dbc39d61); //20% //8 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////charge part burn//////// uint256 public constant _rateBase = 100000; uint256 public _totalBurnToken = 0; //c uint256 public constant _maxBurnAmount = 799083e18; //c 799083e18 address public _burnAddress = address(0); uint256 public _toBurn_rate = 1000; uint256 public _toLiquidity_rate = 1000; uint256 public _toBuyBack_rate = 2000; uint256 public _toProject_rate = 1000; address public _toLiquidPoolChargeAddress = address(0); //9 contract address address public _toBuyBackPoolChargeAddress = address(0x14A777403FCe6271A4b5fce7a27c866f33671ade); //10 address public _toProjectPoolChargeAddress= address(0xcB1350E994d8BcbA55575ABe429D953e2B4a7208); //11 event DecexChargeFeeEvent(address sender ,uint256 burn, uint256 toLiquidity, uint256 buyBack , uint256 toProject); event TransferToPoolEvent( address poolAddress, uint256 value); event SetToLiquidPoolEvent(address newPool); event SetToBuyBack_PoolEvent(address newPool); event SetToProjectPoolEvent(address newPool); event SetChargeFeeEvent(uint256 new_toBurn_rate, uint256 new_toLiquidity_rate, uint256 new_toBuyBack_rate , uint256 new_toProject_rate); function setChargeFee( uint256 toBurn_rate, uint256 toLiquidity_rate, uint256 toBuyBack_rate, uint256 toProject_rate ) public onlyOwner{ require(toBurn_rate > 0 && toBurn_rate < _rateBase, "toBurn rate must more than zero" ); require(toLiquidity_rate > 0 && toLiquidity_rate < _rateBase, "toLiquidity rate must more than zero" ); require(toBuyBack_rate > 0 && toBuyBack_rate < _rateBase, "toBuyBack rate must more than zero" ); require(toProject_rate > 0 && toProject_rate < _rateBase, "toProject rate must more than zero" ); require(_frozenAccount[msg.sender] != true, "sender was frozen" ); require(_toLiquidPoolChargeAddress != address(0), "toLiquidPool not set" ); require(_toBuyBackPoolChargeAddress != address(0), "toBuyBackPool not set" ); require(_toProjectPoolChargeAddress != address(0), "toProjectPool not set" ); _toBurn_rate = toBurn_rate; _toLiquidity_rate = toLiquidity_rate; _toBuyBack_rate = toBuyBack_rate; _toProject_rate = toProject_rate; emit SetChargeFeeEvent(toBurn_rate, toLiquidity_rate, toBuyBack_rate, toProject_rate); } function setToLiquidPool( address payable newPoolAddress ) public onlyOwner{ require(newPoolAddress != address(0), "invild address" ); require(_frozenAccount[msg.sender] != true, "sender was frozen" ); _toLiquidPoolChargeAddress = newPoolAddress; emit SetToLiquidPoolEvent( newPoolAddress); } function setToBuyBack_Pool( address payable newPoolAddress ) public onlyOwner{ require(newPoolAddress != address(0), "invild address" ); require(_frozenAccount[msg.sender] != true, "sender was frozen" ); _toBuyBackPoolChargeAddress = newPoolAddress; emit SetToBuyBack_PoolEvent(newPoolAddress); } function setToProjectPool( address payable newPoolAddress ) public onlyOwner{ require(newPoolAddress != address(0), "invild address" ); require(_frozenAccount[msg.sender] != true, "sender was frozen" ); _toProjectPoolChargeAddress = newPoolAddress; emit SetToProjectPoolEvent(newPoolAddress); } function getPoolAddresses() public view returns (address,address,address){ return (_toLiquidPoolChargeAddress,_toBuyBackPoolChargeAddress, _toProjectPoolChargeAddress); } function _transferToPool( address sender, address poolAddress, uint256 amount ) internal virtual { require(amount > 0 , "ERC20: transfer amount less than zero 1 "); _transfer(sender, poolAddress, amount); } function _charge(uint256 amountBefore, address sender) internal virtual returns (uint256){ require(amountBefore > 0 , "ERC20: transfer amount less than zero 2"); uint256 liquidityFee = amountBefore.mul(_toLiquidity_rate).div(_rateBase); uint256 buyBackFee = amountBefore.mul(_toBuyBack_rate).div(_rateBase); uint256 toProjectFee = amountBefore.mul(_toProject_rate).div(_rateBase); uint256 burnFee = amountBefore.mul(_toBurn_rate).div(_rateBase); if (burnFee > 0) { //to burn if(_totalBurnToken < _maxBurnAmount){ amountBefore = amountBefore.sub(burnFee,'x1'); _totalBurnToken = _totalBurnToken.add(burnFee); _transferToPool(sender,_burnAddress,burnFee); } } if (liquidityFee > 0) { //to liquidPool toooooooooooo be implmented more specific amountBefore = amountBefore.sub(liquidityFee,'x2'); _transferToPool(sender, _toLiquidPoolChargeAddress, liquidityFee ); } if (buyBackFee > 0) { //to buybackAddress amountBefore = amountBefore.sub(buyBackFee,'x3'); _transferToPool(sender, _toBuyBackPoolChargeAddress, buyBackFee ); } if (toProjectFee> 0) { //to projectAddress amountBefore = amountBefore.sub(toProjectFee,'x4'); _transferToPool(sender, _toProjectPoolChargeAddress, toProjectFee ); } return (amountBefore); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //interface for Selling and Airdrop// mapping(address => bool) public allowedAddress; event AddActivityAddressEvent(uint8 activityIndex ,address account); event SendDcxEvent(uint8 activityIndex ,address ToAccount, uint256 amount); uint256 public constant publicAirdropTargetAmount = 10000e18; uint256 public publicAirdropMintAmount; function setActivityAddress(address account, uint8 lableIndex, bool turnOff) public onlyOwner { require(account != address(0), "zero address"); require(_frozenAccount[msg.sender] != true, "sender was frozen" ); allowedAddress[account] = turnOff; emit AddActivityAddressEvent( lableIndex, account); } function sendDcx(address account, uint256 amount , uint8 activityIndex) public { require(allowedAddress[msg.sender],'the address is not allowed, only activities contract address allowed'); require(account != address(0), "zero address"); require(amount > 0 , "invalid amount input"); if(activityIndex == 99 ){ require(publicAirdropMintAmount.add(amount) <= publicAirdropTargetAmount,"exceed"); _mint(account,amount,activityIndex); publicAirdropMintAmount = publicAirdropMintAmount.add(amount); } } function queryPublicAirDropMintStatus() public view returns (uint256 ,uint256){ return (publicAirdropMintAmount,publicAirdropTargetAmount); } function _mint(address account, uint256 amount, uint8 activityIndex) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); require(_totalSupply.add(amount) <= MaxSupply, "mint exceed maxSupply"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit SendDcxEvent(activityIndex, account, amount); } function checkAddress(address account) public view returns (bool){ return allowedAddress[account]; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /** * @dev Sets the values for {name} and {symbol}, initializes {decimals} with * a default value of 18. * * To select a different value for {decimals}, use {_setupDecimals}. * * All three of these values are immutable: they can only be set once during * construction. */ constructor() public { _name = "DeCEX"; _symbol = "DCX"; _decimals = 18; initialSupply = initialSupply.add(forAirdropSociety).add(forAirdropMedia).add(forMarketing).add(forSeedSell).add(forGenesisStakingPool).add(forLaterProgress).add(forProjectKeep).add(initialLiquidity).add(forLiquidity); _totalSupply = initialSupply; _balances[_forAirdropSocietyAddress] = forAirdropSociety; _balances[_forAirdropMediaAddress] = forAirdropMedia; _balances[_forMarketingAddress] = forMarketing; _balances[_forGenesisStakingPoolAddress] = forGenesisStakingPool; _balances[_forLaterProgressAddress] = forLaterProgress; _balances[_forProjectKeepAddress] = forProjectKeep; _balances[_forLiquidPoolAddress] = forLiquidity; _balances[_forSeedSellAddress] = forSeedSell; _balances[address(this)] = initialLiquidity; //40 dec _frozenAccount[_forGenesisStakingPoolAddress] = true; _frozenAccount[_forLaterProgressAddress] = true; _frozenAccount[_forProjectKeepAddress] = true; uniswapRouter = IUniswapV2Router02(UNISWAP_ROUTER_ADDRESS); factory = IUniswapV2Factory(uniswapRouter.factory()); } function setupUni(address toLiquidty) public payable onlyOwner { require(_frozenAccount[msg.sender] != true, "sender was frozen" ); _toLiquidPoolChargeAddress = toLiquidty; address uniPairCreated = createPair(); uniPair = uniPairCreated; addWhiteList(uniPairCreated); addWhiteList(UNISWAP_ROUTER_ADDRESS); addWhiteList(address(this)); addWhiteList(_toLiquidPoolChargeAddress); initialPair(); } function setupPublicSell(address contractAddress) public payable onlyOwner { require(_frozenAccount[msg.sender] != true, "sender was frozen" ); addWhiteList(contractAddress); _balances[contractAddress] = forPublicSell; _totalSupply = _totalSupply.add(forPublicSell); } ///////////////////////////////////////////////////////////////// /** * @dev Returns the name of the token. */ function name() public view returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is * called. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view returns (uint8) { return _decimals; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { if( _whiteList[_msgSender()]){ _transfer(_msgSender(), recipient, amount); }else{ uint256 transferToAmount = _charge(amount,_msgSender()); _transfer(_msgSender(), recipient, transferToAmount); } return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { require( _frozenAccount[owner] != true, "account frozen 3"); return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { require( _frozenAccount[spender] != true, "account frozen 4"); _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { if( _whiteList[sender]){ _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance 5")); }else{ uint256 transferToAmount = _charge(amount,sender); _transfer(sender, recipient, transferToAmount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance 5")); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { require( _frozenAccount[spender] != true, "account frozen 6"); _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { require( _frozenAccount[spender] != true, "account frozen 7"); _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero 8" )); return true; } function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(_frozenAccount[sender] != true, "sender was frozen" ); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { require(_frozenAccount[owner] != true, "sender was frozen" ); require(owner != address(0), "ERC20: approve from the zero address 13"); require(spender != address(0), "ERC20: approve to the zero address 14"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } }
Contract Security Audit
- TechRate - December, 2020 - Security Audit Report
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"activityIndex","type":"uint8"},{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"AddActivityAddressEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isWhite","type":"bool"}],"name":"ChangeWhiteListEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"uniPair","type":"address"},{"indexed":false,"internalType":"uint256","name":"timeStamp","type":"uint256"}],"name":"CreateUniPairEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toLiquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyBack","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toProject","type":"uint256"}],"name":"DecexChargeFeeEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"frozen","type":"bool"}],"name":"FrozenAccountEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"DecexIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ETHIN","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timeStamp","type":"uint256"}],"name":"InitialPairEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"activityIndex","type":"uint8"},{"indexed":false,"internalType":"address","name":"ToAccount","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SendDcxEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_toBurn_rate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"new_toLiquidity_rate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"new_toBuyBack_rate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"new_toProject_rate","type":"uint256"}],"name":"SetChargeFeeEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newPool","type":"address"}],"name":"SetToBuyBack_PoolEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newPool","type":"address"}],"name":"SetToLiquidPoolEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newPool","type":"address"}],"name":"SetToProjectPoolEvent","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":false,"internalType":"address","name":"poolAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferToPoolEvent","type":"event"},{"inputs":[],"name":"MaxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNISWAP_ROUTER_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_forAirdropMediaAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_forAirdropSocietyAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_forGenesisStakingPoolAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_forLaterProgressAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_forLiquidPoolAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_forMarketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_forProjectKeepAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_forSeedSellAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_frozenAccount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxBurnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rateBase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_toBurn_rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_toBuyBackPoolChargeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_toBuyBack_rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_toLiquidPoolChargeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_toLiquidity_rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_toProjectPoolChargeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_toProject_rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBurnToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_whiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"addWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allowedAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"checkAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forAirdropMedia","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forAirdropSociety","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forGenesisStakingPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forLaterProgress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forProjectKeep","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forPublicSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forSeedSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"freeze","type":"bool"}],"name":"freezeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolAddresses","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialDecexIn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"initialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicAirdropMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicAirdropTargetAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"queryPublicAirDropMintStatus","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint8","name":"activityIndex","type":"uint8"}],"name":"sendDcx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint8","name":"lableIndex","type":"uint8"},{"internalType":"bool","name":"turnOff","type":"bool"}],"name":"setActivityAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"toBurn_rate","type":"uint256"},{"internalType":"uint256","name":"toLiquidity_rate","type":"uint256"},{"internalType":"uint256","name":"toBuyBack_rate","type":"uint256"},{"internalType":"uint256","name":"toProject_rate","type":"uint256"}],"name":"setChargeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newPoolAddress","type":"address"}],"name":"setToBuyBack_Pool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newPoolAddress","type":"address"}],"name":"setToLiquidPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newPoolAddress","type":"address"}],"name":"setToProjectPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"setupPublicSell","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"toLiquidty","type":"address"}],"name":"setupUni","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unifactoryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052600d8054600160a060020a031990811673e2e68a22a3ad7b8181b6a6bfc8a985b4c7c5367d17909155600e8054821673f26c3875b2ba60fecdcec2c615c85fbd139a1503179055600f8054821673f2342b1d5154c0f06f1eb7e8d09f0e71ba103734179055601080548216738353b27a37c4bfb648a510358998aeedbf68d9d0179055601180548216731ca7163c8c323f14d5054e28eac2df196bcd104f17905560128054821673f662b5c689c8382367afedbdbfa9085ef07af3ab17905560138054821673c564b835aadf56de1884fed770643a61eb0426a717905560148054821673695493347bb71bf68683bc0628dd1180dbc39d61179055600060155560168054821690556103e8601781905560188190556107d0601955601a55601b805482169055601c805482167314a777403fce6271a4b5fce7a27c866f33671ade179055601d805490911673cb1350e994d8bcba55575abe429d953e2b4a72081790553480156200017457600080fd5b5060006200018a64010000000062000513810204565b60008054600160a060020a031916600160a060020a0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506040805180820190915260058082527f446543455800000000000000000000000000000000000000000000000000000060209092019182526200021a9160099162000594565b506040805180820190915260038082527f444358000000000000000000000000000000000000000000000000000000000060209092019182526200026191600a9162000594565b506012600b60006101000a81548160ff021916908360ff16021790555062000339692a57da733683c56000006200032468022b1c8c1227a0000062000324690a968163f0a57b4000006200032469152d02c7e14af680000062000324690a968163f0a57b40000062000324690a968163f0a57b400000620003246910f0cf064dd5920000006200032469010f0cf064dd592000006200032469010f0cf064dd59200000600c54620005186401000000000262003787179091906401000000009004565b90640100000000620037876200051882021704565b600c819055600855600d54600160a060020a03908116600090815260076020908152604080832069010f0cf064dd5920000090819055600e548516845281842055600f54841683528083206910f0cf064dd59200000090556011805485168452818420690a968163f0a57b40000090819055601280548716865283862069152d02c7e14af68000009055601380548816875284872083905560145488168752848720692a57da733683c56000009055601054881687528487209290925530865283862068022b1c8c1227a00000905591548616855260058452828520805460ff199081166001908117909255925487168652838620805484168217905590548616855293829020805490911690931790925560028054600160a060020a031916737a250d5630b4cf539739df2c5dacb4c659f2488d179081905582517fc45a0155000000000000000000000000000000000000000000000000000000008152925193169263c45a0155926004818101939291829003018186803b158015620004c057600080fd5b505afa158015620004d5573d6000803e3d6000fd5b505050506040513d6020811015620004ec57600080fd5b505160018054600160a060020a031916600160a060020a0390921691909117905562000636565b335b90565b6000828201838110156200058d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620005d757805160ff191683800117855562000607565b8280016001018555821562000607579182015b8281111562000607578251825591602001919060010190620005ea565b506200061592915062000619565b5090565b6200051591905b8082111562000615576000815560010162000620565b613d5580620006466000396000f3fe60806040526004361061046c5760003560e060020a9004806379b369431161024e578063c1f1b1b51161013d578063e4b6db4c116100ba578063e7cd4a041161007e578063e7cd4a0414610dff578063ea70b6d114610e32578063f2fde38b14610e58578063f60c750c14610e8b578063f99031a714610ea05761046c565b8063e4b6db4c14610d52578063e4c7774514610d92578063e5f4c56f14610d9a578063e62bbc6114610daf578063e724529c14610dc45761046c565b8063d576b9d411610101578063d576b9d414610cd8578063d5b157f914610ced578063d6d21f73146106f0578063db1ceca614610d02578063dd62ed3e14610d175761046c565b8063c1f1b1b514610c51578063c45a015514610c66578063d170cb4214610c7b578063d187f41714610cae578063d28d885214610cc35761046c565b80639e78fb4f116101cb578063b09f12661161018f578063b09f126614610be8578063b2bde85f14610bfd578063b36c128414610c12578063b6c22bad14610c27578063bd3900c014610c3c5761046c565b80639e78fb4f14610b08578063a1f3a60c14610b1d578063a253ce9c14610b32578063a457c2d714610b76578063a9059cbb14610baf5761046c565b80638da5cb5b116102125780638da5cb5b14610a6f578063901a71bc14610a8457806395d89b4114610ac05780639895633214610ad55780639b8d504a1461089d5761046c565b806379b3694314610a305780637a2bbdbc14610a455780637e2a24171461084057806384a3613e146106f05780638ca74be314610a5a5761046c565b8063378dc3dc1161036a5780634dc6ff7c116102e75780636ebcf607116102ab5780636ebcf6071461098b57806370a08231146109be578063715018a6146109f1578063735de9f714610a06578063775e137714610a1b5761046c565b80634dc6ff7c14610909578063531db2221461091e578063640f310e1461094c578063690d37c4146109615780636b563205146109765761046c565b8063409082981161032e5780634090829814610855578063433cc2041461088857806345149b821461089d57806346415e01146108b25780634db4fee8146108c75761046c565b8063378dc3dc146107c857806339509351146107dd5780633eaaf86b14610816578063401f4ed81461082b57806340702adc146108405761046c565b806323d0e08d116103f857806332424aa3116103bc57806332424aa31461073057806332972e46146107455780633361741a1461075a578063340959951461076f57806336636bb7146107a25761046c565b806323d0e08d146106b15780632d201af0146106c657806330daff5d146106db578063312ba46b146106f0578063313ce567146107055761046c565b80630ddcfe8e1161043f5780630ddcfe8e146105b0578063123974da146105e357806318160ddd146106145780632042e5c21461063b57806323b872dd1461066e5761046c565b806305d60ffb1461047157806306139c75146104b857806306fdde03146104ed578063095ea7b314610577575b600080fd5b34801561047d57600080fd5b506104a46004803603602081101561049457600080fd5b5035600160a060020a0316610ed3565b604080519115158252519081900360200190f35b3480156104c457600080fd5b506104eb600480360360208110156104db57600080fd5b5035600160a060020a0316610ee8565b005b3480156104f957600080fd5b50610502611050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561053c578181015183820152602001610524565b50505050905090810190601f1680156105695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561058357600080fd5b506104a46004803603604081101561059a57600080fd5b50600160a060020a0381351690602001356110e6565b3480156105bc57600080fd5b506104a4600480360360208110156105d357600080fd5b5035600160a060020a0316611178565b3480156105ef57600080fd5b506105f8611196565b60408051600160a060020a039092168252519081900360200190f35b34801561062057600080fd5b506106296111a5565b60408051918252519081900360200190f35b34801561064757600080fd5b506104eb6004803603602081101561065e57600080fd5b5035600160a060020a03166111ab565b34801561067a57600080fd5b506104a46004803603606081101561069157600080fd5b50600160a060020a03813581169160208101359091169060400135611307565b3480156106bd57600080fd5b506105f861141d565b3480156106d257600080fd5b50610629611435565b3480156106e757600080fd5b5061062961143b565b3480156106fc57600080fd5b50610629611441565b34801561071157600080fd5b5061071a61144f565b6040805160ff9092168252519081900360200190f35b34801561073c57600080fd5b5061071a611458565b34801561075157600080fd5b506105f8611461565b34801561076657600080fd5b506105f8611470565b34801561077b57600080fd5b506104eb6004803603602081101561079257600080fd5b5035600160a060020a031661147f565b6104eb600480360360208110156107b857600080fd5b5035600160a060020a03166115e7565b3480156107d457600080fd5b506106296116e5565b3480156107e957600080fd5b506104a46004803603604081101561080057600080fd5b50600160a060020a0381351690602001356116eb565b34801561082257600080fd5b506106296117b3565b34801561083757600080fd5b506106296117b9565b34801561084c57600080fd5b506106296117c7565b34801561086157600080fd5b506104a46004803603602081101561087857600080fd5b5035600160a060020a03166117d4565b34801561089457600080fd5b506106296117e9565b3480156108a957600080fd5b506106296117f7565b3480156108be57600080fd5b506105f8611805565b3480156108d357600080fd5b506104eb600480360360608110156108ea57600080fd5b508035600160a060020a0316906020810135906040013560ff16611814565b34801561091557600080fd5b506106296119c3565b34801561092a57600080fd5b506109336119c9565b6040805192835260208301919091528051918290030190f35b34801561095857600080fd5b506106296119db565b34801561096d57600080fd5b506106296119e9565b34801561098257600080fd5b506105f86119ef565b34801561099757600080fd5b50610629600480360360208110156109ae57600080fd5b5035600160a060020a03166119fe565b3480156109ca57600080fd5b50610629600480360360208110156109e157600080fd5b5035600160a060020a0316611a10565b3480156109fd57600080fd5b506104eb611a2b565b348015610a1257600080fd5b506105f8611ad0565b348015610a2757600080fd5b50610629611adf565b348015610a3c57600080fd5b506105f8611ae6565b348015610a5157600080fd5b506105f8611afe565b348015610a6657600080fd5b506105f8611b0d565b348015610a7b57600080fd5b506105f8611b1c565b348015610a9057600080fd5b506104eb60048036036080811015610aa757600080fd5b5080359060208101359060408101359060600135611b2b565b348015610acc57600080fd5b50610502611eb8565b348015610ae157600080fd5b506104eb60048036036020811015610af857600080fd5b5035600160a060020a0316611f19565b348015610b1457600080fd5b506105f8612081565b348015610b2957600080fd5b506105f861243b565b348015610b3e57600080fd5b506104eb60048036036060811015610b5557600080fd5b50600160a060020a038135169060ff6020820135169060400135151561244a565b348015610b8257600080fd5b506104a460048036036040811015610b9957600080fd5b50600160a060020a0381351690602001356125c6565b348015610bbb57600080fd5b506104a460048036036040811015610bd257600080fd5b50600160a060020a0381351690602001356126a8565b348015610bf457600080fd5b50610502612720565b348015610c0957600080fd5b506106296127ae565b348015610c1e57600080fd5b506106296127bc565b348015610c3357600080fd5b506105f86127ca565b348015610c4857600080fd5b506105f86127d9565b348015610c5d57600080fd5b506105f86127e8565b348015610c7257600080fd5b506105f86128eb565b348015610c8757600080fd5b506104a460048036036020811015610c9e57600080fd5b5035600160a060020a03166128fa565b348015610cba57600080fd5b5061062961290f565b348015610ccf57600080fd5b5061050261291d565b348015610ce457600080fd5b50610629612978565b348015610cf957600080fd5b5061062961297e565b348015610d0e57600080fd5b506105f8612984565b348015610d2357600080fd5b5061062960048036036040811015610d3a57600080fd5b50600160a060020a0381358116916020013516612993565b348015610d5e57600080fd5b50610d67612a35565b60408051600160a060020a039485168152928416602084015292168183015290519081900360600190f35b6104a4612a52565b348015610da657600080fd5b506105f8612cc4565b348015610dbb57600080fd5b506105f8612cd3565b348015610dd057600080fd5b506104eb60048036036040811015610de757600080fd5b50600160a060020a0381351690602001351515612ce2565b348015610e0b57600080fd5b506104eb60048036036020811015610e2257600080fd5b5035600160a060020a0316612da1565b6104eb60048036036020811015610e4857600080fd5b5035600160a060020a0316612f01565b348015610e6457600080fd5b506104eb60048036036020811015610e7b57600080fd5b5035600160a060020a0316613045565b348015610e9757600080fd5b50610629613143565b348015610eac57600080fd5b506104a460048036036020811015610ec357600080fd5b5035600160a060020a0316613151565b60046020526000908152604090205460ff1681565b610ef061316f565b600054600160a060020a03908116911614610f43576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b600160a060020a038116610fa1576040805160e560020a62461bcd02815260206004820152600e60248201527f696e76696c642061646472657373000000000000000000000000000000000000604482015290519081900360640190fd5b3360009081526005602052604090205460ff16151560011415610ffc576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613cd6833981519152604482015290519081900360640190fd5b601d8054600160a060020a038316600160a060020a0319909116811790915560408051918252517f15b66f23b3f2aa0cb5c9417e266e6e730b39943e1427026127b35cfaddc8f25f9181900360200190a150565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156110dc5780601f106110b1576101008083540402835291602001916110dc565b820191906000526020600020905b8154815290600101906020018083116110bf57829003601f168201915b5050505050905090565b600160a060020a03821660009081526005602052604081205460ff1615156001141561115c576040805160e560020a62461bcd02815260206004820152601060248201527f6163636f756e742066726f7a656e203400000000000000000000000000000000604482015290519081900360640190fd5b61116e61116761316f565b8484613173565b5060015b92915050565b600160a060020a03166000908152601e602052604090205460ff1690565b601b54600160a060020a031681565b60085490565b6111b361316f565b600054600160a060020a03908116911614611206576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b600160a060020a03811661124e5760405160e560020a62461bcd028152600401808060200182810382526026815260200180613afc6026913960400191505060405180910390fd5b3360009081526005602052604090205460ff161515600114156112a9576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613cd6833981519152604482015290519081900360640190fd5b600160a060020a0381166000818152600460209081526040808320805460ff1916905580519384529083019190915280517f429b68600bb2da2723cb9a13e087767b008675e1861caaf967ebaf0f6b414fc39281900390910190a150565b600160a060020a03831660009081526004602052604081205460ff16156113ae576113338484846132c9565b6113a98461133f61316f565b6113a4856040518060600160405280602a8152602001613cf6602a9139600160a060020a038a1660009081526006602052604081209061137d61316f565b600160a060020a03168152602081019190915260400160002054919063ffffffff61344916565b613173565b611413565b60006113ba83866134e3565b90506113c78585836132c9565b611411856113d361316f565b6113a4866040518060600160405280602a8152602001613cf6602a9139600160a060020a038b1660009081526006602052604081209061137d61316f565b505b5060019392505050565b735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f81565b60155481565b60195481565b690a968163f0a57b40000081565b600b5460ff1690565b600b5460ff1681565b600354600160a060020a031681565b601d54600160a060020a031681565b61148761316f565b600054600160a060020a039081169116146114da576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b600160a060020a038116611538576040805160e560020a62461bcd02815260206004820152600e60248201527f696e76696c642061646472657373000000000000000000000000000000000000604482015290519081900360640190fd5b3360009081526005602052604090205460ff16151560011415611593576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613cd6833981519152604482015290519081900360640190fd5b601c8054600160a060020a038316600160a060020a0319909116811790915560408051918252517fb8b40db79754c821744cd56de1c1e583dee00bebfa09e1647deb918650f8613e9181900360200190a150565b6115ef61316f565b600054600160a060020a03908116911614611642576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b3360009081526005602052604090205460ff1615156001141561169d576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613cd6833981519152604482015290519081900360640190fd5b6116a681612da1565b600160a060020a0381166000908152600760205260409020695f4a8c8375d155400000908190556008546116df9163ffffffff61378716565b60085550565b600c5481565b600160a060020a03821660009081526005602052604081205460ff16151560011415611761576040805160e560020a62461bcd02815260206004820152601060248201527f6163636f756e742066726f7a656e203600000000000000000000000000000000604482015290519081900360640190fd5b61116e61176c61316f565b846113a4856006600061177d61316f565b600160a060020a03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61378716565b60085481565b6910f0cf064dd59200000081565b68022b1c8c1227a0000081565b601e6020526000908152604090205460ff1681565b695f4a8c8375d15540000081565b69010f0cf064dd5920000081565b601354600160a060020a031681565b336000908152601e602052604090205460ff166118655760405160e560020a62461bcd028152600401808060200182810382526044815260200180613c6d6044913960600191505060405180910390fd5b600160a060020a0383166118c3576040805160e560020a62461bcd02815260206004820152600c60248201527f7a65726f20616464726573730000000000000000000000000000000000000000604482015290519081900360640190fd5b6000821161191b576040805160e560020a62461bcd02815260206004820152601460248201527f696e76616c696420616d6f756e7420696e707574000000000000000000000000604482015290519081900360640190fd5b8060ff16606314156119be57601f5469021e19e0c9bab240000090611946908463ffffffff61378716565b111561199c576040805160e560020a62461bcd02815260206004820152600660248201527f6578636565640000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6119a78383836137eb565b601f546119ba908363ffffffff61378716565b601f555b505050565b60185481565b601f5469021e19e0c9bab24000009091565b692a57da733683c560000081565b60175481565b601254600160a060020a031681565b60076020526000908152604090205481565b600160a060020a031660009081526007602052604090205490565b611a3361316f565b600054600160a060020a03908116911614611a86576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360008054600160a060020a0319169055565b600254600160a060020a031681565b620186a081565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b601454600160a060020a031681565b601154600160a060020a031681565b600054600160a060020a031690565b611b3361316f565b600054600160a060020a03908116911614611b86576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b600084118015611b985750620186a084105b611bec576040805160e560020a62461bcd02815260206004820152601f60248201527f746f4275726e2072617465206d757374206d6f7265207468616e207a65726f00604482015290519081900360640190fd5b600083118015611bfe5750620186a083105b611c3c5760405160e560020a62461bcd028152600401808060200182810382526024815260200180613ab66024913960400191505060405180910390fd5b600082118015611c4e5750620186a082105b611c8c5760405160e560020a62461bcd028152600401808060200182810382526022815260200180613ada6022913960400191505060405180910390fd5b600081118015611c9e5750620186a081105b611cdc5760405160e560020a62461bcd028152600401808060200182810382526022815260200180613bbe6022913960400191505060405180910390fd5b3360009081526005602052604090205460ff16151560011415611d37576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613cd6833981519152604482015290519081900360640190fd5b601b54600160a060020a0316611d97576040805160e560020a62461bcd02815260206004820152601460248201527f746f4c6971756964506f6f6c206e6f7420736574000000000000000000000000604482015290519081900360640190fd5b601c54600160a060020a0316611df7576040805160e560020a62461bcd02815260206004820152601560248201527f746f4275794261636b506f6f6c206e6f74207365740000000000000000000000604482015290519081900360640190fd5b601d54600160a060020a0316611e57576040805160e560020a62461bcd02815260206004820152601560248201527f746f50726f6a656374506f6f6c206e6f74207365740000000000000000000000604482015290519081900360640190fd5b601784905560188390556019829055601a81905560408051858152602081018590528082018490526060810183905290517f34c962991d7c4d7ade922054b0c41ae33afcf271bb51c5eb23f99fec4b3350129181900360800190a150505050565b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156110dc5780601f106110b1576101008083540402835291602001916110dc565b611f2161316f565b600054600160a060020a03908116911614611f74576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b600160a060020a038116611fd2576040805160e560020a62461bcd02815260206004820152600e60248201527f696e76696c642061646472657373000000000000000000000000000000000000604482015290519081900360640190fd5b3360009081526005602052604090205460ff1615156001141561202d576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613cd6833981519152604482015290519081900360640190fd5b601b8054600160a060020a038316600160a060020a0319909116811790915560408051918252517f2adef16c298321d6194e622710c9c65df5867d6096113b6abdf51f26d239f0819181900360200190a150565b600061208b61316f565b600054600160a060020a039081169116146120de576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b6001546002546040805160e360020a6315ab88c902815290516000938493600160a060020a039182169363e6a439059330939092169163ad5c464891600480820192602092909190829003018186803b15801561213a57600080fd5b505afa15801561214e573d6000803e3d6000fd5b505050506040513d602081101561216457600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a039384166004820152929091166024830152516044808301926020929190829003018186803b1580156121b257600080fd5b505afa1580156121c6573d6000803e3d6000fd5b505050506040513d60208110156121dc57600080fd5b5051600160a060020a03161415612339576001546002546040805160e360020a6315ab88c902815290514293600160a060020a039081169363c9c65396933093919092169163ad5c4648916004808301926020929190829003018186803b15801561224657600080fd5b505afa15801561225a573d6000803e3d6000fd5b505050506040513d602081101561227057600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a0393841660048201529290911660248301525160448083019260209291908290030181600087803b1580156122c057600080fd5b505af11580156122d4573d6000803e3d6000fd5b505050506040513d60208110156122ea57600080fd5b505160408051600160a060020a03831681526020810184905281519294507f0f380c84eb6bb6fb2ea9d6ee862b1781cdc7687b027c140f323de94e8acede8c929081900390910190a150612436565b6001546002546040805160e360020a6315ab88c90281529051600160a060020a039384169363e6a4390593309391169163ad5c464891600480820192602092909190829003018186803b15801561238f57600080fd5b505afa1580156123a3573d6000803e3d6000fd5b505050506040513d60208110156123b957600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a039384166004820152929091166024830152516044808301926020929190829003018186803b15801561240757600080fd5b505afa15801561241b573d6000803e3d6000fd5b505050506040513d602081101561243157600080fd5b505190505b905090565b601c54600160a060020a031681565b61245261316f565b600054600160a060020a039081169116146124a5576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b600160a060020a038316612503576040805160e560020a62461bcd02815260206004820152600c60248201527f7a65726f20616464726573730000000000000000000000000000000000000000604482015290519081900360640190fd5b3360009081526005602052604090205460ff1615156001141561255e576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613cd6833981519152604482015290519081900360640190fd5b600160a060020a0383166000818152601e6020908152604091829020805460ff1916851515179055815160ff861681529081019290925280517f6465d230a9943e8158daf0a48cd0243aea1084d32fcbaca8b7c6650f7cf53dc79281900390910190a1505050565b600160a060020a03821660009081526005602052604081205460ff1615156001141561263c576040805160e560020a62461bcd02815260206004820152601060248201527f6163636f756e742066726f7a656e203700000000000000000000000000000000604482015290519081900360640190fd5b61116e61264761316f565b846113a485604051806060016040528060278152602001613b71602791396006600061267161316f565b600160a060020a03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61344916565b6000600460006126b661316f565b600160a060020a0316815260208101919091526040016000205460ff16156126ef576126ea6126e361316f565b84846132c9565b61116e565b6000612702836126fd61316f565b6134e3565b905061271661270f61316f565b85836132c9565b5050600192915050565b600a805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156127a65780601f1061277b576101008083540402835291602001916127a6565b820191906000526020600020905b81548152906001019060200180831161278957829003601f168201915b505050505081565b69152d02c7e14af680000081565b69d3c21bcecceda100000081565b600d54600160a060020a031681565b601654600160a060020a031681565b6001546002546040805160e360020a6315ab88c90281529051600093600160a060020a039081169363e6a43905933093919092169163ad5c4648916004808301926020929190829003018186803b15801561284257600080fd5b505afa158015612856573d6000803e3d6000fd5b505050506040513d602081101561286c57600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a039384166004820152929091166024830152516044808301926020929190829003018186803b1580156128ba57600080fd5b505afa1580156128ce573d6000803e3d6000fd5b505050506040513d60208110156128e457600080fd5b5051905090565b600154600160a060020a031681565b60056020526000908152604090205460ff1681565b69a936605098d11acc000081565b6009805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156127a65780601f1061277b576101008083540402835291602001916127a6565b601f5481565b601a5481565b601054600160a060020a031681565b600160a060020a03821660009081526005602052604081205460ff16151560011415612a09576040805160e560020a62461bcd02815260206004820152601060248201527f6163636f756e742066726f7a656e203300000000000000000000000000000000604482015290519081900360640190fd5b50600160a060020a03918216600090815260066020908152604080832093909416825291909152205490565b601b54601c54601d54600160a060020a0392831693918316921690565b6000612a5c61316f565b600054600160a060020a03908116911614612aaf576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152737a250d5630b4cf539739df2c5dacb4c659f2488d600482015268022b1c8c1227a0000060248201529051600f4201913091829163095ea7b39160448083019260209291908290030181600087803b158015612b3157600080fd5b505af1158015612b45573d6000803e3d6000fd5b505050506040513d6020811015612b5b57600080fd5b5051612bb1576040805160e560020a62461bcd02815260206004820152600f60248201527f617070726f7665206661696c65642e0000000000000000000000000000000000604482015290519081900360640190fd5b600254604080517ff305d719000000000000000000000000000000000000000000000000000000008152306004820181905268022b1c8c1227a000006024830181905260448301523460648301819052608483019190915260a482018690529151600160a060020a039093169263f305d719929160c48082019260609290919082900301818588803b158015612c4657600080fd5b505af1158015612c5a573d6000803e3d6000fd5b50505050506040513d6060811015612c7157600080fd5b50506040805168022b1c8c1227a00000815234602082015280820184905290517f695821e04ea3686cfe10d86e379fab27339f29c9e3657c1966d4bb9eb75b45d39181900360600190a160019250505090565b600f54600160a060020a031681565b600e54600160a060020a031681565b612cea61316f565b600054600160a060020a03908116911614612d3d576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b600160a060020a038216600081815260056020908152604091829020805460ff191685151590811790915582519384529083015280517f2dcf05fd6b7e65e62149cd3995008f374c23bf112c41ed7cc6fcc2620dea00039281900390910190a15050565b612da961316f565b600054600160a060020a03908116911614612dfc576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b600160a060020a038116612e445760405160e560020a62461bcd028152600401808060200182810382526026815260200180613afc6026913960400191505060405180910390fd5b3360009081526005602052604090205460ff16151560011415612e9f576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613cd6833981519152604482015290519081900360640190fd5b600160a060020a038116600081815260046020908152604091829020805460ff1916600190811790915582519384529083015280517f429b68600bb2da2723cb9a13e087767b008675e1861caaf967ebaf0f6b414fc39281900390910190a150565b612f0961316f565b600054600160a060020a03908116911614612f5c576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b3360009081526005602052604090205460ff16151560011415612fb7576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613cd6833981519152604482015290519081900360640190fd5b601b8054600160a060020a031916600160a060020a0383161790556000612fdc612081565b60038054600160a060020a031916600160a060020a038316179055905061300281612da1565b61301f737a250d5630b4cf539739df2c5dacb4c659f2488d612da1565b61302830612da1565b601b5461303d90600160a060020a0316612da1565b6119be612a52565b61304d61316f565b600054600160a060020a039081169116146130a0576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b600160a060020a0381166130e85760405160e560020a62461bcd028152600401808060200182810382526026815260200180613afc6026913960400191505060405180910390fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360008054600160a060020a031916600160a060020a0392909216919091179055565b69021e19e0c9bab240000081565b600160a060020a031660009081526004602052604090205460ff1690565b3390565b600160a060020a03831660009081526005602052604090205460ff161515600114156131d7576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613cd6833981519152604482015290519081900360640190fd5b600160a060020a03831661321f5760405160e560020a62461bcd028152600401808060200182810382526027815260200180613b226027913960400191505060405180910390fd5b600160a060020a0382166132675760405160e560020a62461bcd028152600401808060200182810382526025815260200180613c286025913960400191505060405180910390fd5b600160a060020a03808416600081815260066020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600160a060020a0383166133115760405160e560020a62461bcd028152600401808060200182810382526025815260200180613cb16025913960400191505060405180910390fd5b600160a060020a03831660009081526005602052604090205460ff16151560011415613375576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613cd6833981519152604482015290519081900360640190fd5b6133b881604051806060016040528060268152602001613b9860269139600160a060020a038616600090815260076020526040902054919063ffffffff61344916565b600160a060020a0380851660009081526007602052604080822093909355908416815220546133ed908263ffffffff61378716565b600160a060020a0380841660008181526007602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156134db5760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156134a0578181015183820152602001613488565b50505050905090810190601f1680156134cd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008083116135265760405160e560020a62461bcd028152600401808060200182810382526027815260200180613be06027913960400191505060405180910390fd5b6000613550620186a06135446018548761396290919063ffffffff16565b9063ffffffff6139be16565b90506000613570620186a06135446019548861396290919063ffffffff16565b90506000613590620186a0613544601a548961396290919063ffffffff16565b905060006135b0620186a06135446017548a61396290919063ffffffff16565b905080156136445769a936605098d11acc000060155410156136445760408051808201909152600281527f78310000000000000000000000000000000000000000000000000000000000006020820152613613908890839063ffffffff61344916565b601554909750613629908263ffffffff61378716565b601555601654613644908790600160a060020a031683613a00565b83156136ac5760408051808201909152600281527f78320000000000000000000000000000000000000000000000000000000000006020820152613691908890869063ffffffff61344916565b601b549097506136ac908790600160a060020a031686613a00565b82156137145760408051808201909152600281527f783300000000000000000000000000000000000000000000000000000000000060208201526136f9908890859063ffffffff61344916565b601c54909750613714908790600160a060020a031685613a00565b811561377c5760408051808201909152600281527f78340000000000000000000000000000000000000000000000000000000000006020820152613761908890849063ffffffff61344916565b601d5490975061377c908790600160a060020a031684613a00565b509495945050505050565b6000828201838110156137e4576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600160a060020a038316613849576040805160e560020a62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60085469d3c21bcecceda100000090613868908463ffffffff61378716565b11156138be576040805160e560020a62461bcd02815260206004820152601560248201527f6d696e7420657863656564206d6178537570706c790000000000000000000000604482015290519081900360640190fd5b6008546138d1908363ffffffff61378716565b600855600160a060020a0383166000908152600760205260409020546138fd908363ffffffff61378716565b600160a060020a03841660008181526007602090815260409182902093909355805160ff8516815292830191909152818101849052517f603377bb64044e2fa245575e667222f097332a6b0e8e28bfd2a6aa3c089d85fd9181900360600190a1505050565b60008261397157506000611172565b8282028284828161397e57fe5b04146137e45760405160e560020a62461bcd028152600401808060200182810382526021815260200180613c076021913960400191505060405180910390fd5b60006137e483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613a4d565b60008111613a425760405160e560020a62461bcd028152600401808060200182810382526028815260200180613b496028913960400191505060405180910390fd5b6119be8383836132c9565b60008183613a9f5760405160e560020a62461bcd0281526020600482018181528351602484015283519092839260449091019190850190808383600083156134a0578181015183820152602001613488565b506000838581613aab57fe5b049594505050505056fe746f4c69717569646974792072617465206d757374206d6f7265207468616e207a65726f746f4275794261636b2072617465206d757374206d6f7265207468616e207a65726f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737320313345524332303a207472616e7366657220616d6f756e74206c657373207468616e207a65726f20312045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f203845524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365746f50726f6a6563742072617465206d757374206d6f7265207468616e207a65726f45524332303a207472616e7366657220616d6f756e74206c657373207468616e207a65726f2032536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a20617070726f766520746f20746865207a65726f20616464726573732031344f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65727468652061646472657373206973206e6f7420616c6c6f7765642c206f6e6c79206163746976697469657320636f6e7472616374206164647265737320616c6c6f77656445524332303a207472616e736665722066726f6d20746865207a65726f206164647265737373656e646572207761732066726f7a656e00000000000000000000000000000045524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63652035a2646970667358221220f57ade475366d90d2981e9f50c7cb365e38a86bf19392a1fddcbc2a2e2229f0f64736f6c63430006060033
Deployed Bytecode
0x60806040526004361061046c5760003560e060020a9004806379b369431161024e578063c1f1b1b51161013d578063e4b6db4c116100ba578063e7cd4a041161007e578063e7cd4a0414610dff578063ea70b6d114610e32578063f2fde38b14610e58578063f60c750c14610e8b578063f99031a714610ea05761046c565b8063e4b6db4c14610d52578063e4c7774514610d92578063e5f4c56f14610d9a578063e62bbc6114610daf578063e724529c14610dc45761046c565b8063d576b9d411610101578063d576b9d414610cd8578063d5b157f914610ced578063d6d21f73146106f0578063db1ceca614610d02578063dd62ed3e14610d175761046c565b8063c1f1b1b514610c51578063c45a015514610c66578063d170cb4214610c7b578063d187f41714610cae578063d28d885214610cc35761046c565b80639e78fb4f116101cb578063b09f12661161018f578063b09f126614610be8578063b2bde85f14610bfd578063b36c128414610c12578063b6c22bad14610c27578063bd3900c014610c3c5761046c565b80639e78fb4f14610b08578063a1f3a60c14610b1d578063a253ce9c14610b32578063a457c2d714610b76578063a9059cbb14610baf5761046c565b80638da5cb5b116102125780638da5cb5b14610a6f578063901a71bc14610a8457806395d89b4114610ac05780639895633214610ad55780639b8d504a1461089d5761046c565b806379b3694314610a305780637a2bbdbc14610a455780637e2a24171461084057806384a3613e146106f05780638ca74be314610a5a5761046c565b8063378dc3dc1161036a5780634dc6ff7c116102e75780636ebcf607116102ab5780636ebcf6071461098b57806370a08231146109be578063715018a6146109f1578063735de9f714610a06578063775e137714610a1b5761046c565b80634dc6ff7c14610909578063531db2221461091e578063640f310e1461094c578063690d37c4146109615780636b563205146109765761046c565b8063409082981161032e5780634090829814610855578063433cc2041461088857806345149b821461089d57806346415e01146108b25780634db4fee8146108c75761046c565b8063378dc3dc146107c857806339509351146107dd5780633eaaf86b14610816578063401f4ed81461082b57806340702adc146108405761046c565b806323d0e08d116103f857806332424aa3116103bc57806332424aa31461073057806332972e46146107455780633361741a1461075a578063340959951461076f57806336636bb7146107a25761046c565b806323d0e08d146106b15780632d201af0146106c657806330daff5d146106db578063312ba46b146106f0578063313ce567146107055761046c565b80630ddcfe8e1161043f5780630ddcfe8e146105b0578063123974da146105e357806318160ddd146106145780632042e5c21461063b57806323b872dd1461066e5761046c565b806305d60ffb1461047157806306139c75146104b857806306fdde03146104ed578063095ea7b314610577575b600080fd5b34801561047d57600080fd5b506104a46004803603602081101561049457600080fd5b5035600160a060020a0316610ed3565b604080519115158252519081900360200190f35b3480156104c457600080fd5b506104eb600480360360208110156104db57600080fd5b5035600160a060020a0316610ee8565b005b3480156104f957600080fd5b50610502611050565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561053c578181015183820152602001610524565b50505050905090810190601f1680156105695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561058357600080fd5b506104a46004803603604081101561059a57600080fd5b50600160a060020a0381351690602001356110e6565b3480156105bc57600080fd5b506104a4600480360360208110156105d357600080fd5b5035600160a060020a0316611178565b3480156105ef57600080fd5b506105f8611196565b60408051600160a060020a039092168252519081900360200190f35b34801561062057600080fd5b506106296111a5565b60408051918252519081900360200190f35b34801561064757600080fd5b506104eb6004803603602081101561065e57600080fd5b5035600160a060020a03166111ab565b34801561067a57600080fd5b506104a46004803603606081101561069157600080fd5b50600160a060020a03813581169160208101359091169060400135611307565b3480156106bd57600080fd5b506105f861141d565b3480156106d257600080fd5b50610629611435565b3480156106e757600080fd5b5061062961143b565b3480156106fc57600080fd5b50610629611441565b34801561071157600080fd5b5061071a61144f565b6040805160ff9092168252519081900360200190f35b34801561073c57600080fd5b5061071a611458565b34801561075157600080fd5b506105f8611461565b34801561076657600080fd5b506105f8611470565b34801561077b57600080fd5b506104eb6004803603602081101561079257600080fd5b5035600160a060020a031661147f565b6104eb600480360360208110156107b857600080fd5b5035600160a060020a03166115e7565b3480156107d457600080fd5b506106296116e5565b3480156107e957600080fd5b506104a46004803603604081101561080057600080fd5b50600160a060020a0381351690602001356116eb565b34801561082257600080fd5b506106296117b3565b34801561083757600080fd5b506106296117b9565b34801561084c57600080fd5b506106296117c7565b34801561086157600080fd5b506104a46004803603602081101561087857600080fd5b5035600160a060020a03166117d4565b34801561089457600080fd5b506106296117e9565b3480156108a957600080fd5b506106296117f7565b3480156108be57600080fd5b506105f8611805565b3480156108d357600080fd5b506104eb600480360360608110156108ea57600080fd5b508035600160a060020a0316906020810135906040013560ff16611814565b34801561091557600080fd5b506106296119c3565b34801561092a57600080fd5b506109336119c9565b6040805192835260208301919091528051918290030190f35b34801561095857600080fd5b506106296119db565b34801561096d57600080fd5b506106296119e9565b34801561098257600080fd5b506105f86119ef565b34801561099757600080fd5b50610629600480360360208110156109ae57600080fd5b5035600160a060020a03166119fe565b3480156109ca57600080fd5b50610629600480360360208110156109e157600080fd5b5035600160a060020a0316611a10565b3480156109fd57600080fd5b506104eb611a2b565b348015610a1257600080fd5b506105f8611ad0565b348015610a2757600080fd5b50610629611adf565b348015610a3c57600080fd5b506105f8611ae6565b348015610a5157600080fd5b506105f8611afe565b348015610a6657600080fd5b506105f8611b0d565b348015610a7b57600080fd5b506105f8611b1c565b348015610a9057600080fd5b506104eb60048036036080811015610aa757600080fd5b5080359060208101359060408101359060600135611b2b565b348015610acc57600080fd5b50610502611eb8565b348015610ae157600080fd5b506104eb60048036036020811015610af857600080fd5b5035600160a060020a0316611f19565b348015610b1457600080fd5b506105f8612081565b348015610b2957600080fd5b506105f861243b565b348015610b3e57600080fd5b506104eb60048036036060811015610b5557600080fd5b50600160a060020a038135169060ff6020820135169060400135151561244a565b348015610b8257600080fd5b506104a460048036036040811015610b9957600080fd5b50600160a060020a0381351690602001356125c6565b348015610bbb57600080fd5b506104a460048036036040811015610bd257600080fd5b50600160a060020a0381351690602001356126a8565b348015610bf457600080fd5b50610502612720565b348015610c0957600080fd5b506106296127ae565b348015610c1e57600080fd5b506106296127bc565b348015610c3357600080fd5b506105f86127ca565b348015610c4857600080fd5b506105f86127d9565b348015610c5d57600080fd5b506105f86127e8565b348015610c7257600080fd5b506105f86128eb565b348015610c8757600080fd5b506104a460048036036020811015610c9e57600080fd5b5035600160a060020a03166128fa565b348015610cba57600080fd5b5061062961290f565b348015610ccf57600080fd5b5061050261291d565b348015610ce457600080fd5b50610629612978565b348015610cf957600080fd5b5061062961297e565b348015610d0e57600080fd5b506105f8612984565b348015610d2357600080fd5b5061062960048036036040811015610d3a57600080fd5b50600160a060020a0381358116916020013516612993565b348015610d5e57600080fd5b50610d67612a35565b60408051600160a060020a039485168152928416602084015292168183015290519081900360600190f35b6104a4612a52565b348015610da657600080fd5b506105f8612cc4565b348015610dbb57600080fd5b506105f8612cd3565b348015610dd057600080fd5b506104eb60048036036040811015610de757600080fd5b50600160a060020a0381351690602001351515612ce2565b348015610e0b57600080fd5b506104eb60048036036020811015610e2257600080fd5b5035600160a060020a0316612da1565b6104eb60048036036020811015610e4857600080fd5b5035600160a060020a0316612f01565b348015610e6457600080fd5b506104eb60048036036020811015610e7b57600080fd5b5035600160a060020a0316613045565b348015610e9757600080fd5b50610629613143565b348015610eac57600080fd5b506104a460048036036020811015610ec357600080fd5b5035600160a060020a0316613151565b60046020526000908152604090205460ff1681565b610ef061316f565b600054600160a060020a03908116911614610f43576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b600160a060020a038116610fa1576040805160e560020a62461bcd02815260206004820152600e60248201527f696e76696c642061646472657373000000000000000000000000000000000000604482015290519081900360640190fd5b3360009081526005602052604090205460ff16151560011415610ffc576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613cd6833981519152604482015290519081900360640190fd5b601d8054600160a060020a038316600160a060020a0319909116811790915560408051918252517f15b66f23b3f2aa0cb5c9417e266e6e730b39943e1427026127b35cfaddc8f25f9181900360200190a150565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156110dc5780601f106110b1576101008083540402835291602001916110dc565b820191906000526020600020905b8154815290600101906020018083116110bf57829003601f168201915b5050505050905090565b600160a060020a03821660009081526005602052604081205460ff1615156001141561115c576040805160e560020a62461bcd02815260206004820152601060248201527f6163636f756e742066726f7a656e203400000000000000000000000000000000604482015290519081900360640190fd5b61116e61116761316f565b8484613173565b5060015b92915050565b600160a060020a03166000908152601e602052604090205460ff1690565b601b54600160a060020a031681565b60085490565b6111b361316f565b600054600160a060020a03908116911614611206576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b600160a060020a03811661124e5760405160e560020a62461bcd028152600401808060200182810382526026815260200180613afc6026913960400191505060405180910390fd5b3360009081526005602052604090205460ff161515600114156112a9576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613cd6833981519152604482015290519081900360640190fd5b600160a060020a0381166000818152600460209081526040808320805460ff1916905580519384529083019190915280517f429b68600bb2da2723cb9a13e087767b008675e1861caaf967ebaf0f6b414fc39281900390910190a150565b600160a060020a03831660009081526004602052604081205460ff16156113ae576113338484846132c9565b6113a98461133f61316f565b6113a4856040518060600160405280602a8152602001613cf6602a9139600160a060020a038a1660009081526006602052604081209061137d61316f565b600160a060020a03168152602081019190915260400160002054919063ffffffff61344916565b613173565b611413565b60006113ba83866134e3565b90506113c78585836132c9565b611411856113d361316f565b6113a4866040518060600160405280602a8152602001613cf6602a9139600160a060020a038b1660009081526006602052604081209061137d61316f565b505b5060019392505050565b735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f81565b60155481565b60195481565b690a968163f0a57b40000081565b600b5460ff1690565b600b5460ff1681565b600354600160a060020a031681565b601d54600160a060020a031681565b61148761316f565b600054600160a060020a039081169116146114da576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b600160a060020a038116611538576040805160e560020a62461bcd02815260206004820152600e60248201527f696e76696c642061646472657373000000000000000000000000000000000000604482015290519081900360640190fd5b3360009081526005602052604090205460ff16151560011415611593576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613cd6833981519152604482015290519081900360640190fd5b601c8054600160a060020a038316600160a060020a0319909116811790915560408051918252517fb8b40db79754c821744cd56de1c1e583dee00bebfa09e1647deb918650f8613e9181900360200190a150565b6115ef61316f565b600054600160a060020a03908116911614611642576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b3360009081526005602052604090205460ff1615156001141561169d576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613cd6833981519152604482015290519081900360640190fd5b6116a681612da1565b600160a060020a0381166000908152600760205260409020695f4a8c8375d155400000908190556008546116df9163ffffffff61378716565b60085550565b600c5481565b600160a060020a03821660009081526005602052604081205460ff16151560011415611761576040805160e560020a62461bcd02815260206004820152601060248201527f6163636f756e742066726f7a656e203600000000000000000000000000000000604482015290519081900360640190fd5b61116e61176c61316f565b846113a4856006600061177d61316f565b600160a060020a03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61378716565b60085481565b6910f0cf064dd59200000081565b68022b1c8c1227a0000081565b601e6020526000908152604090205460ff1681565b695f4a8c8375d15540000081565b69010f0cf064dd5920000081565b601354600160a060020a031681565b336000908152601e602052604090205460ff166118655760405160e560020a62461bcd028152600401808060200182810382526044815260200180613c6d6044913960600191505060405180910390fd5b600160a060020a0383166118c3576040805160e560020a62461bcd02815260206004820152600c60248201527f7a65726f20616464726573730000000000000000000000000000000000000000604482015290519081900360640190fd5b6000821161191b576040805160e560020a62461bcd02815260206004820152601460248201527f696e76616c696420616d6f756e7420696e707574000000000000000000000000604482015290519081900360640190fd5b8060ff16606314156119be57601f5469021e19e0c9bab240000090611946908463ffffffff61378716565b111561199c576040805160e560020a62461bcd02815260206004820152600660248201527f6578636565640000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6119a78383836137eb565b601f546119ba908363ffffffff61378716565b601f555b505050565b60185481565b601f5469021e19e0c9bab24000009091565b692a57da733683c560000081565b60175481565b601254600160a060020a031681565b60076020526000908152604090205481565b600160a060020a031660009081526007602052604090205490565b611a3361316f565b600054600160a060020a03908116911614611a86576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360008054600160a060020a0319169055565b600254600160a060020a031681565b620186a081565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b601454600160a060020a031681565b601154600160a060020a031681565b600054600160a060020a031690565b611b3361316f565b600054600160a060020a03908116911614611b86576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b600084118015611b985750620186a084105b611bec576040805160e560020a62461bcd02815260206004820152601f60248201527f746f4275726e2072617465206d757374206d6f7265207468616e207a65726f00604482015290519081900360640190fd5b600083118015611bfe5750620186a083105b611c3c5760405160e560020a62461bcd028152600401808060200182810382526024815260200180613ab66024913960400191505060405180910390fd5b600082118015611c4e5750620186a082105b611c8c5760405160e560020a62461bcd028152600401808060200182810382526022815260200180613ada6022913960400191505060405180910390fd5b600081118015611c9e5750620186a081105b611cdc5760405160e560020a62461bcd028152600401808060200182810382526022815260200180613bbe6022913960400191505060405180910390fd5b3360009081526005602052604090205460ff16151560011415611d37576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613cd6833981519152604482015290519081900360640190fd5b601b54600160a060020a0316611d97576040805160e560020a62461bcd02815260206004820152601460248201527f746f4c6971756964506f6f6c206e6f7420736574000000000000000000000000604482015290519081900360640190fd5b601c54600160a060020a0316611df7576040805160e560020a62461bcd02815260206004820152601560248201527f746f4275794261636b506f6f6c206e6f74207365740000000000000000000000604482015290519081900360640190fd5b601d54600160a060020a0316611e57576040805160e560020a62461bcd02815260206004820152601560248201527f746f50726f6a656374506f6f6c206e6f74207365740000000000000000000000604482015290519081900360640190fd5b601784905560188390556019829055601a81905560408051858152602081018590528082018490526060810183905290517f34c962991d7c4d7ade922054b0c41ae33afcf271bb51c5eb23f99fec4b3350129181900360800190a150505050565b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156110dc5780601f106110b1576101008083540402835291602001916110dc565b611f2161316f565b600054600160a060020a03908116911614611f74576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b600160a060020a038116611fd2576040805160e560020a62461bcd02815260206004820152600e60248201527f696e76696c642061646472657373000000000000000000000000000000000000604482015290519081900360640190fd5b3360009081526005602052604090205460ff1615156001141561202d576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613cd6833981519152604482015290519081900360640190fd5b601b8054600160a060020a038316600160a060020a0319909116811790915560408051918252517f2adef16c298321d6194e622710c9c65df5867d6096113b6abdf51f26d239f0819181900360200190a150565b600061208b61316f565b600054600160a060020a039081169116146120de576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b6001546002546040805160e360020a6315ab88c902815290516000938493600160a060020a039182169363e6a439059330939092169163ad5c464891600480820192602092909190829003018186803b15801561213a57600080fd5b505afa15801561214e573d6000803e3d6000fd5b505050506040513d602081101561216457600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a039384166004820152929091166024830152516044808301926020929190829003018186803b1580156121b257600080fd5b505afa1580156121c6573d6000803e3d6000fd5b505050506040513d60208110156121dc57600080fd5b5051600160a060020a03161415612339576001546002546040805160e360020a6315ab88c902815290514293600160a060020a039081169363c9c65396933093919092169163ad5c4648916004808301926020929190829003018186803b15801561224657600080fd5b505afa15801561225a573d6000803e3d6000fd5b505050506040513d602081101561227057600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a0393841660048201529290911660248301525160448083019260209291908290030181600087803b1580156122c057600080fd5b505af11580156122d4573d6000803e3d6000fd5b505050506040513d60208110156122ea57600080fd5b505160408051600160a060020a03831681526020810184905281519294507f0f380c84eb6bb6fb2ea9d6ee862b1781cdc7687b027c140f323de94e8acede8c929081900390910190a150612436565b6001546002546040805160e360020a6315ab88c90281529051600160a060020a039384169363e6a4390593309391169163ad5c464891600480820192602092909190829003018186803b15801561238f57600080fd5b505afa1580156123a3573d6000803e3d6000fd5b505050506040513d60208110156123b957600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a039384166004820152929091166024830152516044808301926020929190829003018186803b15801561240757600080fd5b505afa15801561241b573d6000803e3d6000fd5b505050506040513d602081101561243157600080fd5b505190505b905090565b601c54600160a060020a031681565b61245261316f565b600054600160a060020a039081169116146124a5576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b600160a060020a038316612503576040805160e560020a62461bcd02815260206004820152600c60248201527f7a65726f20616464726573730000000000000000000000000000000000000000604482015290519081900360640190fd5b3360009081526005602052604090205460ff1615156001141561255e576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613cd6833981519152604482015290519081900360640190fd5b600160a060020a0383166000818152601e6020908152604091829020805460ff1916851515179055815160ff861681529081019290925280517f6465d230a9943e8158daf0a48cd0243aea1084d32fcbaca8b7c6650f7cf53dc79281900390910190a1505050565b600160a060020a03821660009081526005602052604081205460ff1615156001141561263c576040805160e560020a62461bcd02815260206004820152601060248201527f6163636f756e742066726f7a656e203700000000000000000000000000000000604482015290519081900360640190fd5b61116e61264761316f565b846113a485604051806060016040528060278152602001613b71602791396006600061267161316f565b600160a060020a03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61344916565b6000600460006126b661316f565b600160a060020a0316815260208101919091526040016000205460ff16156126ef576126ea6126e361316f565b84846132c9565b61116e565b6000612702836126fd61316f565b6134e3565b905061271661270f61316f565b85836132c9565b5050600192915050565b600a805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156127a65780601f1061277b576101008083540402835291602001916127a6565b820191906000526020600020905b81548152906001019060200180831161278957829003601f168201915b505050505081565b69152d02c7e14af680000081565b69d3c21bcecceda100000081565b600d54600160a060020a031681565b601654600160a060020a031681565b6001546002546040805160e360020a6315ab88c90281529051600093600160a060020a039081169363e6a43905933093919092169163ad5c4648916004808301926020929190829003018186803b15801561284257600080fd5b505afa158015612856573d6000803e3d6000fd5b505050506040513d602081101561286c57600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a039384166004820152929091166024830152516044808301926020929190829003018186803b1580156128ba57600080fd5b505afa1580156128ce573d6000803e3d6000fd5b505050506040513d60208110156128e457600080fd5b5051905090565b600154600160a060020a031681565b60056020526000908152604090205460ff1681565b69a936605098d11acc000081565b6009805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156127a65780601f1061277b576101008083540402835291602001916127a6565b601f5481565b601a5481565b601054600160a060020a031681565b600160a060020a03821660009081526005602052604081205460ff16151560011415612a09576040805160e560020a62461bcd02815260206004820152601060248201527f6163636f756e742066726f7a656e203300000000000000000000000000000000604482015290519081900360640190fd5b50600160a060020a03918216600090815260066020908152604080832093909416825291909152205490565b601b54601c54601d54600160a060020a0392831693918316921690565b6000612a5c61316f565b600054600160a060020a03908116911614612aaf576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152737a250d5630b4cf539739df2c5dacb4c659f2488d600482015268022b1c8c1227a0000060248201529051600f4201913091829163095ea7b39160448083019260209291908290030181600087803b158015612b3157600080fd5b505af1158015612b45573d6000803e3d6000fd5b505050506040513d6020811015612b5b57600080fd5b5051612bb1576040805160e560020a62461bcd02815260206004820152600f60248201527f617070726f7665206661696c65642e0000000000000000000000000000000000604482015290519081900360640190fd5b600254604080517ff305d719000000000000000000000000000000000000000000000000000000008152306004820181905268022b1c8c1227a000006024830181905260448301523460648301819052608483019190915260a482018690529151600160a060020a039093169263f305d719929160c48082019260609290919082900301818588803b158015612c4657600080fd5b505af1158015612c5a573d6000803e3d6000fd5b50505050506040513d6060811015612c7157600080fd5b50506040805168022b1c8c1227a00000815234602082015280820184905290517f695821e04ea3686cfe10d86e379fab27339f29c9e3657c1966d4bb9eb75b45d39181900360600190a160019250505090565b600f54600160a060020a031681565b600e54600160a060020a031681565b612cea61316f565b600054600160a060020a03908116911614612d3d576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b600160a060020a038216600081815260056020908152604091829020805460ff191685151590811790915582519384529083015280517f2dcf05fd6b7e65e62149cd3995008f374c23bf112c41ed7cc6fcc2620dea00039281900390910190a15050565b612da961316f565b600054600160a060020a03908116911614612dfc576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b600160a060020a038116612e445760405160e560020a62461bcd028152600401808060200182810382526026815260200180613afc6026913960400191505060405180910390fd5b3360009081526005602052604090205460ff16151560011415612e9f576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613cd6833981519152604482015290519081900360640190fd5b600160a060020a038116600081815260046020908152604091829020805460ff1916600190811790915582519384529083015280517f429b68600bb2da2723cb9a13e087767b008675e1861caaf967ebaf0f6b414fc39281900390910190a150565b612f0961316f565b600054600160a060020a03908116911614612f5c576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b3360009081526005602052604090205460ff16151560011415612fb7576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613cd6833981519152604482015290519081900360640190fd5b601b8054600160a060020a031916600160a060020a0383161790556000612fdc612081565b60038054600160a060020a031916600160a060020a038316179055905061300281612da1565b61301f737a250d5630b4cf539739df2c5dacb4c659f2488d612da1565b61302830612da1565b601b5461303d90600160a060020a0316612da1565b6119be612a52565b61304d61316f565b600054600160a060020a039081169116146130a0576040805160e560020a62461bcd0281526020600482018190526024820152600080516020613c4d833981519152604482015290519081900360640190fd5b600160a060020a0381166130e85760405160e560020a62461bcd028152600401808060200182810382526026815260200180613afc6026913960400191505060405180910390fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360008054600160a060020a031916600160a060020a0392909216919091179055565b69021e19e0c9bab240000081565b600160a060020a031660009081526004602052604090205460ff1690565b3390565b600160a060020a03831660009081526005602052604090205460ff161515600114156131d7576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613cd6833981519152604482015290519081900360640190fd5b600160a060020a03831661321f5760405160e560020a62461bcd028152600401808060200182810382526027815260200180613b226027913960400191505060405180910390fd5b600160a060020a0382166132675760405160e560020a62461bcd028152600401808060200182810382526025815260200180613c286025913960400191505060405180910390fd5b600160a060020a03808416600081815260066020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600160a060020a0383166133115760405160e560020a62461bcd028152600401808060200182810382526025815260200180613cb16025913960400191505060405180910390fd5b600160a060020a03831660009081526005602052604090205460ff16151560011415613375576040805160e560020a62461bcd0281526020600482015260116024820152600080516020613cd6833981519152604482015290519081900360640190fd5b6133b881604051806060016040528060268152602001613b9860269139600160a060020a038616600090815260076020526040902054919063ffffffff61344916565b600160a060020a0380851660009081526007602052604080822093909355908416815220546133ed908263ffffffff61378716565b600160a060020a0380841660008181526007602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156134db5760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156134a0578181015183820152602001613488565b50505050905090810190601f1680156134cd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008083116135265760405160e560020a62461bcd028152600401808060200182810382526027815260200180613be06027913960400191505060405180910390fd5b6000613550620186a06135446018548761396290919063ffffffff16565b9063ffffffff6139be16565b90506000613570620186a06135446019548861396290919063ffffffff16565b90506000613590620186a0613544601a548961396290919063ffffffff16565b905060006135b0620186a06135446017548a61396290919063ffffffff16565b905080156136445769a936605098d11acc000060155410156136445760408051808201909152600281527f78310000000000000000000000000000000000000000000000000000000000006020820152613613908890839063ffffffff61344916565b601554909750613629908263ffffffff61378716565b601555601654613644908790600160a060020a031683613a00565b83156136ac5760408051808201909152600281527f78320000000000000000000000000000000000000000000000000000000000006020820152613691908890869063ffffffff61344916565b601b549097506136ac908790600160a060020a031686613a00565b82156137145760408051808201909152600281527f783300000000000000000000000000000000000000000000000000000000000060208201526136f9908890859063ffffffff61344916565b601c54909750613714908790600160a060020a031685613a00565b811561377c5760408051808201909152600281527f78340000000000000000000000000000000000000000000000000000000000006020820152613761908890849063ffffffff61344916565b601d5490975061377c908790600160a060020a031684613a00565b509495945050505050565b6000828201838110156137e4576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600160a060020a038316613849576040805160e560020a62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60085469d3c21bcecceda100000090613868908463ffffffff61378716565b11156138be576040805160e560020a62461bcd02815260206004820152601560248201527f6d696e7420657863656564206d6178537570706c790000000000000000000000604482015290519081900360640190fd5b6008546138d1908363ffffffff61378716565b600855600160a060020a0383166000908152600760205260409020546138fd908363ffffffff61378716565b600160a060020a03841660008181526007602090815260409182902093909355805160ff8516815292830191909152818101849052517f603377bb64044e2fa245575e667222f097332a6b0e8e28bfd2a6aa3c089d85fd9181900360600190a1505050565b60008261397157506000611172565b8282028284828161397e57fe5b04146137e45760405160e560020a62461bcd028152600401808060200182810382526021815260200180613c076021913960400191505060405180910390fd5b60006137e483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613a4d565b60008111613a425760405160e560020a62461bcd028152600401808060200182810382526028815260200180613b496028913960400191505060405180910390fd5b6119be8383836132c9565b60008183613a9f5760405160e560020a62461bcd0281526020600482018181528351602484015283519092839260449091019190850190808383600083156134a0578181015183820152602001613488565b506000838581613aab57fe5b049594505050505056fe746f4c69717569646974792072617465206d757374206d6f7265207468616e207a65726f746f4275794261636b2072617465206d757374206d6f7265207468616e207a65726f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737320313345524332303a207472616e7366657220616d6f756e74206c657373207468616e207a65726f20312045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f203845524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365746f50726f6a6563742072617465206d757374206d6f7265207468616e207a65726f45524332303a207472616e7366657220616d6f756e74206c657373207468616e207a65726f2032536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a20617070726f766520746f20746865207a65726f20616464726573732031344f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65727468652061646472657373206973206e6f7420616c6c6f7765642c206f6e6c79206163746976697469657320636f6e7472616374206164647265737320616c6c6f77656445524332303a207472616e736665722066726f6d20746865207a65726f206164647265737373656e646572207761732066726f7a656e00000000000000000000000000000045524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63652035a2646970667358221220f57ade475366d90d2981e9f50c7cb365e38a86bf19392a1fddcbc2a2e2229f0f64736f6c63430006060033
Deployed Bytecode Sourcemap
25277:18580:0:-:0;;;;;;;;;;-1:-1:-1;;;25277:18580:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;24080:43:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24080:43:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24080:43:0;-1:-1:-1;;;;;24080:43:0;;:::i;:::-;;;;;;;;;;;;;;;;;;31558:353;;5:9:-1;2:2;;;27:1;24;17:12;2:2;31558:353:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;31558:353:0;-1:-1:-1;;;;;31558:353:0;;:::i;:::-;;39134:83;;5:9:-1;2:2;;;27:1;24;17:12;2:2;39134:83:0;;;:::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;39134:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41344:241;;5:9:-1;2:2;;;27:1;24;17:12;2:2;41344:241:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;41344:241:0;;;;;;;;:::i;36161:114::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;36161:114:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;36161:114:0;-1:-1:-1;;;;;36161:114:0;;:::i;28789:54::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;28789:54:0;;;:::i;:::-;;;;-1:-1:-1;;;;;28789:54:0;;;;;;;;;;;;;;40209:100;;5:9:-1;2:2;;;27:1;24;17:12;2:2;40209:100:0;;;:::i;:::-;;;;;;;;;;;;;;;;24634:310;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24634:310:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24634:310:0;-1:-1:-1;;;;;24634:310:0;;:::i;41595:681::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;41595:681:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;41595:681:0;;;;;;;;;;;;;;;;;:::i;21989:86::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21989:86:0;;;:::i;28446:34::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;28446:34:0;;;:::i;28698:38::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;28698:38:0;;;:::i;26697:46::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26697:46:0;;;:::i;40061:83::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;40061:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25866:24;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25866:24:0;;;:::i;24051:22::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24051:22:0;;;:::i;28980:95::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;28980:95:0;;;:::i;31195:355::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;31195:355:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;31195:355:0;-1:-1:-1;;;;;31195:355:0;;:::i;38640:328::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;38640:328:0;-1:-1:-1;;;;;38640:328:0;;:::i;26268:29::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26268:29:0;;;:::i;42289:290::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;42289:290:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;42289:290:0;;;;;;;;:::i;25775:27::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25775:27:0;;;:::i;26568:47::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26568:47:0;;;:::i;26991:48::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26991:48:0;;;:::i;34242:46::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34242:46:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;34242:46:0;-1:-1:-1;;;;;34242:46:0;;:::i;27179:49::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27179:49:0;;;:::i;26505:::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26505:49:0;;;:::i;27939:91::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27939:91:0;;;:::i;34940:604::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34940:604:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;34940:604:0;;-1:-1:-1;;;;;34940:604:0;;;;;;;;;;;;;:::i;28652:39::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;28652:39:0;;;:::i;35552:155::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;35552:155:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;27083:48;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27083:48:0;;;:::i;28611:34::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;28611:34:0;;;:::i;27816:93::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27816:93:0;;;:::i;25722:45::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25722:45:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25722:45:0;-1:-1:-1;;;;;25722:45:0;;:::i;40372:119::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;40372:119:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;40372:119:0;-1:-1:-1;;;;;40372:119:0;;:::i;9744:148::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9744:148:0;;;:::i;22221:39::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22221:39:0;;;:::i;28397:42::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;28397:42:0;;;:::i;22082:91::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22082:91:0;;;:::i;28059:90::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;28059:90:0;;;:::i;27687:98::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27687:98:0;;;:::i;9102:79::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9102:79:0;;;:::i;29582:1244::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;29582:1244:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;29582:1244:0;;;;;;;;;;;;;;;;;:::i;39336:87::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;39336:87:0;;;:::i;30836:351::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;30836:351:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;30836:351:0;-1:-1:-1;;;;;30836:351:0;;:::i;22499:533::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22499:533:0;;;:::i;28872:96::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;28872:96:0;;;:::i;34563:367::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34563:367:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;34563:367:0;;;;;;;;;;;;;;;;;:::i;42592:344::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;42592:344:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;42592:344:0;;;;;;;;:::i;40704:397::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;40704:397:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;40704:397:0;;;;;;;;:::i;25837:22::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25837:22:0;;;:::i;26836:52::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26836:52:0;;;:::i;26215:46::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26215:46:0;;;:::i;27288:94::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27288:94:0;;;:::i;28564:40::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;28564:40:0;;;:::i;23786:136::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23786:136:0;;;:::i;22182:32::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22182:32:0;;;:::i;24130:47::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24130:47:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24130:47:0;-1:-1:-1;;;;;24130:47:0;;:::i;28491:50::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;28491:50:0;;;:::i;25810:20::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25810:20:0;;;:::i;34515:38::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34515:38:0;;;:::i;28743:37::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;28743:37:0;;;:::i;27587:88::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27587:88:0;;;:::i;41113:221::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;41113:221:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;41113:221:0;;;;;;;;;;:::i;31921:186::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;31921:186:0;;;:::i;:::-;;;;-1:-1:-1;;;;;31921:186:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;23042:736;;;:::i;27490:89::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27490:89:0;;;:::i;27390:92::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27390:92:0;;;:::i;24952:180::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24952:180:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;24952:180:0;;;;;;;;;;:::i;24322:304::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24322:304:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24322:304:0;-1:-1:-1;;;;;24322:304:0;;:::i;38125:507::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;38125:507:0;-1:-1:-1;;;;;38125:507:0;;:::i;10047:244::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10047:244:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;10047:244:0;-1:-1:-1;;;;;10047:244:0;;:::i;34451:60::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34451:60:0;;;:::i;25144:111::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25144:111:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;25144:111:0;-1:-1:-1;;;;;25144:111:0;;:::i;24080:43::-;;;;;;;;;;;;;;;:::o;31558:353::-;9324:12;:10;:12::i;:::-;9314:6;;-1:-1:-1;;;;;9314:6:0;;;:22;;;9306:67;;;;;-1:-1:-1;;;;;9306:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9306:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;31667:28:0;::::1;31659:56;;;::::0;;-1:-1:-1;;;;;31659:56:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;31749:10;31734:26;::::0;;;:14:::1;:26;::::0;;;;;::::1;;:34;;:26:::0;:34:::1;;31726:65;;;::::0;;-1:-1:-1;;;;;31726:65:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;31726:65:0;;;;;;;;;;;;;::::1;;31804:27;:44:::0;;-1:-1:-1;;;;;31804:44:0;::::1;-1:-1:-1::0;;;;;;31804:44:0;;::::1;::::0;::::1;::::0;;;31866:37:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;31558:353:::0;:::o;39134:83::-;39204:5;39197:12;;;;;;;;-1:-1:-1;;39197:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39171:13;;39197:12;;39204:5;;39197:12;;39204:5;39197:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39134:83;:::o;41344:241::-;-1:-1:-1;;;;;41453:23:0;;41427:4;41453:23;;;:14;:23;;;;;;;;:31;;:23;:31;;41444:61;;;;;-1:-1:-1;;;;;41444:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;41516:39;41525:12;:10;:12::i;:::-;41539:7;41548:6;41516:8;:39::i;:::-;-1:-1:-1;41573:4:0;41344:241;;;;;:::o;36161:114::-;-1:-1:-1;;;;;36244:23:0;36221:4;36244:23;;;:14;:23;;;;;;;;;36161:114::o;28789:54::-;;;-1:-1:-1;;;;;28789:54:0;;:::o;40209:100::-;40289:12;;40209:100;:::o;24634:310::-;9324:12;:10;:12::i;:::-;9314:6;;-1:-1:-1;;;;;9314:6:0;;;:22;;;9306:67;;;;;-1:-1:-1;;;;;9306:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9306:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24710:19:0;::::1;24702:70;;;;-1:-1:-1::0;;;;;24702:70:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24806:10;24791:26;::::0;;;:14:::1;:26;::::0;;;;;::::1;;:34;;:26:::0;:34:::1;;24783:65;;;::::0;;-1:-1:-1;;;;;24783:65:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;24783:65:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;24859:17:0;::::1;24879:5;24859:17:::0;;;:10:::1;:17;::::0;;;;;;;:25;;-1:-1:-1;;24859:25:0::1;::::0;;24901:35;;;;;;;::::1;::::0;;;;;;::::1;::::0;;;;;;;;::::1;24634:310:::0;:::o;41595:681::-;-1:-1:-1;;;;;41724:18:0;;41701:4;41724:18;;;:10;:18;;;;;;;;41720:518;;;41760:36;41770:6;41778:9;41789:6;41760:9;:36::i;:::-;41827:123;41836:6;41844:12;:10;:12::i;:::-;41858:91;41896:6;41858:91;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;41858:19:0;;;;;;:11;:19;;;;;;41878:12;:10;:12::i;:::-;-1:-1:-1;;;;;41858:33:0;;;;;;;;;;;;-1:-1:-1;41858:33:0;;;:91;;:37;:91;:::i;:::-;41827:8;:123::i;:::-;41720:518;;;41980:24;42007:22;42015:6;42022;42007:7;:22::i;:::-;41980:49;;42043:46;42053:6;42061:9;42072:16;42043:9;:46::i;:::-;42103:123;42112:6;42120:12;:10;:12::i;:::-;42134:91;42172:6;42134:91;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;42134:19:0;;;;;;:11;:19;;;;;;42154:12;:10;:12::i;42103:123::-;41720:518;;-1:-1:-1;42264:4:0;41595:681;;;;;:::o;21989:86::-;22033:42;21989:86;:::o;28446:34::-;;;;:::o;28698:38::-;;;;:::o;26697:46::-;26735:8;26697:46;:::o;40061:83::-;40127:9;;;;40061:83;:::o;25866:24::-;;;;;;:::o;24051:22::-;;;-1:-1:-1;;;;;24051:22:0;;:::o;28980:95::-;;;-1:-1:-1;;;;;28980:95:0;;:::o;31195:355::-;9324:12;:10;:12::i;:::-;9314:6;;-1:-1:-1;;;;;9314:6:0;;;:22;;;9306:67;;;;;-1:-1:-1;;;;;9306:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9306:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;31305:28:0;::::1;31297:56;;;::::0;;-1:-1:-1;;;;;31297:56:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;31387:10;31372:26;::::0;;;:14:::1;:26;::::0;;;;;::::1;;:34;;:26:::0;:34:::1;;31364:65;;;::::0;;-1:-1:-1;;;;;31364:65:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;31364:65:0;;;;;;;;;;;;;::::1;;31442:27;:44:::0;;-1:-1:-1;;;;;31442:44:0;::::1;-1:-1:-1::0;;;;;;31442:44:0;;::::1;::::0;::::1;::::0;;;31504:38:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;31195:355:::0;:::o;38640:328::-;9324:12;:10;:12::i;:::-;9314:6;;-1:-1:-1;;;;;9314:6:0;;;:22;;;9306:67;;;;;-1:-1:-1;;;;;9306:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9306:67:0;;;;;;;;;;;;;;;38749:10:::1;38734:26;::::0;;;:14:::1;:26;::::0;;;;;::::1;;:34;;:26:::0;:34:::1;;38726:65;;;::::0;;-1:-1:-1;;;;;38726:65:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;38726:65:0;;;;;;;;;;;;;::::1;;38804:29;38817:15;38804:12;:29::i;:::-;-1:-1:-1::0;;;;;38846:26:0;::::1;;::::0;;;:9:::1;:26;::::0;;;;27219:9:::1;38846:42:::0;;;;38918:12:::1;::::0;:31:::1;::::0;::::1;:16;:31;:::i;:::-;38903:12;:46:::0;-1:-1:-1;38640:328:0:o;26268:29::-;;;;:::o;42289:290::-;-1:-1:-1;;;;;42403:23:0;;42377:4;42403:23;;;:14;:23;;;;;;;;:31;;:23;:31;;42394:61;;;;;-1:-1:-1;;;;;42394:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;42466:83;42475:12;:10;:12::i;:::-;42489:7;42498:50;42537:10;42498:11;:25;42510:12;:10;:12::i;:::-;-1:-1:-1;;;;;42498:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;42498:25:0;;;:34;;;;;;;;;;;:50;:38;:50;:::i;25775:27::-;;;;:::o;26568:47::-;26607:8;26568:47;:::o;26991:48::-;27034:5;26991:48;:::o;34242:46::-;;;;;;;;;;;;;;;:::o;27179:49::-;27219:9;27179:49;:::o;26505:::-;26547:7;26505:49;:::o;27939:91::-;;;-1:-1:-1;;;;;27939:91:0;;:::o;34940:604::-;35053:10;35038:26;;;;:14;:26;;;;;;;;35030:106;;;;-1:-1:-1;;;;;35030:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35157:21:0;;35149:46;;;;;-1:-1:-1;;;;;35149:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;35223:1;35214:6;:10;35206:44;;;;;-1:-1:-1;;;;;35206:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;35266:13;:19;;35283:2;35266:19;35263:272;;;35313:23;;34503:8;;35313:35;;35341:6;35313:35;:27;:35;:::i;:::-;:64;;35305:82;;;;;-1:-1:-1;;;;;35305:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;35406:35;35412:7;35420:6;35427:13;35406:5;:35::i;:::-;35486:23;;:35;;35514:6;35486:35;:27;:35;:::i;:::-;35460:23;:61;35263:272;34940:604;;;:::o;28652:39::-;;;;:::o;35552:155::-;35649:23;;34503:8;35552:155;;:::o;27083:48::-;27122:9;27083:48;:::o;28611:34::-;;;;:::o;27816:93::-;;;-1:-1:-1;;;;;27816:93:0;;:::o;25722:45::-;;;;;;;;;;;;;:::o;40372:119::-;-1:-1:-1;;;;;40465:18:0;40438:7;40465:18;;;:9;:18;;;;;;;40372:119::o;9744:148::-;9324:12;:10;:12::i;:::-;9314:6;;-1:-1:-1;;;;;9314:6:0;;;:22;;;9306:67;;;;;-1:-1:-1;;;;;9306:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9306:67:0;;;;;;;;;;;;;;;9851:1:::1;9835:6:::0;;9814:40:::1;::::0;-1:-1:-1;;;;;9835:6:0;;::::1;::::0;9814:40:::1;::::0;9851:1;;9814:40:::1;9882:1;9865:19:::0;;-1:-1:-1;;;;;;9865:19:0::1;::::0;;9744:148::o;22221:39::-;;;-1:-1:-1;;;;;22221:39:0;;:::o;28397:42::-;28433:6;28397:42;:::o;22082:91::-;22131:42;22082:91;:::o;28059:90::-;;;-1:-1:-1;;;;;28059:90:0;;:::o;27687:98::-;;;-1:-1:-1;;;;;27687:98:0;;:::o;9102:79::-;9140:7;9167:6;-1:-1:-1;;;;;9167:6:0;9102:79;:::o;29582:1244::-;9324:12;:10;:12::i;:::-;9314:6;;-1:-1:-1;;;;;9314:6:0;;;:22;;;9306:67;;;;;-1:-1:-1;;;;;9306:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9306:67:0;;;;;;;;;;;;;;;29796:1:::1;29782:11;:15;:43;;;;;28433:6;29802:11;:23;29782:43;29774:88;;;::::0;;-1:-1:-1;;;;;29774:88:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;29900:1;29881:16;:20;:53;;;;;28433:6;29906:16;:28;29881:53;29873:103;;;;-1:-1:-1::0;;;;;29873:103:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30012:1;29995:14;:18;:49;;;;;28433:6;30018:14;:26;29995:49;29987:97;;;;-1:-1:-1::0;;;;;29987:97:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30120:1;30103:14;:18;:49;;;;;28433:6;30126:14;:26;30103:49;30095:97;;;;-1:-1:-1::0;;;;;30095:97:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30226:10;30211:26;::::0;;;:14:::1;:26;::::0;;;;;::::1;;:34;;:26:::0;:34:::1;;30203:65;;;::::0;;-1:-1:-1;;;;;30203:65:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;30203:65:0;;;;;;;;;;;;;::::1;;30287:26;::::0;-1:-1:-1;;;;;30287:26:0::1;30279:74;;;::::0;;-1:-1:-1;;;;;30279:74:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;30372:27;::::0;-1:-1:-1;;;;;30372:27:0::1;30364:76;;;::::0;;-1:-1:-1;;;;;30364:76:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;30459:27;::::0;-1:-1:-1;;;;;30459:27:0::1;30451:76;;;::::0;;-1:-1:-1;;;;;30451:76:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;30550:12;:26:::0;;;30587:17:::1;:36:::0;;;30634:15:::1;:33:::0;;;30678:15:::1;:32:::0;;;30728:80:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;29582:1244:::0;;;;:::o;39336:87::-;39408:7;39401:14;;;;;;;;-1:-1:-1;;39401:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39375:13;;39401:14;;39408:7;;39401:14;;39408:7;39401:14;;;;;;;;;;;;;;;;;;;;;;;;30836:351;9324:12;:10;:12::i;:::-;9314:6;;-1:-1:-1;;;;;9314:6:0;;;:22;;;9306:67;;;;;-1:-1:-1;;;;;9306:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9306:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;30944:28:0;::::1;30936:56;;;::::0;;-1:-1:-1;;;;;30936:56:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;31026:10;31011:26;::::0;;;:14:::1;:26;::::0;;;;;::::1;;:34;;:26:::0;:34:::1;;31003:65;;;::::0;;-1:-1:-1;;;;;31003:65:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;31003:65:0;;;;;;;;;;;;;::::1;;31081:26;:43:::0;;-1:-1:-1;;;;;31081:43:0;::::1;-1:-1:-1::0;;;;;;31081:43:0;;::::1;::::0;::::1;::::0;;;31142:37:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;30836:351:::0;:::o;22499:533::-;22547:7;9324:12;:10;:12::i;:::-;9314:6;;-1:-1:-1;;;;;9314:6:0;;;:22;;;9306:67;;;;;-1:-1:-1;;;;;9306:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9306:67:0;;;;;;;;;;;;;;;22596:7:::1;::::0;22627:13:::1;::::0;:20:::1;::::0;;-1:-1:-1;;;;;22627:20:0;;;;22566:15:::1;::::0;;;-1:-1:-1;;;;;22596:7:0;;::::1;::::0;:15:::1;::::0;22620:4:::1;::::0;22627:13;;::::1;::::0;:18:::1;::::0;:20:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:13;:20;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;22627:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;22627:20:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;22627:20:0;22596:52:::1;::::0;;-1:-1:-1;;;22596:52:0::1;::::0;::::1;;::::0;;-1:-1:-1;;;;;22596:52:0;;::::1;;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;22627:20:::1;::::0;22596:52;;;;;;;;;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;22596:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;22596:52:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;22596:52:0;-1:-1:-1;;;;;22596:66:0::1;;22592:406;;;22753:7;::::0;22787:13:::1;::::0;:20:::1;::::0;;-1:-1:-1;;;;;22787:20:0;;;;22699:15:::1;::::0;-1:-1:-1;;;;;22753:7:0;;::::1;::::0;:18:::1;::::0;22780:4:::1;::::0;22787:13;;;::::1;::::0;:18:::1;::::0;:20:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:13;:20;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;22787:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;22787:20:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;22787:20:0;22753:55:::1;::::0;;-1:-1:-1;;;22753:55:0::1;::::0;::::1;;::::0;;-1:-1:-1;;;;;22753:55:0;;::::1;;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;22787:20:::1;::::0;22753:55;;;;;;;-1:-1:-1;22753:55:0;;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;22753:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;22753:55:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;22753:55:0;22840:39:::1;::::0;;-1:-1:-1;;;;;22840:39:0;::::1;::::0;;22753:55:::1;22840:39:::0;::::1;::::0;;;;;22753:55;;-1:-1:-1;22840:39:0::1;::::0;;;;;;;;;::::1;22592:406;;;;22934:7;::::0;22965:13:::1;::::0;:20:::1;::::0;;-1:-1:-1;;;;;22965:20:0;;;;-1:-1:-1;;;;;22934:7:0;;::::1;::::0;:15:::1;::::0;22958:4:::1;::::0;22965:13;::::1;::::0;:18:::1;::::0;:20:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:13;:20;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;22965:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;22965:20:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;22965:20:0;22934:52:::1;::::0;;-1:-1:-1;;;22934:52:0::1;::::0;::::1;;::::0;;-1:-1:-1;;;;;22934:52:0;;::::1;;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;22965:20:::1;::::0;22934:52;;;;;;;;;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;22934:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;22934:52:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;22934:52:0;;-1:-1:-1;22592:406:0::1;23017:7:::0;-1:-1:-1;22499:533:0;:::o;28872:96::-;;;-1:-1:-1;;;;;28872:96:0;;:::o;34563:367::-;9324:12;:10;:12::i;:::-;9314:6;;-1:-1:-1;;;;;9314:6:0;;;:22;;;9306:67;;;;;-1:-1:-1;;;;;9306:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9306:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;34676:21:0;::::1;34668:46;;;::::0;;-1:-1:-1;;;;;34668:46:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;34748:10;34733:26;::::0;;;:14:::1;:26;::::0;;;;;::::1;;:34;;:26:::0;:34:::1;;34725:65;;;::::0;;-1:-1:-1;;;;;34725:65:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;34725:65:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;34811:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;;;;;:33;;-1:-1:-1;;34811:33:0::1;::::0;::::1;;;::::0;;34877:45;;34811:33:::1;34877:45:::0;::::1;::::0;;;;::::1;::::0;;;;;;::::1;::::0;;;;;;;;::::1;34563:367:::0;;;:::o;42592:344::-;-1:-1:-1;;;;;42711:23:0;;42685:4;42711:23;;;:14;:23;;;;;;;;:31;;:23;:31;;42702:61;;;;;-1:-1:-1;;;;;42702:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;42774:132;42783:12;:10;:12::i;:::-;42797:7;42806:99;42845:15;42806:99;;;;;;;;;;;;;;;;;:11;:25;42818:12;:10;:12::i;:::-;-1:-1:-1;;;;;42806:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;42806:25:0;;;:34;;;;;;;;;;;:99;;:38;:99;:::i;40704:397::-;40790:4;40815:10;:24;40826:12;:10;:12::i;:::-;-1:-1:-1;;;;;40815:24:0;;;;;;;;;;;;-1:-1:-1;40815:24:0;;;;40811:252;;;40856:42;40866:12;:10;:12::i;:::-;40880:9;40891:6;40856:9;:42::i;:::-;40811:252;;;40929:24;40956:28;40964:6;40971:12;:10;:12::i;:::-;40956:7;:28::i;:::-;40929:55;;40998:52;41008:12;:10;:12::i;:::-;41022:9;41033:16;40998:9;:52::i;:::-;40811:252;-1:-1:-1;41089:4:0;40704:397;;;;:::o;25837:22::-;;;;;;;;;;;;;;;-1:-1:-1;;25837:22:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26836:52::-;26879:9;26836:52;:::o;26215:46::-;26251:10;26215:46;:::o;27288:94::-;;;-1:-1:-1;;;;;27288:94:0;;:::o;28564:40::-;;;-1:-1:-1;;;;;28564:40:0;;:::o;23786:136::-;23853:7;;23884:13;;:20;;;-1:-1:-1;;;;;23884:20:0;;;;23827:7;;-1:-1:-1;;;;;23853:7:0;;;;:15;;23877:4;;23884:13;;;;;:18;;:20;;;;;;;;;;;;;;:13;:20;;;2:2:-1;;;;27:1;24;17:12;2:2;23884:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23884:20:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;23884:20:0;23853:52;;;-1:-1:-1;;;23853:52:0;;;;;;-1:-1:-1;;;;;23853:52:0;;;;;;;;;;;;;;;;;;;;;23884:20;;23853:52;;;;;;;;;;;2:2:-1;;;;27:1;24;17:12;2:2;23853:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23853:52:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;23853:52:0;;-1:-1:-1;23786:136:0;:::o;22182:32::-;;;-1:-1:-1;;;;;22182:32:0;;:::o;24130:47::-;;;;;;;;;;;;;;;:::o;28491:50::-;28532:9;28491:50;:::o;25810:20::-;;;;;;;;;;;;;;;-1:-1:-1;;25810:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34515:38;;;;:::o;28743:37::-;;;;:::o;27587:88::-;;;-1:-1:-1;;;;;27587:88:0;;:::o;41113:221::-;-1:-1:-1;;;;;41231:21:0;;41202:7;41231:21;;;:14;:21;;;;;;;;:29;;:21;:29;;41222:59;;;;;-1:-1:-1;;;;;41222:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;41299:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;41113:221::o;31921:186::-;32015:26;;32042:27;;32071;;-1:-1:-1;;;;;32015:26:0;;;;32042:27;;;;32071;;31921:186::o;23042:736::-;23099:4;9324:12;:10;:12::i;:::-;9314:6;;-1:-1:-1;;;;;9314:6:0;;;:22;;;9306:67;;;;;-1:-1:-1;;;;;9306:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9306:67:0;;;;;;;;;;;;;;;23330::::1;::::0;;;;;22131:42:::1;23330:67;::::0;::::1;::::0;22457:5:::1;23330:67:::0;;;;;;23253:2:::1;23235:15;:20;::::0;23303:4:::1;::::0;;;23330:18:::1;::::0;:67;;;;;::::1;::::0;;;;;;;;23219:13:::1;23303:4:::0;23330:67;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;23330:67:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;23330:67:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;23330:67:0;23322:95:::1;;;::::0;;-1:-1:-1;;;;;23322:95:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;23536:13;::::0;:132:::1;::::0;;;;;23594:4:::1;23536:132;::::0;::::1;::::0;;;22457:5:::1;23536:132:::0;;;;;;;;;;23574:9:::1;23536:132:::0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23536:13:0;;::::1;::::0;:29:::1;::::0;23574:9;23536:132;;;;;::::1;::::0;;;;;;;;;23574:9;23536:13;:132;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;23536:132:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;23536:132:0;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;23536:132:0;23692:54;;22457:5:::1;23692:54:::0;;23725:9:::1;23536:132;23692:54:::0;::::1;::::0;;;;;;;;;::::1;::::0;;;;23536:132;23692:54;;::::1;23766:4;23759:11;;;;23042:736:::0;:::o;27490:89::-;;;-1:-1:-1;;;;;27490:89:0;;:::o;27390:92::-;;;-1:-1:-1;;;;;27390:92:0;;:::o;24952:180::-;9324:12;:10;:12::i;:::-;9314:6;;-1:-1:-1;;;;;9314:6:0;;;:22;;;9306:67;;;;;-1:-1:-1;;;;;9306:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9306:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;25042:22:0;::::1;;::::0;;;:14:::1;:22;::::0;;;;;;;;:31;;-1:-1:-1;;25042:31:0::1;::::0;::::1;;::::0;;::::1;::::0;;;25089:35;;;;;;;::::1;::::0;;;::::1;::::0;;;;;;;;::::1;24952:180:::0;;:::o;24322:304::-;9324:12;:10;:12::i;:::-;9314:6;;-1:-1:-1;;;;;9314:6:0;;;:22;;;9306:67;;;;;-1:-1:-1;;;;;9306:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9306:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24395:19:0;::::1;24387:70;;;;-1:-1:-1::0;;;;;24387:70:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24491:10;24476:26;::::0;;;:14:::1;:26;::::0;;;;;::::1;;:34;;:26:::0;:34:::1;;24468:65;;;::::0;;-1:-1:-1;;;;;24468:65:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;24468:65:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;24544:17:0;::::1;;::::0;;;:10:::1;:17;::::0;;;;;;;;:24;;-1:-1:-1;;24544:24:0::1;24564:4;24544:24:::0;;::::1;::::0;;;24584:34;;;;;;;::::1;::::0;;;::::1;::::0;;;;;;;;::::1;24322:304:::0;:::o;38125:507::-;9324:12;:10;:12::i;:::-;9314:6;;-1:-1:-1;;;;;9314:6:0;;;:22;;;9306:67;;;;;-1:-1:-1;;;;;9306:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9306:67:0;;;;;;;;;;;;;;;38222:10:::1;38207:26;::::0;;;:14:::1;:26;::::0;;;;;::::1;;:34;;:26:::0;:34:::1;;38199:65;;;::::0;;-1:-1:-1;;;;;38199:65:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;38199:65:0;;;;;;;;;;;;;::::1;;38285:26;:39:::0;;-1:-1:-1;;;;;;38285:39:0::1;-1:-1:-1::0;;;;;38285:39:0;::::1;;::::0;;-1:-1:-1;38362:12:0::1;:10;:12::i;:::-;38387:7;:24:::0;;-1:-1:-1;;;;;;38387:24:0::1;-1:-1:-1::0;;;;;38387:24:0;::::1;;::::0;;;-1:-1:-1;38424:28:0::1;38387:24:::0;38424:12:::1;:28::i;:::-;38463:36;22131:42;38463:12;:36::i;:::-;38510:27;38531:4;38510:12;:27::i;:::-;38561:26;::::0;38548:40:::1;::::0;-1:-1:-1;;;;;38561:26:0::1;38548:12;:40::i;:::-;38609:13;:11;:13::i;10047:244::-:0;9324:12;:10;:12::i;:::-;9314:6;;-1:-1:-1;;;;;9314:6:0;;;:22;;;9306:67;;;;;-1:-1:-1;;;;;9306:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9306:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;10136:22:0;::::1;10128:73;;;;-1:-1:-1::0;;;;;10128:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10238:6;::::0;;10217:38:::1;::::0;-1:-1:-1;;;;;10217:38:0;;::::1;::::0;10238:6;::::1;::::0;10217:38:::1;::::0;::::1;10266:6;:17:::0;;-1:-1:-1;;;;;;10266:17:0::1;-1:-1:-1::0;;;;;10266:17:0;;;::::1;::::0;;;::::1;::::0;;10047:244::o;34451:60::-;34503:8;34451:60;:::o;25144:111::-;-1:-1:-1;;;;;25228:19:0;25204:4;25228:19;;;:10;:19;;;;;;;;;25144:111::o;8238:106::-;8326:10;8238:106;:::o;43431:423::-;-1:-1:-1;;;;;43533:21:0;;;;;;:14;:21;;;;;;;;:29;;:21;:29;;43525:60;;;;;-1:-1:-1;;;;;43525:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;43525:60:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;43604:19:0;;43596:71;;;;-1:-1:-1;;;;;43596:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;43686:21:0;;43678:71;;;;-1:-1:-1;;;;;43678:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;43762:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;43814:32;;;;;;;;;;;;;;;;;43431:423;;;:::o;42944:476::-;-1:-1:-1;;;;;43050:20:0;;43042:70;;;;-1:-1:-1;;;;;43042:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;43131:22:0;;;;;;:14;:22;;;;;;;;:30;;:22;:30;;43123:61;;;;;-1:-1:-1;;;;;43123:61:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;43123:61:0;;;;;;;;;;;;;;;43224:71;43246:6;43224:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;43224:17:0;;;;;;:9;:17;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;43204:17:0;;;;;;;:9;:17;;;;;;:91;;;;43329:20;;;;;;;:32;;43354:6;43329:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;43306:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;43377:35;;;;;;;43306:20;;43377:35;;;;;;;;;;;;;42944:476;;;:::o;11464:192::-;11550:7;11586:12;11578:6;;;;11570:29;;;;-1:-1:-1;;;;;11570: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;11570:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11622:5:0;;;11464:192::o;32382:1625::-;32491:7;32543:1;32528:12;:16;32520:69;;;;-1:-1:-1;;;;;32520:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32611:20;32634:50;28433:6;32634:35;32651:17;;32634:12;:16;;:35;;;;:::i;:::-;:39;:50;:39;:50;:::i;:::-;32611:73;;32695:18;32716:48;28433:6;32716:33;32733:15;;32716:12;:16;;:33;;;;:::i;:48::-;32695:69;;32775:20;32798:48;28433:6;32798:33;32815:15;;32798:12;:16;;:33;;;;:::i;:48::-;32775:71;;32857:15;32875:45;28433:6;32875:30;32892:12;;32875;:16;;:30;;;;:::i;:45::-;32857:63;-1:-1:-1;32940:11:0;;32936:319;;28532:9;32998:15;;:32;32995:244;;;33065:30;;;;;;;;;;;;;;;;;;;:12;;33082:7;;33065:30;:16;:30;:::i;:::-;33132:15;;33050:45;;-1:-1:-1;33132:28:0;;33152:7;33132:28;:19;:28;:::i;:::-;33114:15;:46;33202:12;;33179:44;;33195:6;;-1:-1:-1;;;;;33202:12:0;33215:7;33179:15;:44::i;:::-;33271:16;;33267:251;;33390:35;;;;;;;;;;;;;;;;;;;:12;;33407;;33390:35;:16;:35;:::i;:::-;33464:26;;33375:50;;-1:-1:-1;33440:66:0;;33456:6;;-1:-1:-1;;;;;33464:26:0;33492:12;33440:15;:66::i;:::-;33534:14;;33530:208;;33613:33;;;;;;;;;;;;;;;;;;;:12;;33630:10;;33613:33;:16;:33;:::i;:::-;33685:27;;33598:48;;-1:-1:-1;33661:65:0;;33677:6;;-1:-1:-1;;;;;33685:27:0;33714:10;33661:15;:65::i;:::-;33754:15;;33750:213;;33834:35;;;;;;;;;;;;;;;;;;;:12;;33851;;33834:35;:16;:35;:::i;:::-;33908:27;;33819:50;;-1:-1:-1;33884:67:0;;33900:6;;-1:-1:-1;;;;;33908:27:0;33937:12;33884:15;:67::i;:::-;-1:-1:-1;33983:12:0;;32382:1625;-1:-1:-1;;;;;32382:1625:0:o;10561:181::-;10619:7;10651:5;;;10675:6;;;;10667:46;;;;;-1:-1:-1;;;;;10667:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10733:1;10561:181;-1:-1:-1;;;10561:181:0:o;35715:438::-;-1:-1:-1;;;;;35820:21:0;;35812:65;;;;;-1:-1:-1;;;;;35812:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;35896:12;;26251:10;;35896:24;;35913:6;35896:24;:16;:24;:::i;:::-;:37;;35888:71;;;;;-1:-1:-1;;;;;35888:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;35997:12;;:24;;36014:6;35997:24;:16;:24;:::i;:::-;35982:12;:39;-1:-1:-1;;;;;36053:18:0;;;;;;:9;:18;;;;;;:30;;36076:6;36053:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;36032:18:0;;;;;;:9;:18;;;;;;;;;:51;;;;36101:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35715:438;;;:::o;11915:471::-;11973:7;12218:6;12214:47;;-1:-1:-1;12248:1:0;12241:8;;12214:47;12285:5;;;12289:1;12285;:5;:1;12309:5;;;;;:10;12301:56;;;;-1:-1:-1;;;;;12301:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12862:132;12920:7;12947:39;12951:1;12954;12947:39;;;;;;;;;;;;;;;;;:3;:39::i;32117:257::-;32266:1;32257:6;:10;32249:64;;;;-1:-1:-1;;;;;32249:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32328:38;32338:6;32346:11;32359:6;32328:9;:38::i;13490:278::-;13576:7;13611:12;13604:5;13596:28;;;;-1:-1:-1;;;;;13596:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;13596:28:0;;13635:9;13651:1;13647;:5;;;;;;;13490:278;-1:-1:-1;;;;;13490:278:0:o
Swarm Source
ipfs://f57ade475366d90d2981e9f50c7cb365e38a86bf19392a1fddcbc2a2e2229f0f
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.