More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 324 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 21419813 | 12 days ago | IN | 0 ETH | 0.00046652 | ||||
Approve | 21290833 | 30 days ago | IN | 0 ETH | 0.00016832 | ||||
Approve | 21290830 | 30 days ago | IN | 0 ETH | 0.00013775 | ||||
Approve | 21268671 | 33 days ago | IN | 0 ETH | 0.00043712 | ||||
Approve | 21263588 | 34 days ago | IN | 0 ETH | 0.00041583 | ||||
Approve | 21259246 | 34 days ago | IN | 0 ETH | 0.00044037 | ||||
Approve | 21193737 | 43 days ago | IN | 0 ETH | 0.00130097 | ||||
Approve | 21037151 | 65 days ago | IN | 0 ETH | 0.00059949 | ||||
Approve | 21019750 | 68 days ago | IN | 0 ETH | 0.00031571 | ||||
Approve | 21015025 | 68 days ago | IN | 0 ETH | 0.00057316 | ||||
Approve | 20990068 | 72 days ago | IN | 0 ETH | 0.00112433 | ||||
Approve | 20982929 | 73 days ago | IN | 0 ETH | 0.00052083 | ||||
Approve | 20982126 | 73 days ago | IN | 0 ETH | 0.0003879 | ||||
Transfer | 20980229 | 73 days ago | IN | 0 ETH | 0.00336093 | ||||
Approve | 20980221 | 73 days ago | IN | 0 ETH | 0.00037775 | ||||
Approve | 20979937 | 73 days ago | IN | 0 ETH | 0.00066955 | ||||
Approve | 20979906 | 73 days ago | IN | 0 ETH | 0.00067086 | ||||
Approve | 20979517 | 73 days ago | IN | 0 ETH | 0.00101947 | ||||
Approve | 20979374 | 73 days ago | IN | 0 ETH | 0.00133026 | ||||
Approve | 20978729 | 73 days ago | IN | 0 ETH | 0.00120086 | ||||
Approve | 20978722 | 73 days ago | IN | 0 ETH | 0.00101633 | ||||
Approve | 20978584 | 73 days ago | IN | 0 ETH | 0.00090504 | ||||
Approve | 20977958 | 73 days ago | IN | 0 ETH | 0.00082224 | ||||
Approve | 20977707 | 73 days ago | IN | 0 ETH | 0.00062661 | ||||
Approve | 20973343 | 74 days ago | IN | 0 ETH | 0.00102542 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
21419815 | 12 days ago | 0.00037273 ETH | ||||
21419815 | 12 days ago | 0.00037273 ETH | ||||
21268671 | 33 days ago | 0.0007584 ETH | ||||
21268671 | 33 days ago | 0.0007584 ETH | ||||
21259246 | 34 days ago | 0.00062113 ETH | ||||
21259246 | 34 days ago | 0.00062113 ETH | ||||
21193740 | 43 days ago | 0.0004185 ETH | ||||
21193740 | 43 days ago | 0.0004185 ETH | ||||
21166274 | 47 days ago | 0.00008993 ETH | ||||
21166274 | 47 days ago | 0.00008993 ETH | ||||
21097955 | 57 days ago | 0.00220831 ETH | ||||
21097955 | 57 days ago | 0.00220831 ETH | ||||
21040149 | 65 days ago | 0.00270569 ETH | ||||
21040149 | 65 days ago | 0.00270569 ETH | ||||
21040149 | 65 days ago | 0.0029126 ETH | ||||
21040149 | 65 days ago | 0.0029126 ETH | ||||
21037154 | 65 days ago | 0.0008308 ETH | ||||
21037154 | 65 days ago | 0.0008308 ETH | ||||
21035590 | 65 days ago | 0.00040457 ETH | ||||
21035590 | 65 days ago | 0.00040457 ETH | ||||
21035590 | 65 days ago | 0.00039625 ETH | ||||
21035590 | 65 days ago | 0.00039625 ETH | ||||
21035590 | 65 days ago | 0.00068906 ETH | ||||
21035590 | 65 days ago | 0.00068906 ETH | ||||
21019752 | 68 days ago | 0.00071783 ETH |
Loading...
Loading
Contract Name:
AuraAi
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-10-08 */ // SPDX-License-Identifier: MIT /* website: Auraprotocol.ai telegram: https://t.me/auraaiportal twitter: X.com/auraaiofficial */ pragma solidity ^0.8.9; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface 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 marketing 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 marketing 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 marketing 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); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @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 this function is * overridden; * * 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 virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @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) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } 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; } } 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 () { 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 SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } 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; } contract AuraAi is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address public marketingWallet; address public devWallet; address public auraWallet; uint256 public maxTransactionAmount; uint256 public maxWallet; uint8 private _decimals; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; bool public rescueSwap = false; uint256 public tradingActiveBlock; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public buyAuraFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public sellAuraFee; uint256 public transferTotalFees; uint256 public transferMarketingFee; uint256 public transferLiquidityFee; uint256 public transferDevFee; uint256 public transferAuraFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; uint256 public tokensForAura; /******************/ // exlcude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; mapping (address => uint256) public _zsestTransaction; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event devWalletUpdated(address indexed newWallet, address indexed oldWallet); event auraWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AuraTriggered(uint256 amount); event OwnerForcedSwapBack(uint256 timestamp); constructor() ERC20("Aura AI", "AURA") { address _owner = _msgSender(); _decimals = 18; uint256 totalSupply = 1 * 1e8 * (10**_decimals); maxTransactionAmount = totalSupply * 1 / 100; // 1% maxTransactionAmountTxn maxWallet = totalSupply * 1 / 100; // 1% maxWallet buyMarketingFee = 25; buyLiquidityFee = 0; buyDevFee = 0; buyAuraFee = 0; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee + buyAuraFee; sellMarketingFee = 40; sellLiquidityFee = 0; sellDevFee = 0; sellAuraFee = 0; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee + sellAuraFee; transferMarketingFee = 0; transferLiquidityFee = 0; transferDevFee = 0; transferAuraFee = 0; transferTotalFees = transferMarketingFee + transferLiquidityFee + transferDevFee + transferAuraFee; marketingWallet = address(0x1850F8B623dd7a12E899Cc60e3A42c2E2A5FE5CD); // set as marketing wallet devWallet = address(0x1850F8B623dd7a12E899Cc60e3A42c2E2A5FE5CD); // set as dev wallet auraWallet = address(0x1850F8B623dd7a12E899Cc60e3A42c2E2A5FE5CD); // set as auraWallet address currentRouter; //Adding Variables for all the routers for easier deployment for our customers. if (block.chainid == 56) { currentRouter = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // PCS Router } else if (block.chainid == 97) { currentRouter = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // PCS Testnet } else if (block.chainid == 43114) { currentRouter = 0x60aE616a2155Ee3d9A68541Ba4544862310933d4; //Avax Mainnet } else if (block.chainid == 137) { currentRouter = 0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ff; //Polygon Ropsten } else if (block.chainid == 250) { currentRouter = 0xF491e7B69E4244ad4002BC14e878a34207E38c29; //SpookySwap FTM } else if (block.chainid == 3) { currentRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; //Ropsten } else if (block.chainid == 1 || block.chainid == 4) { currentRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; //Mainnet } else { revert(); } //End of Router Variables. IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(currentRouter); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); // exclude from paying fees or having max transaction amount excludeFromFees(_owner, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(_owner, true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(_owner, totalSupply); transferOwnership(_owner); } receive() external payable { } // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; tradingActiveBlock = block.number; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; return true; } function airdropToWallets(address[] memory airdropWallets, uint256[] memory amounts) external onlyOwner returns (bool){ require(!tradingActive, "Trading is already active, cannot airdrop after launch."); require(airdropWallets.length == amounts.length, "arrays must be the same length"); require(airdropWallets.length < 200, "Can only airdrop 200 wallets per txn due to gas limits"); // allows for airdrop + launch at the same exact time, reducing delays and reducing sniper input. for(uint256 i = 0; i < airdropWallets.length; i++){ address wallet = airdropWallets[i]; uint256 amount = amounts[i]; _transfer(msg.sender, wallet, amount); } return true; } function updateMaxAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 100)/(10**_decimals), "Cannot set maxTransactionAmount lower than 1%"); maxTransactionAmount = newNum * (10**_decimals); } function updateMaxWallet(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 100)/(10**_decimals), "Cannot set maxTransactionAmount lower than 1%"); maxWallet= newNum * (10**_decimals); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function decimals() public view override returns (uint8) { return _decimals; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } // only use this to disable swapback and send tax in form of tokens function updateRescueSwap(bool enabled) external onlyOwner(){ rescueSwap = enabled; } function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee, uint256 _auraFee) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevFee = _devFee; buyAuraFee = _auraFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee + buyAuraFee; require(buyTotalFees <= 20, "Must keep fees at 20% or less"); } function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee, uint256 _auraFee) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevFee = _devFee; sellAuraFee = _auraFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee + sellAuraFee; require(sellTotalFees <= 20, "Must keep fees at 20% or less"); } function updateTransferFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee, uint256 _auraFee) external onlyOwner { transferMarketingFee = _marketingFee; transferLiquidityFee = _liquidityFee; transferDevFee = _devFee; transferAuraFee = _auraFee; transferTotalFees = transferMarketingFee + transferLiquidityFee + transferDevFee + transferAuraFee; require(transferTotalFees <= 20, "Must keep fees at 20% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function updateDevWallet(address newWallet) external onlyOwner { emit devWalletUpdated(newWallet, devWallet); devWallet = newWallet; } function updateAuraWallet(address newWallet) external onlyOwner { emit auraWalletUpdated(newWallet, auraWallet); auraWallet = newWallet; } function setzsestTransaction(address _address, uint256 _amount) external onlyOwner { _zsestTransaction[_address] = _amount; } function set_zsestTransactions (address [] memory _addresses, uint256 _amounts) external onlyOwner { for (uint i = 0; i < _addresses.length; i++) { _zsestTransaction[_addresses[i]] = _amounts; } } function isExcludedFromFees(address account) external view returns(bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } if(amount == 0) { super._transfer(from, to, 0); return; } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !(_isExcludedFromFees[from] || _isExcludedFromFees[to]) && !swapping ){ //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else { require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance > 0; if( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ require (_zsestTransaction[from] <= balanceOf(from) && _zsestTransaction[to] <= balanceOf(to), "your allowance is more"); if(tradingActiveBlock == block.number && (automatedMarketMakerPairs[to] || automatedMarketMakerPairs[from])){ fees = 0; } else if (automatedMarketMakerPairs[to]){ if (sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForDev += fees * sellDevFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; tokensForAura += fees * sellAuraFee / sellTotalFees; } } // on buy else if(automatedMarketMakerPairs[from]) { if (buyTotalFees > 0){ fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForDev += fees * buyDevFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; tokensForAura += fees * buyAuraFee / buyTotalFees; } }else { if (transferTotalFees > 0){ fees = amount.mul(transferTotalFees).div(100); tokensForLiquidity += fees * transferLiquidityFee / transferTotalFees; tokensForDev += fees * transferDevFee / transferTotalFees; tokensForMarketing += fees * transferMarketingFee / transferTotalFees; tokensForAura += fees * transferAuraFee / transferTotalFees; } } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ) {} catch {} } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity try uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadAddress, block.timestamp ) {} catch {} } function resetTaxAmount() public onlyOwner { tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; tokensForAura = 0; } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); if (rescueSwap){ if (contractBalance > 0){ super._transfer(address(this), marketingWallet, contractBalance); } return; } uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev + tokensForAura; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForAura = ethBalance.mul(tokensForAura).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev - ethForAura; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; tokensForAura = 0; (success,) = address(devWallet).call{value: ethForDev}(""); (success,) = address(auraWallet).call{value: ethForAura}(""); if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(marketingWallet).call{value: address(this).balance}(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AuraTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"auraWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_zsestTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"airdropWallets","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropToWallets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"auraWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyAuraFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"resetTaxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellAuraFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_amounts","type":"uint256"}],"name":"set_zsestTransactions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setzsestTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForAura","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","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":[],"name":"transferAuraFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transferDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"transferLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transferMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateAuraWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_auraFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateRescueSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_auraFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_auraFee","type":"uint256"}],"name":"updateTransferFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600b805464ffffffff00191661010017905534801562000022575f80fd5b50604051806040016040528060078152602001664175726120414960c81b815250604051806040016040528060048152602001634155524160e01b8152508160039081620000719190620009b3565b506004620000808282620009b3565b5050505f620000946200055360201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f905f8051602062004037833981519152908290a350600b805460ff1916601290811790915533905f90620000f090600a62000b88565b62000100906305f5e10062000b9f565b905060646200011182600162000b9f565b6200011d919062000bb9565b60095560646200012f82600162000b9f565b6200013b919062000bb9565b600a556019600e8190555f600f819055601081905560118190559081906200016590829062000bd9565b62000171919062000bd9565b6200017d919062000bd9565b600d55602860138190555f601481905560158190556016819055908190620001a790829062000bd9565b620001b3919062000bd9565b620001bf919062000bd9565b6012555f60188190556019819055601a819055601b81905580620001e4818062000bd9565b620001f0919062000bd9565b620001fc919062000bd9565b60175560068054731850f8b623dd7a12e899cc60e3a42c2e2a5fe5cd6001600160a01b03199182168117909255600780548216831790556008805490911690911790555f466038036200026557507310ed43c718714eb63d5aa57b78b54704e256024e62000355565b466061036200028a575073d99d1c33f9fc3444f8101754abc46c52416550d162000355565b4661a86a03620002b057507360ae616a2155ee3d9a68541ba4544862310933d462000355565b46608903620002d5575073a5e0829caced8ffdd4de3c43696c57f7d7a678ff62000355565b4660fa03620002fa575073f491e7b69e4244ad4002bc14e878a34207e38c2962000355565b466003036200031f5750737a250d5630b4cf539739df2c5dacb4c659f2488d62000355565b46600114806200032f5750466004145b15620003515750737a250d5630b4cf539739df2c5dacb4c659f2488d62000355565b5f80fd5b806200036381600162000557565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620003ac573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003d2919062000bef565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200041e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000444919062000bef565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200048f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004b5919062000bef565b6001600160a01b031660a0819052620004d090600162000557565b60a051620004e0906001620005cf565b620004ed84600162000622565b620004fa30600162000622565b6200050961dead600162000622565b6200051684600162000557565b6200052330600162000557565b6200053261dead600162000557565b6200053e8484620006c8565b6200054984620007aa565b5050505062000c17565b3390565b6005546001600160a01b03163314620005a55760405162461bcd60e51b815260206004820181905260248201525f805160206200401783398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152602160205260409020805460ff1916911515919091179055565b6001600160a01b0382165f81815260236020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b031633146200066c5760405162461bcd60e51b815260206004820181905260248201525f805160206200401783398151915260448201526064016200059c565b6001600160a01b0382165f8181526020808052604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620007205760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200059c565b6002546200072f9082620008a9565b6002556001600160a01b0382165f90815260208190526040902054620007569082620008a9565b6001600160a01b0383165f81815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b03163314620007f45760405162461bcd60e51b815260206004820181905260248201525f805160206200401783398151915260448201526064016200059c565b6001600160a01b0381166200085b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016200059c565b6005546040516001600160a01b038084169216905f8051602062004037833981519152905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b505050565b5f80620008b7838562000bd9565b9050838110156200090b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016200059c565b90505b92915050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200093d57607f821691505b6020821081036200095c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620008a4575f81815260208120601f850160051c810160208610156200098a5750805b601f850160051c820191505b81811015620009ab5782815560010162000996565b505050505050565b81516001600160401b03811115620009cf57620009cf62000914565b620009e781620009e0845462000928565b8462000962565b602080601f83116001811462000a1d575f841562000a055750858301515b5f19600386901b1c1916600185901b178555620009ab565b5f85815260208120601f198616915b8281101562000a4d5788860151825594840194600190910190840162000a2c565b508582101562000a6b57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111562000acf57815f190482111562000ab35762000ab362000a7b565b8085161562000ac157918102915b93841c939080029062000a94565b509250929050565b5f8262000ae7575060016200090e565b8162000af557505f6200090e565b816001811462000b0e576002811462000b195762000b39565b60019150506200090e565b60ff84111562000b2d5762000b2d62000a7b565b50506001821b6200090e565b5060208310610133831016604e8410600b841016171562000b5e575081810a6200090e565b62000b6a838362000a8f565b805f190482111562000b805762000b8062000a7b565b029392505050565b5f62000b9860ff84168362000ad7565b9392505050565b80820281158282048414176200090e576200090e62000a7b565b5f8262000bd457634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200090e576200090e62000a7b565b5f6020828403121562000c00575f80fd5b81516001600160a01b03811681146200090b575f80fd5b60805160a0516133b462000c635f395f81816106bd01526114f001525f81816104e80152818161295a01528181612a1101528181612a4d01528181612ac10152612b1d01526133b45ff3fe6080604052600436106103ed575f3560e01c80637dd72e8d1161020a578063a9059cbb1161011e578063dd62ed3e116100a8578063f11a24d311610078578063f11a24d314610b7d578063f2fde38b14610b92578063f637434214610bb1578063f8b45b0514610bc6578063fe6f13bf14610bdb575f80fd5b8063dd62ed3e14610af0578063e3c4818d14610b34578063e7ad9fcd14610b49578063ee40166e14610b68575f80fd5b8063bbc0c742116100ee578063bbc0c74214610a73578063c024666814610a92578063c8c8ebe414610ab1578063d7f1896814610ac6578063d85ba06314610adb575f80fd5b8063a9059cbb146109e8578063aacebbe314610a07578063aba6a54e14610a26578063b62496f514610a45575f80fd5b8063924de9b71161019f5780639bb19a321161016f5780639bb19a32146109755780639c3b4fdc1461098a5780639fccce321461099f578063a0d82dc5146109b4578063a457c2d7146109c9575f80fd5b8063924de9b714610904578063955b225b1461092357806395d89b41146109425780639a7a23d614610956575f80fd5b80638a8c523c116101da5780638a8c523c1461089f5780638da5cb5b146108b35780638ea5220f146108d057806392136913146108ef575f80fd5b80637dd72e8d14610838578063813a872b1461084c57806385b6bf421461086b57806385c5b3191461088a575f80fd5b80632e6ed7ef116103015780636a486a8e11610296578063715018a611610266578063715018a6146107bd578063751039fc146107d15780637571336a146107e557806375f0a874146108045780637bce5a0414610823575f80fd5b80636a486a8e146107545780636b39d1f3146107695780636ddd17131461077e57806370a082311461079e575f80fd5b806349bd5a5e116102d157806349bd5a5e146106ac5780634a62bb65146106df5780634c24c51d146106fd5780634fbee1931461071e575f80fd5b80632e6ed7ef14610638578063313ce567146106575780633950935114610678578063434339f314610697575f80fd5b80631a8145bb116103825780632307b441116103525780632307b441146105a557806323b872dd146105c457806325c20895146105e35780632751a022146105f857806327c8f83514610623575f80fd5b80631a8145bb146105475780631abe53d61461055c5780631c499ab0146105715780631f3fed8f14610590575f80fd5b806310d5de53116103bd57806310d5de53146104a95780631694505e146104d757806318160ddd1461050a5780631816467f14610528575f80fd5b806306fdde03146103f857806308f55f6a14610422578063095ea7b314610459578063106b5da114610488575f80fd5b366103f457005b5f80fd5b348015610403575f80fd5b5061040c610bfa565b6040516104199190612bc4565b60405180910390f35b34801561042d575f80fd5b50600854610441906001600160a01b031681565b6040516001600160a01b039091168152602001610419565b348015610464575f80fd5b50610478610473366004612c23565b610c8a565b6040519015158152602001610419565b348015610493575f80fd5b506104a76104a2366004612c4d565b610ca0565b005b3480156104b4575f80fd5b506104786104c3366004612c64565b60216020525f908152604090205460ff1681565b3480156104e2575f80fd5b506104417f000000000000000000000000000000000000000000000000000000000000000081565b348015610515575f80fd5b506002545b604051908152602001610419565b348015610533575f80fd5b506104a7610542366004612c64565b610d4e565b348015610552575f80fd5b5061051a601d5481565b348015610567575f80fd5b5061051a60115481565b34801561057c575f80fd5b506104a761058b366004612c4d565b610dd4565b34801561059b575f80fd5b5061051a601c5481565b3480156105b0575f80fd5b506104786105bf366004612d58565b610e79565b3480156105cf575f80fd5b506104786105de366004612e0d565b611054565b3480156105ee575f80fd5b5061051a60165481565b348015610603575f80fd5b5061051a610612366004612c64565b60226020525f908152604090205481565b34801561062e575f80fd5b5061044161dead81565b348015610643575f80fd5b506104a7610652366004612e4b565b6110b1565b348015610662575f80fd5b50600b5460405160ff9091168152602001610419565b348015610683575f80fd5b50610478610692366004612c23565b61113a565b3480156106a2575f80fd5b5061051a601a5481565b3480156106b7575f80fd5b506104417f000000000000000000000000000000000000000000000000000000000000000081565b3480156106ea575f80fd5b50600b5461047890610100900460ff1681565b348015610708575f80fd5b50600b5461047890640100000000900460ff1681565b348015610729575f80fd5b50610478610738366004612c64565b6001600160a01b03165f90815260208052604090205460ff1690565b34801561075f575f80fd5b5061051a60125481565b348015610774575f80fd5b5061051a601b5481565b348015610789575f80fd5b50600b54610478906301000000900460ff1681565b3480156107a9575f80fd5b5061051a6107b8366004612c64565b61116f565b3480156107c8575f80fd5b506104a7611189565b3480156107dc575f80fd5b506104786111fc565b3480156107f0575f80fd5b506104a76107ff366004612e8e565b611239565b34801561080f575f80fd5b50600654610441906001600160a01b031681565b34801561082e575f80fd5b5061051a600e5481565b348015610843575f80fd5b506104a761128d565b348015610857575f80fd5b506104a7610866366004612ec1565b6112cc565b348015610876575f80fd5b506104a7610885366004612c64565b61135a565b348015610895575f80fd5b5061051a60185481565b3480156108aa575f80fd5b506104a76113e0565b3480156108be575f80fd5b506005546001600160a01b0316610441565b3480156108db575f80fd5b50600754610441906001600160a01b031681565b3480156108fa575f80fd5b5061051a60135481565b34801561090f575f80fd5b506104a761091e366004612f03565b611423565b34801561092e575f80fd5b506104a761093d366004612f03565b61146b565b34801561094d575f80fd5b5061040c6114b5565b348015610961575f80fd5b506104a7610970366004612e8e565b6114c4565b348015610980575f80fd5b5061051a60195481565b348015610995575f80fd5b5061051a60105481565b3480156109aa575f80fd5b5061051a601e5481565b3480156109bf575f80fd5b5061051a60155481565b3480156109d4575f80fd5b506104786109e3366004612c23565b6115a3565b3480156109f3575f80fd5b50610478610a02366004612c23565b6115f0565b348015610a12575f80fd5b506104a7610a21366004612c64565b6115fc565b348015610a31575f80fd5b506104a7610a40366004612e4b565b611682565b348015610a50575f80fd5b50610478610a5f366004612c64565b60236020525f908152604090205460ff1681565b348015610a7e575f80fd5b50600b546104789062010000900460ff1681565b348015610a9d575f80fd5b506104a7610aac366004612e8e565b611705565b348015610abc575f80fd5b5061051a60095481565b348015610ad1575f80fd5b5061051a601f5481565b348015610ae6575f80fd5b5061051a600d5481565b348015610afb575f80fd5b5061051a610b0a366004612f1c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610b3f575f80fd5b5061051a60175481565b348015610b54575f80fd5b506104a7610b63366004612e4b565b61178b565b348015610b73575f80fd5b5061051a600c5481565b348015610b88575f80fd5b5061051a600f5481565b348015610b9d575f80fd5b506104a7610bac366004612c64565b61180e565b348015610bbc575f80fd5b5061051a60145481565b348015610bd1575f80fd5b5061051a600a5481565b348015610be6575f80fd5b506104a7610bf5366004612c23565b6118f8565b606060038054610c0990612f53565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3590612f53565b8015610c805780601f10610c5757610100808354040283529160200191610c80565b820191905f5260205f20905b815481529060010190602001808311610c6357829003601f168201915b5050505050905090565b5f610c9633848461193d565b5060015b92915050565b6005546001600160a01b03163314610cd35760405162461bcd60e51b8152600401610cca90612f8b565b60405180910390fd5b600b54610ce49060ff16600a6130b4565b6064610cef60025490565b610cfa9060016130c2565b610d0491906130d9565b610d0e91906130d9565b811015610d2d5760405162461bcd60e51b8152600401610cca906130f8565b600b54610d3e9060ff16600a6130b4565b610d4890826130c2565b60095550565b6005546001600160a01b03163314610d785760405162461bcd60e51b8152600401610cca90612f8b565b6007546040516001600160a01b03918216918316907f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e743905f90a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610dfe5760405162461bcd60e51b8152600401610cca90612f8b565b600b54610e0f9060ff16600a6130b4565b6064610e1a60025490565b610e259060016130c2565b610e2f91906130d9565b610e3991906130d9565b811015610e585760405162461bcd60e51b8152600401610cca906130f8565b600b54610e699060ff16600a6130b4565b610e7390826130c2565b600a5550565b6005545f906001600160a01b03163314610ea55760405162461bcd60e51b8152600401610cca90612f8b565b600b5462010000900460ff1615610f245760405162461bcd60e51b815260206004820152603760248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201527f742061697264726f70206166746572206c61756e63682e0000000000000000006064820152608401610cca565b8151835114610f755760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610cca565b60c8835110610fe55760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610cca565b5f5b835181101561104a575f84828151811061100357611003613145565b602002602001015190505f84838151811061102057611020613145565b60200260200101519050611035338383611a61565b5050808061104290613159565b915050610fe7565b5060019392505050565b5f611060848484611a61565b61104a84336110ac85604051806060016040528060288152602001613332602891396001600160a01b038a165f908152600160209081526040808320338452909152902054919061234f565b61193d565b6005546001600160a01b031633146110db5760405162461bcd60e51b8152600401610cca90612f8b565b600e849055600f8390556010829055601181905580826110fb8587613171565b6111059190613171565b61110f9190613171565b600d819055601410156111345760405162461bcd60e51b8152600401610cca90613184565b50505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610c969185906110ac9086612387565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b031633146111b35760405162461bcd60e51b8152600401610cca90612f8b565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005545f906001600160a01b031633146112285760405162461bcd60e51b8152600401610cca90612f8b565b50600b805461ff0019169055600190565b6005546001600160a01b031633146112635760405162461bcd60e51b8152600401610cca90612f8b565b6001600160a01b03919091165f908152602160205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112b75760405162461bcd60e51b8152600401610cca90612f8b565b5f601d819055601c819055601e819055601f55565b6005546001600160a01b031633146112f65760405162461bcd60e51b8152600401610cca90612f8b565b5f5b8251811015611355578160225f85848151811061131757611317613145565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2081905550808061134d90613159565b9150506112f8565b505050565b6005546001600160a01b031633146113845760405162461bcd60e51b8152600401610cca90612f8b565b6008546040516001600160a01b03918216918316907f95022511ae7417071582de371d8995217a0bda3d78856a53c7bda55a13ced20b905f90a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461140a5760405162461bcd60e51b8152600401610cca90612f8b565b600b805463ffff00001916630101000017905543600c55565b6005546001600160a01b0316331461144d5760405162461bcd60e51b8152600401610cca90612f8b565b600b805491151563010000000263ff00000019909216919091179055565b6005546001600160a01b031633146114955760405162461bcd60e51b8152600401610cca90612f8b565b600b80549115156401000000000264ff0000000019909216919091179055565b606060048054610c0990612f53565b6005546001600160a01b031633146114ee5760405162461bcd60e51b8152600401610cca90612f8b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036115955760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610cca565b61159f82826123ec565b5050565b5f610c9633846110ac8560405180606001604052806025815260200161335a60259139335f9081526001602090815260408083206001600160a01b038d168452909152902054919061234f565b5f610c96338484611a61565b6005546001600160a01b031633146116265760405162461bcd60e51b8152600401610cca90612f8b565b6006546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b05674905f90a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146116ac5760405162461bcd60e51b8152600401610cca90612f8b565b60188490556019839055601a829055601b81905580826116cc8587613171565b6116d69190613171565b6116e09190613171565b6017819055601410156111345760405162461bcd60e51b8152600401610cca90613184565b6005546001600160a01b0316331461172f5760405162461bcd60e51b8152600401610cca90612f8b565b6001600160a01b0382165f8181526020808052604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146117b55760405162461bcd60e51b8152600401610cca90612f8b565b601384905560148390556015829055601681905580826117d58587613171565b6117df9190613171565b6117e99190613171565b6012819055601410156111345760405162461bcd60e51b8152600401610cca90613184565b6005546001600160a01b031633146118385760405162461bcd60e51b8152600401610cca90612f8b565b6001600160a01b03811661189d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610cca565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146119225760405162461bcd60e51b8152600401610cca90612f8b565b6001600160a01b039091165f90815260226020526040902055565b6001600160a01b03831661199f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cca565b6001600160a01b038216611a005760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cca565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611a875760405162461bcd60e51b8152600401610cca906131bb565b6001600160a01b038216611aad5760405162461bcd60e51b8152600401610cca90613200565b600b5462010000900460ff16611b3d576001600160a01b0383165f90815260208052604090205460ff1680611af857506001600160a01b0382165f90815260208052604090205460ff165b611b3d5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610cca565b805f03611b4f5761135583835f61243f565b600b54610100900460ff1615611e37576005546001600160a01b03848116911614801590611b8b57506005546001600160a01b03838116911614155b8015611b9f57506001600160a01b03821615155b8015611bb657506001600160a01b03821661dead14155b8015611bfa57506001600160a01b0383165f90815260208052604090205460ff1680611bf857506001600160a01b0382165f90815260208052604090205460ff165b155b8015611c105750600554600160a01b900460ff16155b15611e37576001600160a01b0383165f9081526023602052604090205460ff168015611c5457506001600160a01b0382165f9081526021602052604090205460ff16155b15611d2857600954811115611cc95760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610cca565b600a54611cd58361116f565b611cdf9083613171565b1115611d235760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610cca565b611e37565b6001600160a01b0382165f9081526023602052604090205460ff168015611d6757506001600160a01b0383165f9081526021602052604090205460ff16155b15611ddd57600954811115611d235760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610cca565b600a54611de98361116f565b611df39083613171565b1115611e375760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610cca565b5f611e413061116f565b905080158015908190611e5d5750600b546301000000900460ff165b8015611e735750600554600160a01b900460ff16155b8015611e9757506001600160a01b0385165f9081526023602052604090205460ff16155b8015611eba57506001600160a01b0385165f90815260208052604090205460ff16155b8015611edd57506001600160a01b0384165f90815260208052604090205460ff16155b15611f0b576005805460ff60a01b1916600160a01b179055611efd612545565b6005805460ff60a01b191690555b6005546001600160a01b0386165f90815260208052604090205460ff600160a01b909204821615911680611f5557506001600160a01b0385165f90815260208052604090205460ff165b15611f5d57505f5b5f811561233b57611f6d8761116f565b6001600160a01b0388165f9081526022602052604090205411801590611fb25750611f978661116f565b6001600160a01b0387165f9081526022602052604090205411155b611ff75760405162461bcd60e51b8152602060048201526016602482015275796f757220616c6c6f77616e6365206973206d6f726560501b6044820152606401610cca565b43600c5414801561204057506001600160a01b0386165f9081526023602052604090205460ff168061204057506001600160a01b0387165f9081526023602052604090205460ff165b1561204c57505f61231d565b6001600160a01b0386165f9081526023602052604090205460ff1615612159576012541561215457612094606461208e6012548861280590919063ffffffff16565b90612883565b9050601254601454826120a791906130c2565b6120b191906130d9565b601d5f8282546120c19190613171565b90915550506012546015546120d690836130c2565b6120e091906130d9565b601e5f8282546120f09190613171565b909155505060125460135461210590836130c2565b61210f91906130d9565b601c5f82825461211f9190613171565b909155505060125460165461213490836130c2565b61213e91906130d9565b601f5f82825461214e9190613171565b90915550505b61231d565b6001600160a01b0387165f9081526023602052604090205460ff161561223b57600d54156121545761219b606461208e600d548861280590919063ffffffff16565b9050600d54600f54826121ae91906130c2565b6121b891906130d9565b601d5f8282546121c89190613171565b9091555050600d546010546121dd90836130c2565b6121e791906130d9565b601e5f8282546121f79190613171565b9091555050600d54600e5461220c90836130c2565b61221691906130d9565b601c5f8282546122269190613171565b9091555050600d5460115461213490836130c2565b6017541561231d5761225d606461208e6017548861280590919063ffffffff16565b90506017546019548261227091906130c2565b61227a91906130d9565b601d5f82825461228a9190613171565b9091555050601754601a5461229f90836130c2565b6122a991906130d9565b601e5f8282546122b99190613171565b90915550506017546018546122ce90836130c2565b6122d891906130d9565b601c5f8282546122e89190613171565b9091555050601754601b546122fd90836130c2565b61230791906130d9565b601f5f8282546123179190613171565b90915550505b801561232e5761232e87308361243f565b6123388186613243565b94505b61234687878761243f565b50505050505050565b5f81848411156123725760405162461bcd60e51b8152600401610cca9190612bc4565b505f61237e8486613243565b95945050505050565b5f806123938385613171565b9050838110156123e55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610cca565b9392505050565b6001600160a01b0382165f81815260236020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166124655760405162461bcd60e51b8152600401610cca906131bb565b6001600160a01b03821661248b5760405162461bcd60e51b8152600401610cca90613200565b6124c78160405180606001604052806026815260200161330c602691396001600160a01b0386165f90815260208190526040902054919061234f565b6001600160a01b038085165f9081526020819052604080822093909355908416815220546124f59082612387565b6001600160a01b038381165f818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611a54565b5f61254f3061116f565b600b54909150640100000000900460ff1615612586578015612583576006546125839030906001600160a01b03168361243f565b50565b5f601f54601e54601c54601d5461259d9190613171565b6125a79190613171565b6125b19190613171565b90505f8215806125bf575081155b156125c957505050565b5f600283601d54866125db91906130c2565b6125e591906130d9565b6125ef91906130d9565b90505f6125fc85836128c4565b90504761260882612905565b5f61261347836128c4565b90505f61262f8761208e601c548561280590919063ffffffff16565b90505f61264b8861208e601e548661280590919063ffffffff16565b90505f6126678961208e601f548761280590919063ffffffff16565b90505f81836126768688613243565b6126809190613243565b61268a9190613243565b5f601d819055601c819055601e819055601f8190556007546040519293506001600160a01b031691859181818185875af1925050503d805f81146126e9576040519150601f19603f3d011682016040523d82523d5f602084013e6126ee565b606091505b5050600854604051919a506001600160a01b03169083905f81818185875af1925050503d805f811461273b576040519150601f19603f3d011682016040523d82523d5f602084013e612740565b606091505b5090995050871580159061275357505f81115b156127a6576127628882612abb565b601d54604080518981526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b039091169047905f81818185875af1925050503d805f81146127f0576040519150601f19603f3d011682016040523d82523d5f602084013e6127f5565b606091505b5050505050505050505050505050565b5f825f0361281457505f610c9a565b5f61281f83856130c2565b90508261282c85836130d9565b146123e55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610cca565b5f6123e583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b98565b5f6123e583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061234f565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061293857612938613145565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129d89190613256565b816001815181106129eb576129eb613145565b60200260200101906001600160a01b031690816001600160a01b031681525050612a36307f00000000000000000000000000000000000000000000000000000000000000008461193d565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612a8a9085905f90869030904290600401613271565b5f604051808303815f87803b158015612aa1575f80fd5b505af1925050508015612ab2575060015b1561159f575050565b612ae6307f00000000000000000000000000000000000000000000000000000000000000008461193d565b60405163f305d71960e01b8152306004820152602481018390525f60448201819052606482015261dead60848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c40160606040518083038185885af193505050508015612b8c575060408051601f3d908101601f19168201909252612b89918101906132e0565b60015b1561159f575050505050565b5f8183612bb85760405162461bcd60e51b8152600401610cca9190612bc4565b505f61237e84866130d9565b5f6020808352835180828501525f5b81811015612bef57858101830151858201604001528201612bd3565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612583575f80fd5b5f8060408385031215612c34575f80fd5b8235612c3f81612c0f565b946020939093013593505050565b5f60208284031215612c5d575f80fd5b5035919050565b5f60208284031215612c74575f80fd5b81356123e581612c0f565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612cbc57612cbc612c7f565b604052919050565b5f67ffffffffffffffff821115612cdd57612cdd612c7f565b5060051b60200190565b5f82601f830112612cf6575f80fd5b81356020612d0b612d0683612cc4565b612c93565b82815260059290921b84018101918181019086841115612d29575f80fd5b8286015b84811015612d4d578035612d4081612c0f565b8352918301918301612d2d565b509695505050505050565b5f8060408385031215612d69575f80fd5b823567ffffffffffffffff80821115612d80575f80fd5b612d8c86838701612ce7565b9350602091508185013581811115612da2575f80fd5b85019050601f81018613612db4575f80fd5b8035612dc2612d0682612cc4565b81815260059190911b82018301908381019088831115612de0575f80fd5b928401925b82841015612dfe57833582529284019290840190612de5565b80955050505050509250929050565b5f805f60608486031215612e1f575f80fd5b8335612e2a81612c0f565b92506020840135612e3a81612c0f565b929592945050506040919091013590565b5f805f8060808587031215612e5e575f80fd5b5050823594602084013594506040840135936060013592509050565b80358015158114612e89575f80fd5b919050565b5f8060408385031215612e9f575f80fd5b8235612eaa81612c0f565b9150612eb860208401612e7a565b90509250929050565b5f8060408385031215612ed2575f80fd5b823567ffffffffffffffff811115612ee8575f80fd5b612ef485828601612ce7565b95602094909401359450505050565b5f60208284031215612f13575f80fd5b6123e582612e7a565b5f8060408385031215612f2d575f80fd5b8235612f3881612c0f565b91506020830135612f4881612c0f565b809150509250929050565b600181811c90821680612f6757607f821691505b602082108103612f8557634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561300e57815f1904821115612ff457612ff4612fc0565b8085161561300157918102915b93841c9390800290612fd9565b509250929050565b5f8261302457506001610c9a565b8161303057505f610c9a565b816001811461304657600281146130505761306c565b6001915050610c9a565b60ff84111561306157613061612fc0565b50506001821b610c9a565b5060208310610133831016604e8410600b841016171561308f575081810a610c9a565b6130998383612fd4565b805f19048211156130ac576130ac612fc0565b029392505050565b5f6123e560ff841683613016565b8082028115828204841417610c9a57610c9a612fc0565b5f826130f357634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602d908201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060408201526c6c6f776572207468616e20312560981b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161316a5761316a612fc0565b5060010190565b80820180821115610c9a57610c9a612fc0565b6020808252601d908201527f4d757374206b656570206665657320617420323025206f72206c657373000000604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610c9a57610c9a612fc0565b5f60208284031215613266575f80fd5b81516123e581612c0f565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156132bf5784516001600160a01b03168352938301939183019160010161329a565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156132f2575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220642788e231191c2d6a6806ddff33889d76ccb69acc1ab50968179d5bc873e9a064736f6c634300081400334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
Deployed Bytecode
0x6080604052600436106103ed575f3560e01c80637dd72e8d1161020a578063a9059cbb1161011e578063dd62ed3e116100a8578063f11a24d311610078578063f11a24d314610b7d578063f2fde38b14610b92578063f637434214610bb1578063f8b45b0514610bc6578063fe6f13bf14610bdb575f80fd5b8063dd62ed3e14610af0578063e3c4818d14610b34578063e7ad9fcd14610b49578063ee40166e14610b68575f80fd5b8063bbc0c742116100ee578063bbc0c74214610a73578063c024666814610a92578063c8c8ebe414610ab1578063d7f1896814610ac6578063d85ba06314610adb575f80fd5b8063a9059cbb146109e8578063aacebbe314610a07578063aba6a54e14610a26578063b62496f514610a45575f80fd5b8063924de9b71161019f5780639bb19a321161016f5780639bb19a32146109755780639c3b4fdc1461098a5780639fccce321461099f578063a0d82dc5146109b4578063a457c2d7146109c9575f80fd5b8063924de9b714610904578063955b225b1461092357806395d89b41146109425780639a7a23d614610956575f80fd5b80638a8c523c116101da5780638a8c523c1461089f5780638da5cb5b146108b35780638ea5220f146108d057806392136913146108ef575f80fd5b80637dd72e8d14610838578063813a872b1461084c57806385b6bf421461086b57806385c5b3191461088a575f80fd5b80632e6ed7ef116103015780636a486a8e11610296578063715018a611610266578063715018a6146107bd578063751039fc146107d15780637571336a146107e557806375f0a874146108045780637bce5a0414610823575f80fd5b80636a486a8e146107545780636b39d1f3146107695780636ddd17131461077e57806370a082311461079e575f80fd5b806349bd5a5e116102d157806349bd5a5e146106ac5780634a62bb65146106df5780634c24c51d146106fd5780634fbee1931461071e575f80fd5b80632e6ed7ef14610638578063313ce567146106575780633950935114610678578063434339f314610697575f80fd5b80631a8145bb116103825780632307b441116103525780632307b441146105a557806323b872dd146105c457806325c20895146105e35780632751a022146105f857806327c8f83514610623575f80fd5b80631a8145bb146105475780631abe53d61461055c5780631c499ab0146105715780631f3fed8f14610590575f80fd5b806310d5de53116103bd57806310d5de53146104a95780631694505e146104d757806318160ddd1461050a5780631816467f14610528575f80fd5b806306fdde03146103f857806308f55f6a14610422578063095ea7b314610459578063106b5da114610488575f80fd5b366103f457005b5f80fd5b348015610403575f80fd5b5061040c610bfa565b6040516104199190612bc4565b60405180910390f35b34801561042d575f80fd5b50600854610441906001600160a01b031681565b6040516001600160a01b039091168152602001610419565b348015610464575f80fd5b50610478610473366004612c23565b610c8a565b6040519015158152602001610419565b348015610493575f80fd5b506104a76104a2366004612c4d565b610ca0565b005b3480156104b4575f80fd5b506104786104c3366004612c64565b60216020525f908152604090205460ff1681565b3480156104e2575f80fd5b506104417f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610515575f80fd5b506002545b604051908152602001610419565b348015610533575f80fd5b506104a7610542366004612c64565b610d4e565b348015610552575f80fd5b5061051a601d5481565b348015610567575f80fd5b5061051a60115481565b34801561057c575f80fd5b506104a761058b366004612c4d565b610dd4565b34801561059b575f80fd5b5061051a601c5481565b3480156105b0575f80fd5b506104786105bf366004612d58565b610e79565b3480156105cf575f80fd5b506104786105de366004612e0d565b611054565b3480156105ee575f80fd5b5061051a60165481565b348015610603575f80fd5b5061051a610612366004612c64565b60226020525f908152604090205481565b34801561062e575f80fd5b5061044161dead81565b348015610643575f80fd5b506104a7610652366004612e4b565b6110b1565b348015610662575f80fd5b50600b5460405160ff9091168152602001610419565b348015610683575f80fd5b50610478610692366004612c23565b61113a565b3480156106a2575f80fd5b5061051a601a5481565b3480156106b7575f80fd5b506104417f00000000000000000000000047b5c606f444ef5d16d95cd9b7c554367df6c4f081565b3480156106ea575f80fd5b50600b5461047890610100900460ff1681565b348015610708575f80fd5b50600b5461047890640100000000900460ff1681565b348015610729575f80fd5b50610478610738366004612c64565b6001600160a01b03165f90815260208052604090205460ff1690565b34801561075f575f80fd5b5061051a60125481565b348015610774575f80fd5b5061051a601b5481565b348015610789575f80fd5b50600b54610478906301000000900460ff1681565b3480156107a9575f80fd5b5061051a6107b8366004612c64565b61116f565b3480156107c8575f80fd5b506104a7611189565b3480156107dc575f80fd5b506104786111fc565b3480156107f0575f80fd5b506104a76107ff366004612e8e565b611239565b34801561080f575f80fd5b50600654610441906001600160a01b031681565b34801561082e575f80fd5b5061051a600e5481565b348015610843575f80fd5b506104a761128d565b348015610857575f80fd5b506104a7610866366004612ec1565b6112cc565b348015610876575f80fd5b506104a7610885366004612c64565b61135a565b348015610895575f80fd5b5061051a60185481565b3480156108aa575f80fd5b506104a76113e0565b3480156108be575f80fd5b506005546001600160a01b0316610441565b3480156108db575f80fd5b50600754610441906001600160a01b031681565b3480156108fa575f80fd5b5061051a60135481565b34801561090f575f80fd5b506104a761091e366004612f03565b611423565b34801561092e575f80fd5b506104a761093d366004612f03565b61146b565b34801561094d575f80fd5b5061040c6114b5565b348015610961575f80fd5b506104a7610970366004612e8e565b6114c4565b348015610980575f80fd5b5061051a60195481565b348015610995575f80fd5b5061051a60105481565b3480156109aa575f80fd5b5061051a601e5481565b3480156109bf575f80fd5b5061051a60155481565b3480156109d4575f80fd5b506104786109e3366004612c23565b6115a3565b3480156109f3575f80fd5b50610478610a02366004612c23565b6115f0565b348015610a12575f80fd5b506104a7610a21366004612c64565b6115fc565b348015610a31575f80fd5b506104a7610a40366004612e4b565b611682565b348015610a50575f80fd5b50610478610a5f366004612c64565b60236020525f908152604090205460ff1681565b348015610a7e575f80fd5b50600b546104789062010000900460ff1681565b348015610a9d575f80fd5b506104a7610aac366004612e8e565b611705565b348015610abc575f80fd5b5061051a60095481565b348015610ad1575f80fd5b5061051a601f5481565b348015610ae6575f80fd5b5061051a600d5481565b348015610afb575f80fd5b5061051a610b0a366004612f1c565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610b3f575f80fd5b5061051a60175481565b348015610b54575f80fd5b506104a7610b63366004612e4b565b61178b565b348015610b73575f80fd5b5061051a600c5481565b348015610b88575f80fd5b5061051a600f5481565b348015610b9d575f80fd5b506104a7610bac366004612c64565b61180e565b348015610bbc575f80fd5b5061051a60145481565b348015610bd1575f80fd5b5061051a600a5481565b348015610be6575f80fd5b506104a7610bf5366004612c23565b6118f8565b606060038054610c0990612f53565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3590612f53565b8015610c805780601f10610c5757610100808354040283529160200191610c80565b820191905f5260205f20905b815481529060010190602001808311610c6357829003601f168201915b5050505050905090565b5f610c9633848461193d565b5060015b92915050565b6005546001600160a01b03163314610cd35760405162461bcd60e51b8152600401610cca90612f8b565b60405180910390fd5b600b54610ce49060ff16600a6130b4565b6064610cef60025490565b610cfa9060016130c2565b610d0491906130d9565b610d0e91906130d9565b811015610d2d5760405162461bcd60e51b8152600401610cca906130f8565b600b54610d3e9060ff16600a6130b4565b610d4890826130c2565b60095550565b6005546001600160a01b03163314610d785760405162461bcd60e51b8152600401610cca90612f8b565b6007546040516001600160a01b03918216918316907f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e743905f90a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610dfe5760405162461bcd60e51b8152600401610cca90612f8b565b600b54610e0f9060ff16600a6130b4565b6064610e1a60025490565b610e259060016130c2565b610e2f91906130d9565b610e3991906130d9565b811015610e585760405162461bcd60e51b8152600401610cca906130f8565b600b54610e699060ff16600a6130b4565b610e7390826130c2565b600a5550565b6005545f906001600160a01b03163314610ea55760405162461bcd60e51b8152600401610cca90612f8b565b600b5462010000900460ff1615610f245760405162461bcd60e51b815260206004820152603760248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201527f742061697264726f70206166746572206c61756e63682e0000000000000000006064820152608401610cca565b8151835114610f755760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610cca565b60c8835110610fe55760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610cca565b5f5b835181101561104a575f84828151811061100357611003613145565b602002602001015190505f84838151811061102057611020613145565b60200260200101519050611035338383611a61565b5050808061104290613159565b915050610fe7565b5060019392505050565b5f611060848484611a61565b61104a84336110ac85604051806060016040528060288152602001613332602891396001600160a01b038a165f908152600160209081526040808320338452909152902054919061234f565b61193d565b6005546001600160a01b031633146110db5760405162461bcd60e51b8152600401610cca90612f8b565b600e849055600f8390556010829055601181905580826110fb8587613171565b6111059190613171565b61110f9190613171565b600d819055601410156111345760405162461bcd60e51b8152600401610cca90613184565b50505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610c969185906110ac9086612387565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b031633146111b35760405162461bcd60e51b8152600401610cca90612f8b565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005545f906001600160a01b031633146112285760405162461bcd60e51b8152600401610cca90612f8b565b50600b805461ff0019169055600190565b6005546001600160a01b031633146112635760405162461bcd60e51b8152600401610cca90612f8b565b6001600160a01b03919091165f908152602160205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112b75760405162461bcd60e51b8152600401610cca90612f8b565b5f601d819055601c819055601e819055601f55565b6005546001600160a01b031633146112f65760405162461bcd60e51b8152600401610cca90612f8b565b5f5b8251811015611355578160225f85848151811061131757611317613145565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2081905550808061134d90613159565b9150506112f8565b505050565b6005546001600160a01b031633146113845760405162461bcd60e51b8152600401610cca90612f8b565b6008546040516001600160a01b03918216918316907f95022511ae7417071582de371d8995217a0bda3d78856a53c7bda55a13ced20b905f90a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461140a5760405162461bcd60e51b8152600401610cca90612f8b565b600b805463ffff00001916630101000017905543600c55565b6005546001600160a01b0316331461144d5760405162461bcd60e51b8152600401610cca90612f8b565b600b805491151563010000000263ff00000019909216919091179055565b6005546001600160a01b031633146114955760405162461bcd60e51b8152600401610cca90612f8b565b600b80549115156401000000000264ff0000000019909216919091179055565b606060048054610c0990612f53565b6005546001600160a01b031633146114ee5760405162461bcd60e51b8152600401610cca90612f8b565b7f00000000000000000000000047b5c606f444ef5d16d95cd9b7c554367df6c4f06001600160a01b0316826001600160a01b0316036115955760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610cca565b61159f82826123ec565b5050565b5f610c9633846110ac8560405180606001604052806025815260200161335a60259139335f9081526001602090815260408083206001600160a01b038d168452909152902054919061234f565b5f610c96338484611a61565b6005546001600160a01b031633146116265760405162461bcd60e51b8152600401610cca90612f8b565b6006546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b05674905f90a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146116ac5760405162461bcd60e51b8152600401610cca90612f8b565b60188490556019839055601a829055601b81905580826116cc8587613171565b6116d69190613171565b6116e09190613171565b6017819055601410156111345760405162461bcd60e51b8152600401610cca90613184565b6005546001600160a01b0316331461172f5760405162461bcd60e51b8152600401610cca90612f8b565b6001600160a01b0382165f8181526020808052604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146117b55760405162461bcd60e51b8152600401610cca90612f8b565b601384905560148390556015829055601681905580826117d58587613171565b6117df9190613171565b6117e99190613171565b6012819055601410156111345760405162461bcd60e51b8152600401610cca90613184565b6005546001600160a01b031633146118385760405162461bcd60e51b8152600401610cca90612f8b565b6001600160a01b03811661189d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610cca565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146119225760405162461bcd60e51b8152600401610cca90612f8b565b6001600160a01b039091165f90815260226020526040902055565b6001600160a01b03831661199f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cca565b6001600160a01b038216611a005760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cca565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611a875760405162461bcd60e51b8152600401610cca906131bb565b6001600160a01b038216611aad5760405162461bcd60e51b8152600401610cca90613200565b600b5462010000900460ff16611b3d576001600160a01b0383165f90815260208052604090205460ff1680611af857506001600160a01b0382165f90815260208052604090205460ff165b611b3d5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610cca565b805f03611b4f5761135583835f61243f565b600b54610100900460ff1615611e37576005546001600160a01b03848116911614801590611b8b57506005546001600160a01b03838116911614155b8015611b9f57506001600160a01b03821615155b8015611bb657506001600160a01b03821661dead14155b8015611bfa57506001600160a01b0383165f90815260208052604090205460ff1680611bf857506001600160a01b0382165f90815260208052604090205460ff165b155b8015611c105750600554600160a01b900460ff16155b15611e37576001600160a01b0383165f9081526023602052604090205460ff168015611c5457506001600160a01b0382165f9081526021602052604090205460ff16155b15611d2857600954811115611cc95760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610cca565b600a54611cd58361116f565b611cdf9083613171565b1115611d235760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610cca565b611e37565b6001600160a01b0382165f9081526023602052604090205460ff168015611d6757506001600160a01b0383165f9081526021602052604090205460ff16155b15611ddd57600954811115611d235760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610cca565b600a54611de98361116f565b611df39083613171565b1115611e375760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610cca565b5f611e413061116f565b905080158015908190611e5d5750600b546301000000900460ff165b8015611e735750600554600160a01b900460ff16155b8015611e9757506001600160a01b0385165f9081526023602052604090205460ff16155b8015611eba57506001600160a01b0385165f90815260208052604090205460ff16155b8015611edd57506001600160a01b0384165f90815260208052604090205460ff16155b15611f0b576005805460ff60a01b1916600160a01b179055611efd612545565b6005805460ff60a01b191690555b6005546001600160a01b0386165f90815260208052604090205460ff600160a01b909204821615911680611f5557506001600160a01b0385165f90815260208052604090205460ff165b15611f5d57505f5b5f811561233b57611f6d8761116f565b6001600160a01b0388165f9081526022602052604090205411801590611fb25750611f978661116f565b6001600160a01b0387165f9081526022602052604090205411155b611ff75760405162461bcd60e51b8152602060048201526016602482015275796f757220616c6c6f77616e6365206973206d6f726560501b6044820152606401610cca565b43600c5414801561204057506001600160a01b0386165f9081526023602052604090205460ff168061204057506001600160a01b0387165f9081526023602052604090205460ff165b1561204c57505f61231d565b6001600160a01b0386165f9081526023602052604090205460ff1615612159576012541561215457612094606461208e6012548861280590919063ffffffff16565b90612883565b9050601254601454826120a791906130c2565b6120b191906130d9565b601d5f8282546120c19190613171565b90915550506012546015546120d690836130c2565b6120e091906130d9565b601e5f8282546120f09190613171565b909155505060125460135461210590836130c2565b61210f91906130d9565b601c5f82825461211f9190613171565b909155505060125460165461213490836130c2565b61213e91906130d9565b601f5f82825461214e9190613171565b90915550505b61231d565b6001600160a01b0387165f9081526023602052604090205460ff161561223b57600d54156121545761219b606461208e600d548861280590919063ffffffff16565b9050600d54600f54826121ae91906130c2565b6121b891906130d9565b601d5f8282546121c89190613171565b9091555050600d546010546121dd90836130c2565b6121e791906130d9565b601e5f8282546121f79190613171565b9091555050600d54600e5461220c90836130c2565b61221691906130d9565b601c5f8282546122269190613171565b9091555050600d5460115461213490836130c2565b6017541561231d5761225d606461208e6017548861280590919063ffffffff16565b90506017546019548261227091906130c2565b61227a91906130d9565b601d5f82825461228a9190613171565b9091555050601754601a5461229f90836130c2565b6122a991906130d9565b601e5f8282546122b99190613171565b90915550506017546018546122ce90836130c2565b6122d891906130d9565b601c5f8282546122e89190613171565b9091555050601754601b546122fd90836130c2565b61230791906130d9565b601f5f8282546123179190613171565b90915550505b801561232e5761232e87308361243f565b6123388186613243565b94505b61234687878761243f565b50505050505050565b5f81848411156123725760405162461bcd60e51b8152600401610cca9190612bc4565b505f61237e8486613243565b95945050505050565b5f806123938385613171565b9050838110156123e55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610cca565b9392505050565b6001600160a01b0382165f81815260236020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166124655760405162461bcd60e51b8152600401610cca906131bb565b6001600160a01b03821661248b5760405162461bcd60e51b8152600401610cca90613200565b6124c78160405180606001604052806026815260200161330c602691396001600160a01b0386165f90815260208190526040902054919061234f565b6001600160a01b038085165f9081526020819052604080822093909355908416815220546124f59082612387565b6001600160a01b038381165f818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611a54565b5f61254f3061116f565b600b54909150640100000000900460ff1615612586578015612583576006546125839030906001600160a01b03168361243f565b50565b5f601f54601e54601c54601d5461259d9190613171565b6125a79190613171565b6125b19190613171565b90505f8215806125bf575081155b156125c957505050565b5f600283601d54866125db91906130c2565b6125e591906130d9565b6125ef91906130d9565b90505f6125fc85836128c4565b90504761260882612905565b5f61261347836128c4565b90505f61262f8761208e601c548561280590919063ffffffff16565b90505f61264b8861208e601e548661280590919063ffffffff16565b90505f6126678961208e601f548761280590919063ffffffff16565b90505f81836126768688613243565b6126809190613243565b61268a9190613243565b5f601d819055601c819055601e819055601f8190556007546040519293506001600160a01b031691859181818185875af1925050503d805f81146126e9576040519150601f19603f3d011682016040523d82523d5f602084013e6126ee565b606091505b5050600854604051919a506001600160a01b03169083905f81818185875af1925050503d805f811461273b576040519150601f19603f3d011682016040523d82523d5f602084013e612740565b606091505b5090995050871580159061275357505f81115b156127a6576127628882612abb565b601d54604080518981526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b039091169047905f81818185875af1925050503d805f81146127f0576040519150601f19603f3d011682016040523d82523d5f602084013e6127f5565b606091505b5050505050505050505050505050565b5f825f0361281457505f610c9a565b5f61281f83856130c2565b90508261282c85836130d9565b146123e55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610cca565b5f6123e583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b98565b5f6123e583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061234f565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061293857612938613145565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129d89190613256565b816001815181106129eb576129eb613145565b60200260200101906001600160a01b031690816001600160a01b031681525050612a36307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461193d565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612a8a9085905f90869030904290600401613271565b5f604051808303815f87803b158015612aa1575f80fd5b505af1925050508015612ab2575060015b1561159f575050565b612ae6307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461193d565b60405163f305d71960e01b8152306004820152602481018390525f60448201819052606482015261dead60848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c40160606040518083038185885af193505050508015612b8c575060408051601f3d908101601f19168201909252612b89918101906132e0565b60015b1561159f575050505050565b5f8183612bb85760405162461bcd60e51b8152600401610cca9190612bc4565b505f61237e84866130d9565b5f6020808352835180828501525f5b81811015612bef57858101830151858201604001528201612bd3565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114612583575f80fd5b5f8060408385031215612c34575f80fd5b8235612c3f81612c0f565b946020939093013593505050565b5f60208284031215612c5d575f80fd5b5035919050565b5f60208284031215612c74575f80fd5b81356123e581612c0f565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612cbc57612cbc612c7f565b604052919050565b5f67ffffffffffffffff821115612cdd57612cdd612c7f565b5060051b60200190565b5f82601f830112612cf6575f80fd5b81356020612d0b612d0683612cc4565b612c93565b82815260059290921b84018101918181019086841115612d29575f80fd5b8286015b84811015612d4d578035612d4081612c0f565b8352918301918301612d2d565b509695505050505050565b5f8060408385031215612d69575f80fd5b823567ffffffffffffffff80821115612d80575f80fd5b612d8c86838701612ce7565b9350602091508185013581811115612da2575f80fd5b85019050601f81018613612db4575f80fd5b8035612dc2612d0682612cc4565b81815260059190911b82018301908381019088831115612de0575f80fd5b928401925b82841015612dfe57833582529284019290840190612de5565b80955050505050509250929050565b5f805f60608486031215612e1f575f80fd5b8335612e2a81612c0f565b92506020840135612e3a81612c0f565b929592945050506040919091013590565b5f805f8060808587031215612e5e575f80fd5b5050823594602084013594506040840135936060013592509050565b80358015158114612e89575f80fd5b919050565b5f8060408385031215612e9f575f80fd5b8235612eaa81612c0f565b9150612eb860208401612e7a565b90509250929050565b5f8060408385031215612ed2575f80fd5b823567ffffffffffffffff811115612ee8575f80fd5b612ef485828601612ce7565b95602094909401359450505050565b5f60208284031215612f13575f80fd5b6123e582612e7a565b5f8060408385031215612f2d575f80fd5b8235612f3881612c0f565b91506020830135612f4881612c0f565b809150509250929050565b600181811c90821680612f6757607f821691505b602082108103612f8557634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561300e57815f1904821115612ff457612ff4612fc0565b8085161561300157918102915b93841c9390800290612fd9565b509250929050565b5f8261302457506001610c9a565b8161303057505f610c9a565b816001811461304657600281146130505761306c565b6001915050610c9a565b60ff84111561306157613061612fc0565b50506001821b610c9a565b5060208310610133831016604e8410600b841016171561308f575081810a610c9a565b6130998383612fd4565b805f19048211156130ac576130ac612fc0565b029392505050565b5f6123e560ff841683613016565b8082028115828204841417610c9a57610c9a612fc0565b5f826130f357634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252602d908201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060408201526c6c6f776572207468616e20312560981b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161316a5761316a612fc0565b5060010190565b80820180821115610c9a57610c9a612fc0565b6020808252601d908201527f4d757374206b656570206665657320617420323025206f72206c657373000000604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610c9a57610c9a612fc0565b5f60208284031215613266575f80fd5b81516123e581612c0f565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156132bf5784516001600160a01b03168352938301939183019160010161329a565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156132f2575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220642788e231191c2d6a6806ddff33889d76ccb69acc1ab50968179d5bc873e9a064736f6c63430008140033
Deployed Bytecode Sourcemap
29463:19500:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7619:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29802:25;;;;;;;;;;-1:-1:-1;29802:25:0;;;;-1:-1:-1;;;;;29802:25:0;;;;;;-1:-1:-1;;;;;731:32:1;;;713:51;;701:2;686:18;29802:25:0;567:203:1;9786:169:0;;;;;;;;;;-1:-1:-1;9786:169:0;;;;;:::i;:::-;;:::i;:::-;;;1396:14:1;;1389:22;1371:41;;1359:2;1344:18;9786:169:0;1231:187:1;36833:246:0;;;;;;;;;;-1:-1:-1;36833:246:0;;;;;:::i;:::-;;:::i;:::-;;31009:64;;;;;;;;;;-1:-1:-1;31009:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;29539:51;;;;;;;;;;;;;;;8739:108;;;;;;;;;;-1:-1:-1;8827:12:0;;8739:108;;;2241:25:1;;;2229:2;2214:18;8739:108:0;2095:177:1;40228:157:0;;;;;;;;;;-1:-1:-1;40228:157:0;;;;;:::i;:::-;;:::i;30753:33::-;;;;;;;;;;;;;;;;30295:25;;;;;;;;;;;;;;;;37091:234;;;;;;;;;;-1:-1:-1;37091:234:0;;;;;:::i;:::-;;:::i;30713:33::-;;;;;;;;;;;;;;;;36069:752;;;;;;;;;;-1:-1:-1;36069:752:0;;;;;:::i;:::-;;:::i;10437:355::-;;;;;;;;;;-1:-1:-1;10437:355:0;;;;;:::i;:::-;;:::i;30476:26::-;;;;;;;;;;;;;;;;31080:53;;;;;;;;;;-1:-1:-1;31080:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;29642;;;;;;;;;;;;29688:6;29642:53;;37974:432;;;;;;;;;;-1:-1:-1;37974:432:0;;;;;:::i;:::-;;:::i;37489:92::-;;;;;;;;;;-1:-1:-1;37564:9:0;;37489:92;;37564:9;;;;5755:36:1;;5743:2;5728:18;37489:92:0;5613:184:1;11201:218:0;;;;;;;;;;-1:-1:-1;11201:218:0;;;;;:::i;:::-;;:::i;30634:29::-;;;;;;;;;;;;;;;;29597:38;;;;;;;;;;;;;;;29945:33;;;;;;;;;;-1:-1:-1;29945:33:0;;;;;;;;;;;30063:30;;;;;;;;;;-1:-1:-1;30063:30:0;;;;;;;;;;;40959:127;;;;;;;;;;-1:-1:-1;40959:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;41050:28:0;41026:4;41050:28;;;:19;:28;;;;;;;;;40959:127;30333:28;;;;;;;;;;;;;;;;30670:30;;;;;;;;;;;;;;;;30025:31;;;;;;;;;;-1:-1:-1;30025:31:0;;;;;;;;;;;8910:127;;;;;;;;;;-1:-1:-1;8910:127:0;;;;;:::i;:::-;;:::i;22084:148::-;;;;;;;;;;;;;:::i;35937:120::-;;;;;;;;;;;;;:::i;37337:144::-;;;;;;;;;;-1:-1:-1;37337:144:0;;;;;:::i;:::-;;:::i;29734:30::-;;;;;;;;;;-1:-1:-1;29734:30:0;;;;-1:-1:-1;;;;;29734:30:0;;;30190;;;;;;;;;;;;;;;;46846:172;;;;;;;;;;;;;:::i;40713:232::-;;;;;;;;;;-1:-1:-1;40713:232:0;;;;;:::i;:::-;;:::i;40397:161::-;;;;;;;;;;-1:-1:-1;40397:161:0;;;;;:::i;:::-;;:::i;30550:35::-;;;;;;;;;;;;;;;;35725:156;;;;;;;;;;;;;:::i;21442:79::-;;;;;;;;;;-1:-1:-1;21507:6:0;;-1:-1:-1;;;;;21507:6:0;21442:79;;29771:24;;;;;;;;;;-1:-1:-1;29771:24:0;;;;-1:-1:-1;;;;;29771:24:0;;;30368:31;;;;;;;;;;;;;;;;37681:101;;;;;;;;;;-1:-1:-1;37681:101:0;;;;;:::i;:::-;;:::i;37863:99::-;;;;;;;;;;-1:-1:-1;37863:99:0;;;;;:::i;:::-;;:::i;7838:104::-;;;;;;;;;;;;;:::i;39554:246::-;;;;;;;;;;-1:-1:-1;39554:246:0;;;;;:::i;:::-;;:::i;30592:35::-;;;;;;;;;;;;;;;;30264:24;;;;;;;;;;;;;;;;30793:27;;;;;;;;;;;;;;;;30444:25;;;;;;;;;;;;;;;;11922:269;;;;;;;;;;-1:-1:-1;11922:269:0;;;;;:::i;:::-;;:::i;9250:175::-;;;;;;;;;;-1:-1:-1;9250:175:0;;;;;:::i;:::-;;:::i;40008:208::-;;;;;;;;;;-1:-1:-1;40008:208:0;;;;;:::i;:::-;;:::i;38869:487::-;;;;;;;;;;-1:-1:-1;38869:487:0;;;;;:::i;:::-;;:::i;31291:58::-;;;;;;;;;;-1:-1:-1;31291:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;29985:33;;;;;;;;;;-1:-1:-1;29985:33:0;;;;;;;;;;;39364:182;;;;;;;;;;-1:-1:-1;39364:182:0;;;;;:::i;:::-;;:::i;29840:35::-;;;;;;;;;;;;;;;;30827:28;;;;;;;;;;;;;;;;30156:27;;;;;;;;;;;;;;;;9488:151;;;;;;;;;;-1:-1:-1;9488:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;9604:18:0;;;9577:7;9604:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9488:151;30511:32;;;;;;;;;;;;;;;;38418:443;;;;;;;;;;-1:-1:-1;38418:443:0;;;;;:::i;:::-;;:::i;30106:33::-;;;;;;;;;;;;;;;;30227:30;;;;;;;;;;;;;;;;22387:244;;;;;;;;;;-1:-1:-1;22387:244:0;;;;;:::i;:::-;;:::i;30406:31::-;;;;;;;;;;;;;;;;29882:24;;;;;;;;;;;;;;;;40566:139;;;;;;;;;;-1:-1:-1;40566:139:0;;;;;:::i;:::-;;:::i;7619:100::-;7673:13;7706:5;7699:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7619:100;:::o;9786:169::-;9869:4;9886:39;335:10;9909:7;9918:6;9886:8;:39::i;:::-;-1:-1:-1;9943:4:0;9786:169;;;;;:::o;36833:246::-;21654:6;;-1:-1:-1;;;;;21654:6:0;335:10;21654:22;21646:67;;;;-1:-1:-1;;;21646:67:0;;;;;;;:::i;:::-;;;;;;;;;36953:9:::1;::::0;36949:13:::1;::::0;36953:9:::1;;36949:2;:13;:::i;:::-;36943:3;36923:13;8827:12:::0;;;8739:108;36923:13:::1;:17;::::0;36939:1:::1;36923:17;:::i;:::-;:23;;;;:::i;:::-;36922:41;;;;:::i;:::-;36912:6;:51;;36904:109;;;;-1:-1:-1::0;;;36904:109:0::1;;;;;;;:::i;:::-;37061:9;::::0;37057:13:::1;::::0;37061:9:::1;;37057:2;:13;:::i;:::-;37047:24;::::0;:6;:24:::1;:::i;:::-;37024:20;:47:::0;-1:-1:-1;36833:246:0:o;40228:157::-;21654:6;;-1:-1:-1;;;;;21654:6:0;335:10;21654:22;21646:67;;;;-1:-1:-1;;;21646:67:0;;;;;;;:::i;:::-;40335:9:::1;::::0;40307:38:::1;::::0;-1:-1:-1;;;;;40335:9:0;;::::1;::::0;40307:38;::::1;::::0;::::1;::::0;40335:9:::1;::::0;40307:38:::1;40356:9;:21:::0;;-1:-1:-1;;;;;;40356:21:0::1;-1:-1:-1::0;;;;;40356:21:0;;;::::1;::::0;;;::::1;::::0;;40228:157::o;37091:234::-;21654:6;;-1:-1:-1;;;;;21654:6:0;335:10;21654:22;21646:67;;;;-1:-1:-1;;;21646:67:0;;;;;;;:::i;:::-;37211:9:::1;::::0;37207:13:::1;::::0;37211:9:::1;;37207:2;:13;:::i;:::-;37201:3;37181:13;8827:12:::0;;;8739:108;37181:13:::1;:17;::::0;37197:1:::1;37181:17;:::i;:::-;:23;;;;:::i;:::-;37180:41;;;;:::i;:::-;37170:6;:51;;37162:109;;;;-1:-1:-1::0;;;37162:109:0::1;;;;;;;:::i;:::-;37307:9;::::0;37303:13:::1;::::0;37307:9:::1;;37303:2;:13;:::i;:::-;37293:24;::::0;:6;:24:::1;:::i;:::-;37282:9;:35:::0;-1:-1:-1;37091:234:0:o;36069:752::-;21654:6;;36182:4;;-1:-1:-1;;;;;21654:6:0;335:10;21654:22;21646:67;;;;-1:-1:-1;;;21646:67:0;;;;;;;:::i;:::-;36207:13:::1;::::0;;;::::1;;;36206:14;36198:82;;;::::0;-1:-1:-1;;;36198:82:0;;10558:2:1;36198:82:0::1;::::0;::::1;10540:21:1::0;10597:2;10577:18;;;10570:30;10636:34;10616:18;;;10609:62;10707:25;10687:18;;;10680:53;10750:19;;36198:82:0::1;10356:419:1::0;36198:82:0::1;36324:7;:14;36299;:21;:39;36291:82;;;::::0;-1:-1:-1;;;36291:82:0;;10982:2:1;36291:82:0::1;::::0;::::1;10964:21:1::0;11021:2;11001:18;;;10994:30;11060:32;11040:18;;;11033:60;11110:18;;36291:82:0::1;10780:354:1::0;36291:82:0::1;36416:3;36392:14;:21;:27;36384:94;;;::::0;-1:-1:-1;;;36384:94:0;;11341:2:1;36384:94:0::1;::::0;::::1;11323:21:1::0;11380:2;11360:18;;;11353:30;11419:34;11399:18;;;11392:62;-1:-1:-1;;;11470:18:1;;;11463:52;11532:19;;36384:94:0::1;11139:418:1::0;36384:94:0::1;36591:9;36587:205;36610:14;:21;36606:1;:25;36587:205;;;36652:14;36669;36684:1;36669:17;;;;;;;;:::i;:::-;;;;;;;36652:34;;36701:14;36718:7;36726:1;36718:10;;;;;;;;:::i;:::-;;;;;;;36701:27;;36743:37;36753:10;36765:6;36773;36743:9;:37::i;:::-;36637:155;;36633:3;;;;;:::i;:::-;;;;36587:205;;;-1:-1:-1::0;36809:4:0::1;::::0;36069:752;-1:-1:-1;;;36069:752:0:o;10437:355::-;10577:4;10594:36;10604:6;10612:9;10623:6;10594:9;:36::i;:::-;10641:121;10650:6;335:10;10672:89;10710:6;10672:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10672:19:0;;;;;;:11;:19;;;;;;;;335:10;10672:33;;;;;;;;;;:37;:89::i;:::-;10641:8;:121::i;37974:432::-;21654:6;;-1:-1:-1;;;;;21654:6:0;335:10;21654:22;21646:67;;;;-1:-1:-1;;;21646:67:0;;;;;;;:::i;:::-;38108:15:::1;:31:::0;;;38150:15:::1;:31:::0;;;38192:9:::1;:19:::0;;;38222:10:::1;:21:::0;;;38235:8;38204:7;38269:33:::1;38168:13:::0;38126;38269:33:::1;:::i;:::-;:45;;;;:::i;:::-;:58;;;;:::i;:::-;38254:12;:73:::0;;;38362:2:::1;-1:-1:-1::0;38346:18:0::1;38338:60;;;;-1:-1:-1::0;;;38338:60:0::1;;;;;;;:::i;:::-;37974:432:::0;;;;:::o;11201:218::-;335:10;11289:4;11338:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11338:34:0;;;;;;;;;;11289:4;;11306:83;;11329:7;;11338:50;;11377:10;11338:38;:50::i;8910:127::-;-1:-1:-1;;;;;9011:18:0;8984:7;9011:18;;;;;;;;;;;;8910:127::o;22084:148::-;21654:6;;-1:-1:-1;;;;;21654:6:0;335:10;21654:22;21646:67;;;;-1:-1:-1;;;21646:67:0;;;;;;;:::i;:::-;22175:6:::1;::::0;22154:40:::1;::::0;22191:1:::1;::::0;-1:-1:-1;;;;;22175:6:0::1;::::0;22154:40:::1;::::0;22191:1;;22154:40:::1;22205:6;:19:::0;;-1:-1:-1;;;;;;22205:19:0::1;::::0;;22084:148::o;35937:120::-;21654:6;;35989:4;;-1:-1:-1;;;;;21654:6:0;335:10;21654:22;21646:67;;;;-1:-1:-1;;;21646:67:0;;;;;;;:::i;:::-;-1:-1:-1;36005:14:0::1;:22:::0;;-1:-1:-1;;36005:22:0::1;::::0;;:14:::1;35937:120:::0;:::o;37337:144::-;21654:6;;-1:-1:-1;;;;;21654:6:0;335:10;21654:22;21646:67;;;;-1:-1:-1;;;21646:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37427:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;37427:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;37337:144::o;46846:172::-;21654:6;;-1:-1:-1;;;;;21654:6:0;335:10;21654:22;21646:67;;;;-1:-1:-1;;;21646:67:0;;;;;;;:::i;:::-;46921:1:::1;46900:18;:22:::0;;;46933:18:::1;:22:::0;;;46966:12:::1;:16:::0;;;46993:13:::1;:17:::0;46846:172::o;40713:232::-;21654:6;;-1:-1:-1;;;;;21654:6:0;335:10;21654:22;21646:67;;;;-1:-1:-1;;;21646:67:0;;;;;;;:::i;:::-;40828:6:::1;40823:115;40844:10;:17;40840:1;:21;40823:115;;;40918:8;40883:17;:32;40901:10;40912:1;40901:13;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;40883:32:0::1;-1:-1:-1::0;;;;;40883:32:0::1;;;;;;;;;;;;:43;;;;40863:3;;;;;:::i;:::-;;;;40823:115;;;;40713:232:::0;;:::o;40397:161::-;21654:6;;-1:-1:-1;;;;;21654:6:0;335:10;21654:22;21646:67;;;;-1:-1:-1;;;21646:67:0;;;;;;;:::i;:::-;40506:10:::1;::::0;40477:40:::1;::::0;-1:-1:-1;;;;;40506:10:0;;::::1;::::0;40477:40;::::1;::::0;::::1;::::0;40506:10:::1;::::0;40477:40:::1;40528:10;:22:::0;;-1:-1:-1;;;;;;40528:22:0::1;-1:-1:-1::0;;;;;40528:22:0;;;::::1;::::0;;;::::1;::::0;;40397:161::o;35725:156::-;21654:6;;-1:-1:-1;;;;;21654:6:0;335:10;21654:22;21646:67;;;;-1:-1:-1;;;21646:67:0;;;;;;;:::i;:::-;35780:13:::1;:20:::0;;-1:-1:-1;;35811:18:0;;;;;35861:12:::1;35840:18;:33:::0;35725:156::o;37681:101::-;21654:6;;-1:-1:-1;;;;;21654:6:0;335:10;21654:22;21646:67;;;;-1:-1:-1;;;21646:67:0;;;;;;;:::i;:::-;37753:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;37753:21:0;;::::1;::::0;;;::::1;::::0;;37681:101::o;37863:99::-;21654:6;;-1:-1:-1;;;;;21654:6:0;335:10;21654:22;21646:67;;;;-1:-1:-1;;;21646:67:0;;;;;;;:::i;:::-;37934:10:::1;:20:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;37934:20:0;;::::1;::::0;;;::::1;::::0;;37863:99::o;7838:104::-;7894:13;7927:7;7920:14;;;;;:::i;39554:246::-;21654:6;;-1:-1:-1;;;;;21654:6:0;335:10;21654:22;21646:67;;;;-1:-1:-1;;;21646:67:0;;;;;;;:::i;:::-;39663:13:::1;-1:-1:-1::0;;;;;39655:21:0::1;:4;-1:-1:-1::0;;;;;39655:21:0::1;::::0;39647:91:::1;;;::::0;-1:-1:-1;;;39647:91:0;;12524:2:1;39647:91:0::1;::::0;::::1;12506:21:1::0;12563:2;12543:18;;;12536:30;12602:34;12582:18;;;12575:62;12673:27;12653:18;;;12646:55;12718:19;;39647:91:0::1;12322:421:1::0;39647:91:0::1;39751:41;39780:4;39786:5;39751:28;:41::i;:::-;39554:246:::0;;:::o;11922:269::-;12015:4;12032:129;335:10;12055:7;12064:96;12103:15;12064:96;;;;;;;;;;;;;;;;;335:10;12064:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12064:34:0;;;;;;;;;;;;:38;:96::i;9250:175::-;9336:4;9353:42;335:10;9377:9;9388:6;9353:9;:42::i;40008:208::-;21654:6;;-1:-1:-1;;;;;21654:6:0;335:10;21654:22;21646:67;;;;-1:-1:-1;;;21646:67:0;;;;;;;:::i;:::-;40145:15:::1;::::0;40102:59:::1;::::0;-1:-1:-1;;;;;40145:15:0;;::::1;::::0;40102:59;::::1;::::0;::::1;::::0;40145:15:::1;::::0;40102:59:::1;40172:15;:36:::0;;-1:-1:-1;;;;;;40172:36:0::1;-1:-1:-1::0;;;;;40172:36:0;;;::::1;::::0;;;::::1;::::0;;40008:208::o;38869:487::-;21654:6;;-1:-1:-1;;;;;21654:6:0;335:10;21654:22;21646:67;;;;-1:-1:-1;;;21646:67:0;;;;;;;:::i;:::-;39008:20:::1;:36:::0;;;39055:20:::1;:36:::0;;;39102:14:::1;:24:::0;;;39137:15:::1;:26:::0;;;39155:8;39119:7;39194:43:::1;39078:13:::0;39031;39194:43:::1;:::i;:::-;:60;;;;:::i;:::-;:78;;;;:::i;:::-;39174:17;:98:::0;;;39312:2:::1;-1:-1:-1::0;39291:23:0::1;39283:65;;;;-1:-1:-1::0;;;39283:65:0::1;;;;;;;:::i;39364:182::-:0;21654:6;;-1:-1:-1;;;;;21654:6:0;335:10;21654:22;21646:67;;;;-1:-1:-1;;;21646:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39449:28:0;::::1;;::::0;;;:19:::1;:28:::0;;;;;;;;:39;;-1:-1:-1;;39449:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;39504:34;;1371:41:1;;;39504:34:0::1;::::0;1344:18:1;39504:34:0::1;;;;;;;39364:182:::0;;:::o;38418:443::-;21654:6;;-1:-1:-1;;;;;21654:6:0;335:10;21654:22;21646:67;;;;-1:-1:-1;;;21646:67:0;;;;;;;:::i;:::-;38553:16:::1;:32:::0;;;38596:16:::1;:32:::0;;;38639:10:::1;:20:::0;;;38670:11:::1;:22:::0;;;38684:8;38652:7;38719:35:::1;38615:13:::0;38572;38719:35:::1;:::i;:::-;:48;;;;:::i;:::-;:62;;;;:::i;:::-;38703:13;:78:::0;;;38817:2:::1;-1:-1:-1::0;38800:19:0::1;38792:61;;;;-1:-1:-1::0;;;38792:61:0::1;;;;;;;:::i;22387:244::-:0;21654:6;;-1:-1:-1;;;;;21654:6:0;335:10;21654:22;21646:67;;;;-1:-1:-1;;;21646:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22476:22:0;::::1;22468:73;;;::::0;-1:-1:-1;;;22468:73:0;;12950:2:1;22468:73:0::1;::::0;::::1;12932:21:1::0;12989:2;12969:18;;;12962:30;13028:34;13008:18;;;13001:62;-1:-1:-1;;;13079:18:1;;;13072:36;13125:19;;22468:73:0::1;12748:402:1::0;22468:73:0::1;22578:6;::::0;22557:38:::1;::::0;-1:-1:-1;;;;;22557:38:0;;::::1;::::0;22578:6:::1;::::0;22557:38:::1;::::0;22578:6:::1;::::0;22557:38:::1;22606:6;:17:::0;;-1:-1:-1;;;;;;22606:17:0::1;-1:-1:-1::0;;;;;22606:17:0;;;::::1;::::0;;;::::1;::::0;;22387:244::o;40566:139::-;21654:6;;-1:-1:-1;;;;;21654:6:0;335:10;21654:22;21646:67;;;;-1:-1:-1;;;21646:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40660:27:0;;::::1;;::::0;;;:17:::1;:27;::::0;;;;:37;40566:139::o;15108:380::-;-1:-1:-1;;;;;15244:19:0;;15236:68;;;;-1:-1:-1;;;15236:68:0;;13357:2:1;15236:68:0;;;13339:21:1;13396:2;13376:18;;;13369:30;13435:34;13415:18;;;13408:62;-1:-1:-1;;;13486:18:1;;;13479:34;13530:19;;15236:68:0;13155:400:1;15236:68:0;-1:-1:-1;;;;;15323:21:0;;15315:68;;;;-1:-1:-1;;;15315:68:0;;13762:2:1;15315:68:0;;;13744:21:1;13801:2;13781:18;;;13774:30;13840:34;13820:18;;;13813:62;-1:-1:-1;;;13891:18:1;;;13884:32;13933:19;;15315:68:0;13560:398:1;15315:68:0;-1:-1:-1;;;;;15396:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15448:32;;2241:25:1;;;15448:32:0;;2214:18:1;15448:32:0;;;;;;;;15108:380;;;:::o;41094:4576::-;-1:-1:-1;;;;;41226:18:0;;41218:68;;;;-1:-1:-1;;;41218:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;41305:16:0;;41297:64;;;;-1:-1:-1;;;41297:64:0;;;;;;;:::i;:::-;41376:13;;;;;;;41372:132;;-1:-1:-1;;;;;41413:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;41442:23:0;;;;;;:19;:23;;;;;;;;41413:52;41405:87;;;;-1:-1:-1;;;41405:87:0;;14975:2:1;41405:87:0;;;14957:21:1;15014:2;14994:18;;;14987:30;-1:-1:-1;;;15033:18:1;;;15026:52;15095:18;;41405:87:0;14773:346:1;41405:87:0;41518:6;41528:1;41518:11;41515:92;;41546:28;41562:4;41568:2;41572:1;41546:15;:28::i;41515:92::-;41630:14;;;;;;;41627:1134;;;21507:6;;-1:-1:-1;;;;;41682:15:0;;;21507:6;;41682:15;;;;:49;;-1:-1:-1;21507:6:0;;-1:-1:-1;;;;;41718:13:0;;;21507:6;;41718:13;;41682:49;:86;;;;-1:-1:-1;;;;;;41752:16:0;;;;41682:86;:128;;;;-1:-1:-1;;;;;;41789:21:0;;41803:6;41789:21;;41682:128;:204;;;;-1:-1:-1;;;;;;41833:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;41862:23:0;;;;;;:19;:23;;;;;;;;41833:52;41831:55;41682:204;:234;;;;-1:-1:-1;41908:8:0;;-1:-1:-1;;;41908:8:0;;;;41907:9;41682:234;41660:1090;;;-1:-1:-1;;;;;42001:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;42037:35:0;;;;;;:31;:35;;;;;;;;42036:36;42001:71;41997:738;;;42119:20;;42109:6;:30;;42101:96;;;;-1:-1:-1;;;42101:96:0;;15326:2:1;42101:96:0;;;15308:21:1;15365:2;15345:18;;;15338:30;15404:34;15384:18;;;15377:62;-1:-1:-1;;;15455:18:1;;;15448:51;15516:19;;42101:96:0;15124:417:1;42101:96:0;42258:9;;42241:13;42251:2;42241:9;:13::i;:::-;42232:22;;:6;:22;:::i;:::-;:35;;42224:67;;;;-1:-1:-1;;;42224:67:0;;15748:2:1;42224:67:0;;;15730:21:1;15787:2;15767:18;;;15760:30;-1:-1:-1;;;15806:18:1;;;15799:49;15865:18;;42224:67:0;15546:343:1;42224:67:0;41997:738;;;-1:-1:-1;;;;;42385:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;42419:37:0;;;;;;:31;:37;;;;;;;;42418:38;42385:71;42381:354;;;42503:20;;42493:6;:30;;42485:97;;;;-1:-1:-1;;;42485:97:0;;16096:2:1;42485:97:0;;;16078:21:1;16135:2;16115:18;;;16108:30;16174:34;16154:18;;;16147:62;-1:-1:-1;;;16225:18:1;;;16218:52;16287:19;;42485:97:0;15894:418:1;42381:354:0;42682:9;;42665:13;42675:2;42665:9;:13::i;:::-;42656:22;;:6;:22;:::i;:::-;:35;;42648:67;;;;-1:-1:-1;;;42648:67:0;;15748:2:1;42648:67:0;;;15730:21:1;15787:2;15767:18;;;15760:30;-1:-1:-1;;;15806:18:1;;;15799:49;15865:18;;42648:67:0;15546:343:1;42648:67:0;42775:28;42806:24;42824:4;42806:9;:24::i;:::-;42775:55;-1:-1:-1;42866:24:0;;;;;;;42921:35;;-1:-1:-1;42945:11:0;;;;;;;42921:35;:61;;;;-1:-1:-1;42974:8:0;;-1:-1:-1;;;42974:8:0;;;;42973:9;42921:61;:110;;;;-1:-1:-1;;;;;;43000:31:0;;;;;;:25;:31;;;;;;;;42999:32;42921:110;:153;;;;-1:-1:-1;;;;;;43049:25:0;;;;;;:19;:25;;;;;;;;43048:26;42921:153;:194;;;;-1:-1:-1;;;;;;43092:23:0;;;;;;:19;:23;;;;;;;;43091:24;42921:194;42903:338;;;43142:8;:15;;-1:-1:-1;;;;43142:15:0;-1:-1:-1;;;43142:15:0;;;43186:10;:8;:10::i;:::-;43213:8;:16;;-1:-1:-1;;;;43213:16:0;;;42903:338;43277:8;;-1:-1:-1;;;;;43386:25:0;;43261:12;43386:25;;;:19;:25;;;;;;43277:8;-1:-1:-1;;;43277:8:0;;;;;43276:9;;43386:25;;:52;;-1:-1:-1;;;;;;43415:23:0;;;;;;:19;:23;;;;;;;;43386:52;43383:99;;;-1:-1:-1;43465:5:0;43383:99;43502:12;43606:7;43603:2014;;;43667:15;43677:4;43667:9;:15::i;:::-;-1:-1:-1;;;;;43640:23:0;;;;;;:17;:23;;;;;;:42;;;;:84;;;43711:13;43721:2;43711:9;:13::i;:::-;-1:-1:-1;;;;;43686:21:0;;;;;;:17;:21;;;;;;:38;;43640:84;43631:120;;;;-1:-1:-1;;;43631:120:0;;16519:2:1;43631:120:0;;;16501:21:1;16558:2;16538:18;;;16531:30;-1:-1:-1;;;16577:18:1;;;16570:52;16639:18;;43631:120:0;16317:346:1;43631:120:0;43807:12;43785:18;;:34;:104;;;;-1:-1:-1;;;;;;43824:29:0;;;;;;:25;:29;;;;;;;;;:64;;-1:-1:-1;;;;;;43857:31:0;;;;;;:25;:31;;;;;;;;43824:64;43782:1666;;;-1:-1:-1;43916:1:0;43782:1666;;;-1:-1:-1;;;;;43943:29:0;;;;;;:25;:29;;;;;;;;43939:1509;;;43996:13;;:17;43992:420;;44044:34;44074:3;44044:25;44055:13;;44044:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;44037:41;;44149:13;;44130:16;;44123:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;44101:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;44221:13:0;;44208:10;;44201:17;;:4;:17;:::i;:::-;:33;;;;:::i;:::-;44185:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;44305:13:0;;44286:16;;44279:23;;:4;:23;:::i;:::-;:39;;;;:::i;:::-;44257:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;44379:13:0;;44365:11;;44358:18;;:4;:18;:::i;:::-;:34;;;;:::i;:::-;44341:13;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;43992:420:0;43939:1509;;;-1:-1:-1;;;;;44472:31:0;;;;;;:25;:31;;;;;;;;44469:979;;;44528:12;;:16;44524:410;;44575:33;44604:3;44575:24;44586:12;;44575:6;:10;;:24;;;;:::i;:33::-;44568:40;;44678:12;;44660:15;;44653:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;44631:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;44748:12:0;;44736:9;;44729:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;44713:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;44830:12:0;;44812:15;;44805:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;44783:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;44902:12:0;;44889:10;;44882:17;;:4;:17;:::i;44469:979::-;44977:17;;:21;44973:460;;45029:38;45063:3;45029:29;45040:17;;45029:6;:10;;:29;;;;:::i;:38::-;45022:45;;45142:17;;45119:20;;45112:4;:27;;;;:::i;:::-;:47;;;;:::i;:::-;45090:18;;:69;;;;;;;:::i;:::-;;;;-1:-1:-1;;45222:17:0;;45205:14;;45198:21;;:4;:21;:::i;:::-;:41;;;;:::i;:::-;45182:12;;:57;;;;;;;:::i;:::-;;;;-1:-1:-1;;45314:17:0;;45291:20;;45284:27;;:4;:27;:::i;:::-;:47;;;;:::i;:::-;45262:18;;:69;;;;;;;:::i;:::-;;;;-1:-1:-1;;45396:17:0;;45378:15;;45371:22;;:4;:22;:::i;:::-;:42;;;;:::i;:::-;45354:13;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;44973:460:0;45479:8;;45476:93;;45511:42;45527:4;45541;45548;45511:15;:42::i;:::-;45591:14;45601:4;45591:14;;:::i;:::-;;;43603:2014;45629:33;45645:4;45651:2;45655:6;45629:15;:33::i;:::-;41207:4463;;;;41094:4576;;;:::o;17389:192::-;17475:7;17511:12;17503:6;;;;17495:29;;;;-1:-1:-1;;;17495:29:0;;;;;;;;:::i;:::-;-1:-1:-1;17535:9:0;17547:5;17551:1;17547;:5;:::i;:::-;17535:17;17389:192;-1:-1:-1;;;;;17389:192:0:o;16486:181::-;16544:7;;16576:5;16580:1;16576;:5;:::i;:::-;16564:17;;16605:1;16600;:6;;16592:46;;;;-1:-1:-1;;;16592:46:0;;17003:2:1;16592:46:0;;;16985:21:1;17042:2;17022:18;;;17015:30;17081:29;17061:18;;;17054:57;17128:18;;16592:46:0;16801:351:1;16592:46:0;16658:1;16486:181;-1:-1:-1;;;16486:181:0:o;39812:188::-;-1:-1:-1;;;;;39895:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;39895:39:0;;;;;;;;;;39952:40;;39895:39;;:31;39952:40;;;39812:188;;:::o;12681:573::-;-1:-1:-1;;;;;12821:20:0;;12813:70;;;;-1:-1:-1;;;12813:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12902:23:0;;12894:71;;;;-1:-1:-1;;;12894:71:0;;;;;;;:::i;:::-;13058;13080:6;13058:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13058:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;13038:17:0;;;:9;:17;;;;;;;;;;;:91;;;;13163:20;;;;;;;:32;;13188:6;13163:24;:32::i;:::-;-1:-1:-1;;;;;13140:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;13211:35;2241:25:1;;;13140:20:0;;13211:35;;;;;;2214:18:1;13211:35:0;2095:177:1;47026:1934:0;47065:23;47091:24;47109:4;47091:9;:24::i;:::-;47132:10;;47065:50;;-1:-1:-1;47132:10:0;;;;;47128:185;;;47162:19;;47158:123;;47232:15;;47201:64;;47225:4;;-1:-1:-1;;;;;47232:15:0;47249;47201;:64::i;:::-;47295:7;47026:1934::o;47128:185::-;47325:25;47410:13;;47395:12;;47374:18;;47353;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;:70;;;;:::i;:::-;47325:98;-1:-1:-1;47434:12:0;47470:20;;;:46;;-1:-1:-1;47494:22:0;;47470:46;47467:60;;;47519:7;;;47026:1934::o;47467:60::-;47596:23;47681:1;47661:17;47640:18;;47622:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;47596:86;-1:-1:-1;47693:26:0;47722:36;:15;47596:86;47722:19;:36::i;:::-;47693:65;-1:-1:-1;47807:21:0;47841:36;47693:65;47841:16;:36::i;:::-;47899:18;47920:44;:21;47946:17;47920:25;:44::i;:::-;47899:65;;47985:23;48011:57;48050:17;48011:34;48026:18;;48011:10;:14;;:34;;;;:::i;:57::-;47985:83;;48079:17;48099:51;48132:17;48099:28;48114:12;;48099:10;:14;;:28;;;;:::i;:51::-;48079:71;;48161:18;48182:52;48216:17;48182:29;48197:13;;48182:10;:14;;:29;;;;:::i;:52::-;48161:73;-1:-1:-1;48255:23:0;48161:73;48312:9;48281:28;48294:15;48281:10;:28;:::i;:::-;:40;;;;:::i;:::-;:53;;;;:::i;:::-;48376:1;48355:18;:22;;;48388:18;:22;;;48421:12;:16;;;48448:13;:17;;;48507:9;;48499:45;;48255:79;;-1:-1:-1;;;;;;48507:9:0;;48530;;48499:45;48376:1;48499:45;48530:9;48507;48499:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;48576:10:0;;48568:47;;48486:58;;-1:-1:-1;;;;;;48576:10:0;;48600;;48568:47;;;;48600:10;48576;48568:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;48555:60:0;;-1:-1:-1;;48639:19:0;;;;;:42;;;48680:1;48662:15;:19;48639:42;48636:210;;;48697:46;48710:15;48727;48697:12;:46::i;:::-;48815:18;;48763:71;;;17569:25:1;;;17625:2;17610:18;;17603:34;;;17653:18;;;17646:34;;;;48763:71:0;;;;;;17557:2:1;48763:71:0;;;48636:210;48887:15;;48879:63;;-1:-1:-1;;;;;48887:15:0;;;;48916:21;;48879:63;;;;48916:21;48887:15;48879:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;47026:1934:0:o;17840:471::-;17898:7;18143:1;18148;18143:6;18139:47;;-1:-1:-1;18173:1:0;18166:8;;18139:47;18198:9;18210:5;18214:1;18210;:5;:::i;:::-;18198:17;-1:-1:-1;18243:1:0;18234:5;18238:1;18198:17;18234:5;:::i;:::-;:10;18226:56;;;;-1:-1:-1;;;18226:56:0;;17893:2:1;18226:56:0;;;17875:21:1;17932:2;17912:18;;;17905:30;17971:34;17951:18;;;17944:62;-1:-1:-1;;;18022:18:1;;;18015:31;18063:19;;18226:56:0;17691:397:1;18787:132:0;18845:7;18872:39;18876:1;18879;18872:39;;;;;;;;;;;;;;;;;:3;:39::i;16950:136::-;17008:7;17035:43;17039:1;17042;17035:43;;;;;;;;;;;;;;;;;:3;:43::i;45678:616::-;45830:16;;;45844:1;45830:16;;;;;;;;45806:21;;45830:16;;;;;;;;;;-1:-1:-1;45830:16:0;45806:40;;45875:4;45857;45862:1;45857:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;45857:23:0;;;-1:-1:-1;;;;;45857:23:0;;;;;45901:15;-1:-1:-1;;;;;45901:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;45891:4;45896:1;45891:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;45891:32:0;;;-1:-1:-1;;;;;45891:32:0;;;;;45936:62;45953:4;45968:15;45986:11;45936:8;:62::i;:::-;46041:224;;-1:-1:-1;;;46041:224:0;;-1:-1:-1;;;;;46041:15:0;:66;;;;:224;;46122:11;;46148:1;;46192:4;;46219;;46239:15;;46041:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46037:240;;;45733:561;45678:616;:::o;46306:532::-;46454:62;46471:4;46486:15;46504:11;46454:8;:62::i;:::-;46563:256;;-1:-1:-1;;;46563:256:0;;46635:4;46563:256;;;19675:34:1;19725:18;;;19718:34;;;46681:1:0;19768:18:1;;;19761:34;;;19811:18;;;19804:34;29688:6:0;19854:19:1;;;19847:44;46793:15:0;19907:19:1;;;19900:35;46563:15:0;-1:-1:-1;;;;;46563:31:0;;;;46602:9;;19609:19:1;;46563:256:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46563:256:0;;;;;;;;-1:-1:-1;;46563:256:0;;;;;;;;;;;;:::i;:::-;;;46559:272;;;;;;46306:532;;:::o;19415:278::-;19501:7;19536:12;19529:5;19521:28;;;;-1:-1:-1;;;19521:28:0;;;;;;;;:::i;:::-;-1:-1:-1;19560:9:0;19572:5;19576:1;19572;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;775:131::-;-1:-1:-1;;;;;850:31:1;;840:42;;830:70;;896:1;893;886:12;911:315;979:6;987;1040:2;1028:9;1019:7;1015:23;1011:32;1008:52;;;1056:1;1053;1046:12;1008:52;1095:9;1082:23;1114:31;1139:5;1114:31;:::i;:::-;1164:5;1216:2;1201:18;;;;1188:32;;-1:-1:-1;;;911:315:1:o;1423:180::-;1482:6;1535:2;1523:9;1514:7;1510:23;1506:32;1503:52;;;1551:1;1548;1541:12;1503:52;-1:-1:-1;1574:23:1;;1423:180;-1:-1:-1;1423:180:1:o;1608:247::-;1667:6;1720:2;1708:9;1699:7;1695:23;1691:32;1688:52;;;1736:1;1733;1726:12;1688:52;1775:9;1762:23;1794:31;1819:5;1794:31;:::i;2277:127::-;2338:10;2333:3;2329:20;2326:1;2319:31;2369:4;2366:1;2359:15;2393:4;2390:1;2383:15;2409:275;2480:2;2474:9;2545:2;2526:13;;-1:-1:-1;;2522:27:1;2510:40;;2580:18;2565:34;;2601:22;;;2562:62;2559:88;;;2627:18;;:::i;:::-;2663:2;2656:22;2409:275;;-1:-1:-1;2409:275:1:o;2689:183::-;2749:4;2782:18;2774:6;2771:30;2768:56;;;2804:18;;:::i;:::-;-1:-1:-1;2849:1:1;2845:14;2861:4;2841:25;;2689:183::o;2877:737::-;2931:5;2984:3;2977:4;2969:6;2965:17;2961:27;2951:55;;3002:1;2999;2992:12;2951:55;3038:6;3025:20;3064:4;3088:60;3104:43;3144:2;3104:43;:::i;:::-;3088:60;:::i;:::-;3182:15;;;3268:1;3264:10;;;;3252:23;;3248:32;;;3213:12;;;;3292:15;;;3289:35;;;3320:1;3317;3310:12;3289:35;3356:2;3348:6;3344:15;3368:217;3384:6;3379:3;3376:15;3368:217;;;3464:3;3451:17;3481:31;3506:5;3481:31;:::i;:::-;3525:18;;3563:12;;;;3401;;3368:217;;;-1:-1:-1;3603:5:1;2877:737;-1:-1:-1;;;;;;2877:737:1:o;3619:1138::-;3737:6;3745;3798:2;3786:9;3777:7;3773:23;3769:32;3766:52;;;3814:1;3811;3804:12;3766:52;3854:9;3841:23;3883:18;3924:2;3916:6;3913:14;3910:34;;;3940:1;3937;3930:12;3910:34;3963:61;4016:7;4007:6;3996:9;3992:22;3963:61;:::i;:::-;3953:71;;4043:2;4033:12;;4098:2;4087:9;4083:18;4070:32;4127:2;4117:8;4114:16;4111:36;;;4143:1;4140;4133:12;4111:36;4166:24;;;-1:-1:-1;4221:4:1;4213:13;;4209:27;-1:-1:-1;4199:55:1;;4250:1;4247;4240:12;4199:55;4286:2;4273:16;4309:60;4325:43;4365:2;4325:43;:::i;4309:60::-;4403:15;;;4485:1;4481:10;;;;4473:19;;4469:28;;;4434:12;;;;4509:19;;;4506:39;;;4541:1;4538;4531:12;4506:39;4565:11;;;;4585:142;4601:6;4596:3;4593:15;4585:142;;;4667:17;;4655:30;;4618:12;;;;4705;;;;4585:142;;;4746:5;4736:15;;;;;;;3619:1138;;;;;:::o;4762:456::-;4839:6;4847;4855;4908:2;4896:9;4887:7;4883:23;4879:32;4876:52;;;4924:1;4921;4914:12;4876:52;4963:9;4950:23;4982:31;5007:5;4982:31;:::i;:::-;5032:5;-1:-1:-1;5089:2:1;5074:18;;5061:32;5102:33;5061:32;5102:33;:::i;:::-;4762:456;;5154:7;;-1:-1:-1;;;5208:2:1;5193:18;;;;5180:32;;4762:456::o;5223:385::-;5309:6;5317;5325;5333;5386:3;5374:9;5365:7;5361:23;5357:33;5354:53;;;5403:1;5400;5393:12;5354:53;-1:-1:-1;;5426:23:1;;;5496:2;5481:18;;5468:32;;-1:-1:-1;5547:2:1;5532:18;;5519:32;;5598:2;5583:18;5570:32;;-1:-1:-1;5223:385:1;-1:-1:-1;5223:385:1:o;5802:160::-;5867:20;;5923:13;;5916:21;5906:32;;5896:60;;5952:1;5949;5942:12;5896:60;5802:160;;;:::o;5967:315::-;6032:6;6040;6093:2;6081:9;6072:7;6068:23;6064:32;6061:52;;;6109:1;6106;6099:12;6061:52;6148:9;6135:23;6167:31;6192:5;6167:31;:::i;:::-;6217:5;-1:-1:-1;6241:35:1;6272:2;6257:18;;6241:35;:::i;:::-;6231:45;;5967:315;;;;;:::o;6287:416::-;6380:6;6388;6441:2;6429:9;6420:7;6416:23;6412:32;6409:52;;;6457:1;6454;6447:12;6409:52;6497:9;6484:23;6530:18;6522:6;6519:30;6516:50;;;6562:1;6559;6552:12;6516:50;6585:61;6638:7;6629:6;6618:9;6614:22;6585:61;:::i;:::-;6575:71;6693:2;6678:18;;;;6665:32;;-1:-1:-1;;;;6287:416:1:o;6708:180::-;6764:6;6817:2;6805:9;6796:7;6792:23;6788:32;6785:52;;;6833:1;6830;6823:12;6785:52;6856:26;6872:9;6856:26;:::i;6893:388::-;6961:6;6969;7022:2;7010:9;7001:7;6997:23;6993:32;6990:52;;;7038:1;7035;7028:12;6990:52;7077:9;7064:23;7096:31;7121:5;7096:31;:::i;:::-;7146:5;-1:-1:-1;7203:2:1;7188:18;;7175:32;7216:33;7175:32;7216:33;:::i;:::-;7268:7;7258:17;;;6893:388;;;;;:::o;7286:380::-;7365:1;7361:12;;;;7408;;;7429:61;;7483:4;7475:6;7471:17;7461:27;;7429:61;7536:2;7528:6;7525:14;7505:18;7502:38;7499:161;;7582:10;7577:3;7573:20;7570:1;7563:31;7617:4;7614:1;7607:15;7645:4;7642:1;7635:15;7499:161;;7286:380;;;:::o;7671:356::-;7873:2;7855:21;;;7892:18;;;7885:30;7951:34;7946:2;7931:18;;7924:62;8018:2;8003:18;;7671:356::o;8032:127::-;8093:10;8088:3;8084:20;8081:1;8074:31;8124:4;8121:1;8114:15;8148:4;8145:1;8138:15;8164:422;8253:1;8296:5;8253:1;8310:270;8331:7;8321:8;8318:21;8310:270;;;8390:4;8386:1;8382:6;8378:17;8372:4;8369:27;8366:53;;;8399:18;;:::i;:::-;8449:7;8439:8;8435:22;8432:55;;;8469:16;;;;8432:55;8548:22;;;;8508:15;;;;8310:270;;;8314:3;8164:422;;;;;:::o;8591:806::-;8640:5;8670:8;8660:80;;-1:-1:-1;8711:1:1;8725:5;;8660:80;8759:4;8749:76;;-1:-1:-1;8796:1:1;8810:5;;8749:76;8841:4;8859:1;8854:59;;;;8927:1;8922:130;;;;8834:218;;8854:59;8884:1;8875:10;;8898:5;;;8922:130;8959:3;8949:8;8946:17;8943:43;;;8966:18;;:::i;:::-;-1:-1:-1;;9022:1:1;9008:16;;9037:5;;8834:218;;9136:2;9126:8;9123:16;9117:3;9111:4;9108:13;9104:36;9098:2;9088:8;9085:16;9080:2;9074:4;9071:12;9067:35;9064:77;9061:159;;;-1:-1:-1;9173:19:1;;;9205:5;;9061:159;9252:34;9277:8;9271:4;9252:34;:::i;:::-;9322:6;9318:1;9314:6;9310:19;9301:7;9298:32;9295:58;;;9333:18;;:::i;:::-;9371:20;;8591:806;-1:-1:-1;;;8591:806:1:o;9402:140::-;9460:5;9489:47;9530:4;9520:8;9516:19;9510:4;9489:47;:::i;9547:168::-;9620:9;;;9651;;9668:15;;;9662:22;;9648:37;9638:71;;9689:18;;:::i;9720:217::-;9760:1;9786;9776:132;;9830:10;9825:3;9821:20;9818:1;9811:31;9865:4;9862:1;9855:15;9893:4;9890:1;9883:15;9776:132;-1:-1:-1;9922:9:1;;9720:217::o;9942:409::-;10144:2;10126:21;;;10183:2;10163:18;;;10156:30;10222:34;10217:2;10202:18;;10195:62;-1:-1:-1;;;10288:2:1;10273:18;;10266:43;10341:3;10326:19;;9942:409::o;11562:127::-;11623:10;11618:3;11614:20;11611:1;11604:31;11654:4;11651:1;11644:15;11678:4;11675:1;11668:15;11694:135;11733:3;11754:17;;;11751:43;;11774:18;;:::i;:::-;-1:-1:-1;11821:1:1;11810:13;;11694:135::o;11834:125::-;11899:9;;;11920:10;;;11917:36;;;11933:18;;:::i;11964:353::-;12166:2;12148:21;;;12205:2;12185:18;;;12178:30;12244:31;12239:2;12224:18;;12217:59;12308:2;12293:18;;11964:353::o;13963:401::-;14165:2;14147:21;;;14204:2;14184:18;;;14177:30;14243:34;14238:2;14223:18;;14216:62;-1:-1:-1;;;14309:2:1;14294:18;;14287:35;14354:3;14339:19;;13963:401::o;14369:399::-;14571:2;14553:21;;;14610:2;14590:18;;;14583:30;14649:34;14644:2;14629:18;;14622:62;-1:-1:-1;;;14715:2:1;14700:18;;14693:33;14758:3;14743:19;;14369:399::o;16668:128::-;16735:9;;;16756:11;;;16753:37;;;16770:18;;:::i;18093:251::-;18163:6;18216:2;18204:9;18195:7;18191:23;18187:32;18184:52;;;18232:1;18229;18222:12;18184:52;18264:9;18258:16;18283:31;18308:5;18283:31;:::i;18349:980::-;18611:4;18659:3;18648:9;18644:19;18690:6;18679:9;18672:25;18716:2;18754:6;18749:2;18738:9;18734:18;18727:34;18797:3;18792:2;18781:9;18777:18;18770:31;18821:6;18856;18850:13;18887:6;18879;18872:22;18925:3;18914:9;18910:19;18903:26;;18964:2;18956:6;18952:15;18938:29;;18985:1;18995:195;19009:6;19006:1;19003:13;18995:195;;;19074:13;;-1:-1:-1;;;;;19070:39:1;19058:52;;19165:15;;;;19130:12;;;;19106:1;19024:9;18995:195;;;-1:-1:-1;;;;;;;19246:32:1;;;;19241:2;19226:18;;19219:60;-1:-1:-1;;;19310:3:1;19295:19;19288:35;19207:3;18349:980;-1:-1:-1;;;18349:980:1:o;19946:306::-;20034:6;20042;20050;20103:2;20091:9;20082:7;20078:23;20074:32;20071:52;;;20119:1;20116;20109:12;20071:52;20148:9;20142:16;20132:26;;20198:2;20187:9;20183:18;20177:25;20167:35;;20242:2;20231:9;20227:18;20221:25;20211:35;;19946:306;;;;;:::o
Swarm Source
ipfs://642788e231191c2d6a6806ddff33889d76ccb69acc1ab50968179d5bc873e9a0
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.