Overview
ETH Balance
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 552 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 155936667 | 792 days ago | IN | 0 ETH | 0.00019824 | ||||
| Approve | 108798100 | 940 days ago | IN | 0 ETH | 0.00008293 | ||||
| Approve | 108796564 | 940 days ago | IN | 0 ETH | 0.00005731 | ||||
| Approve | 107771161 | 943 days ago | IN | 0 ETH | 0.00003376 | ||||
| Approve | 99121450 | 969 days ago | IN | 0 ETH | 0.00006475 | ||||
| Approve | 96049800 | 978 days ago | IN | 0 ETH | 0.00008693 | ||||
| Approve | 87676609 | 1002 days ago | IN | 0 ETH | 0.00025321 | ||||
| Approve | 79850633 | 1025 days ago | IN | 0 ETH | 0.00004569 | ||||
| Approve | 79760367 | 1026 days ago | IN | 0 ETH | 0.00005269 | ||||
| Approve | 79568894 | 1026 days ago | IN | 0 ETH | 0.00003983 | ||||
| Approve | 79382257 | 1027 days ago | IN | 0 ETH | 0.00006735 | ||||
| Approve | 78913352 | 1028 days ago | IN | 0 ETH | 0.00004674 | ||||
| Approve | 78771485 | 1028 days ago | IN | 0 ETH | 0.00003981 | ||||
| Approve | 78762292 | 1028 days ago | IN | 0 ETH | 0.00004166 | ||||
| Approve | 78715265 | 1029 days ago | IN | 0 ETH | 0.00004509 | ||||
| Approve | 78700930 | 1029 days ago | IN | 0 ETH | 0.00004057 | ||||
| Approve | 78700629 | 1029 days ago | IN | 0 ETH | 0.00004057 | ||||
| Approve | 78687404 | 1029 days ago | IN | 0 ETH | 0.00004066 | ||||
| Approve | 78659086 | 1029 days ago | IN | 0 ETH | 0.00003973 | ||||
| Approve | 78655862 | 1029 days ago | IN | 0 ETH | 0.00003841 | ||||
| Approve | 78655252 | 1029 days ago | IN | 0 ETH | 0.00003799 | ||||
| Approve | 78644934 | 1029 days ago | IN | 0 ETH | 0.00003574 | ||||
| Approve | 78630017 | 1029 days ago | IN | 0 ETH | 0.00003587 | ||||
| Approve | 78605026 | 1029 days ago | IN | 0 ETH | 0.00004017 | ||||
| Approve | 78601756 | 1029 days ago | IN | 0 ETH | 0.00004113 |
Latest 25 internal transactions (View All)
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 107405943 | 944 days ago | 0.0003453 ETH | ||||
| 107405943 | 944 days ago | 1 wei | ||||
| 107405943 | 944 days ago | 0.00207182 ETH | ||||
| 107405943 | 944 days ago | 0.00241713 ETH | ||||
| 79382502 | 1027 days ago | 0.00052615 ETH | ||||
| 79382502 | 1027 days ago | 1 wei | ||||
| 79382502 | 1027 days ago | 0.00315695 ETH | ||||
| 79382502 | 1027 days ago | 0.00368311 ETH | ||||
| 78096024 | 1030 days ago | 0.00060289 ETH | ||||
| 78096024 | 1030 days ago | 1 wei | ||||
| 78096024 | 1030 days ago | 0.00361737 ETH | ||||
| 78096024 | 1030 days ago | 0.00422027 ETH | ||||
| 77786394 | 1031 days ago | 0.00073191 ETH | ||||
| 77786394 | 1031 days ago | 1 wei | ||||
| 77786394 | 1031 days ago | 0.00439147 ETH | ||||
| 77786394 | 1031 days ago | 0.00512338 ETH | ||||
| 77785060 | 1031 days ago | 0.0007472 ETH | ||||
| 77785060 | 1031 days ago | 1 wei | ||||
| 77785060 | 1031 days ago | 0.0044832 ETH | ||||
| 77785060 | 1031 days ago | 0.0052304 ETH | ||||
| 77628794 | 1032 days ago | 0.00075967 ETH | ||||
| 77628794 | 1032 days ago | 1 wei | ||||
| 77628794 | 1032 days ago | 0.00455807 ETH | ||||
| 77628794 | 1032 days ago | 0.00531775 ETH | ||||
| 77539872 | 1032 days ago | 0.00091557 ETH |
Cross-Chain Transactions
Contract Source Code (Solidity)
/**
*Submitted for verification at Arbiscan.io on 2023-04-04
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.16;
//
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
//
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
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 {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
//
// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)
/**
* @dev Contract module which allows children to implement an emergency stop
* mechanism that can be triggered by an authorized account.
*
* This module is used through inheritance. It will make available the
* modifiers `whenNotPaused` and `whenPaused`, which can be applied to
* the functions of your contract. Note that they will not be pausable by
* simply including this module, only once the modifiers are put in place.
*/
abstract contract Pausable is Context {
/**
* @dev Emitted when the pause is triggered by `account`.
*/
event Paused(address account);
/**
* @dev Emitted when the pause is lifted by `account`.
*/
event Unpaused(address account);
bool private _paused;
/**
* @dev Initializes the contract in unpaused state.
*/
constructor() {
_paused = false;
}
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*
* Requirements:
*
* - The contract must not be paused.
*/
modifier whenNotPaused() {
_requireNotPaused();
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*
* Requirements:
*
* - The contract must be paused.
*/
modifier whenPaused() {
_requirePaused();
_;
}
/**
* @dev Returns true if the contract is paused, and false otherwise.
*/
function paused() public view virtual returns (bool) {
return _paused;
}
/**
* @dev Throws if the contract is paused.
*/
function _requireNotPaused() internal view virtual {
require(!paused(), "Pausable: paused");
}
/**
* @dev Throws if the contract is not paused.
*/
function _requirePaused() internal view virtual {
require(paused(), "Pausable: not paused");
}
/**
* @dev Triggers stopped state.
*
* Requirements:
*
* - The contract must not be paused.
*/
function _pause() internal virtual whenNotPaused {
_paused = true;
emit Paused(_msgSender());
}
/**
* @dev Returns to normal state.
*
* Requirements:
*
* - The contract must be paused.
*/
function _unpause() internal virtual whenPaused {
_paused = false;
emit Unpaused(_msgSender());
}
}
//
// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)
// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.
/**
* @dev Wrappers over Solidity's arithmetic operations.
*
* NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
* now has built in overflow checking.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the subtraction of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
// 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 (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
/**
* @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) {
return a + b;
}
/**
* @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 a - b;
}
/**
* @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) {
return a * b;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator.
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting 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 a % b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {trySub}.
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
/**
* @dev Returns the integer division of two unsigned integers, reverting 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) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting with custom message when dividing by zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryMod}.
*
* 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) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
//
// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)
/**
* @dev Standard signed math utilities missing in the Solidity language.
*/
library SignedMath {
/**
* @dev Returns the largest of two signed numbers.
*/
function max(int256 a, int256 b) internal pure returns (int256) {
return a > b ? a : b;
}
/**
* @dev Returns the smallest of two signed numbers.
*/
function min(int256 a, int256 b) internal pure returns (int256) {
return a < b ? a : b;
}
/**
* @dev Returns the average of two signed numbers without overflow.
* The result is rounded towards zero.
*/
function average(int256 a, int256 b) internal pure returns (int256) {
// Formula from the book "Hacker's Delight"
int256 x = (a & b) + ((a ^ b) >> 1);
return x + (int256(uint256(x) >> 255) & (a ^ b));
}
/**
* @dev Returns the absolute unsigned value of a signed value.
*/
function abs(int256 n) internal pure returns (uint256) {
unchecked {
// must be unchecked in order to support `n = type(int256).min`
return uint256(n >= 0 ? n : -n);
}
}
}
//
interface IPancakePair {
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;
}
//
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @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);
/**
* @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 `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 amount
) external returns (bool);
}
//
interface IPancakeFactory {
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 IPancakeRouter01 {
function factory() external view returns (address);
function WETH() external view 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 IPancakeRouter02 is IPancakeRouter01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
//
interface IDividendDistributor {
function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
function setShare(address shareholder, uint256 amount) external;
function deposit(uint256 amount) external payable;
function process(uint256 gas) external;
}
abstract contract ERC20Detailed is IERC20 {
string public _name;
string public _symbol;
uint8 public _decimals;
constructor(
string memory name_,
string memory symbol_,
uint8 decimals_
) {
_name = name_;
_symbol = symbol_;
_decimals = decimals_;
}
function name() public view returns (string memory) {
return _name;
}
function symbol() public view returns (string memory) {
return _symbol;
}
function decimals() public view returns (uint8) {
return _decimals;
}
}
//
contract Seed is ERC20Detailed, Ownable, Pausable
{
using SafeMath for uint256;
using SignedMath for int256;
event LogRebase(uint256 indexed epoch, uint256 totalSupply);
IPancakePair public pairContract;
mapping(address => bool) public isFeeExempt;
modifier validRecipient(address to) {
require(to != address(0x0), "Null Address");
_;
}
uint256 public constant DECIMALS = 5;
uint256 public constant MAX_UINT256 = ~uint256(0);
uint256 public constant MAX_GONS = uint256(~uint192(0));
uint8 public constant RATE_DECIMALS = 7;
uint256 private constant INITIAL_FRAGMENTS_SUPPLY =
25 * 10**3 * 10**DECIMALS;
uint256 constant public RESOLUTION = 10000;
address public DEAD = 0x000000000000000000000000000000000000dEaD;
address public ZERO = 0x0000000000000000000000000000000000000000;
address public autoLiquidityReceiver;
address public treasuryReceiver;
address public insuranceFundReceiver;
address public firePit;
bool public swapEnabled;
IPancakeRouter02 public router;
address public pair;
address public feeToken;
address[] public feeTokenPath;
bool inSwap;
uint256 public ethRewardStore;
uint256 private constant TOTAL_GONS =
MAX_GONS - (MAX_GONS % INITIAL_FRAGMENTS_SUPPLY);
uint256 private constant MAX_SUPPLY = 325 * 10**7 * 10**DECIMALS;
bool public autoRebase;
bool public autoAddLiquidity;
uint256 public initRebaseStartTime;
uint256 public lastRebasedTime;
uint256 public lastAddLiquidityTime;
uint256 private _totalSupply;
uint256 private _gonsPerFragment;
mapping(address => uint256) private _gonBalances;
mapping(address => mapping(address => uint256)) private _allowedFragments;
mapping(address => bool) public blacklist;
uint256 public timeframeCurrent;
uint256 public timeframeExpiresAfter;
uint32 public maxTokenPerWalletPercent;
uint256 public timeframeQuotaInPercentage;
uint256 public timeframeQuotaOutPercentage;
mapping(uint256 => mapping(address => int256)) public inAmounts;
mapping(uint256 => mapping(address => uint256)) public outAmounts;
bool public ethRewardEnabled;
bool public disableAllFee;
address public distributorAddress;
uint256 public distributorGas;
address public devAddress;
uint256 public devFee;
uint256 public liquidityFeeOnBuy;
uint256 public treasuryFeeOnBuy;
uint256 public ethFeeOnBuy;
uint256 public insuranceFundFeeOnBuy;
uint256 public firePitFeeOnBuy;
uint256 public totalFeeOnBuy;
uint256 public liquidityFeeOnSell;
uint256 public treasuryFeeOnSell;
uint256 public ethFeeOnSell;
uint256 public insuranceFundFeeOnSell;
uint256 public firePitFeeOnSell;
uint256 public totalFeeOnSell;
uint256 public maxLPSwapThreshold;
uint256 public maxETHFeeSwapThreshold;
uint256 public rebasePeriod;
uint256 public rebaseRate;
modifier swapping() {
inSwap = true;
_;
inSwap = false;
}
constructor(string memory name_, string memory symbol_,
address router_,
address lr, address tr, address aifr, address fp, address dev)
ERC20Detailed(name_, symbol_, uint8(DECIMALS))
{
swapEnabled = true;
inSwap = false;
router = IPancakeRouter02(router_); // 0x1b02da8cb0d097eb8d57a175b88c7d8b47997506
pair = IPancakeFactory(router.factory()).createPair(
router.WETH(),
address(this)
);
autoLiquidityReceiver = lr;
treasuryReceiver = tr;
insuranceFundReceiver = aifr;
firePit = fp;
liquidityFeeOnBuy = 100;
treasuryFeeOnBuy = 250;
insuranceFundFeeOnBuy = 450; // here Dev fee are included here
ethFeeOnBuy = 0;
firePitFeeOnBuy = 0;
totalFeeOnBuy = liquidityFeeOnBuy.add(treasuryFeeOnBuy).add(insuranceFundFeeOnBuy).add(firePitFeeOnBuy).add(ethFeeOnBuy);
liquidityFeeOnSell = 100;
treasuryFeeOnSell = 550;
insuranceFundFeeOnSell = 450; // here Dev fee is included here
ethFeeOnSell = 500;
firePitFeeOnSell = 0;
totalFeeOnSell = liquidityFeeOnSell.add(treasuryFeeOnSell).add(insuranceFundFeeOnSell).add(firePitFeeOnSell).add(ethFeeOnSell);
devAddress = dev;
devFee = 0;
_allowedFragments[address(this)][address(router)] = MAX_UINT256;
pairContract = IPancakePair(pair);
maxTokenPerWalletPercent = 100; // 1%
timeframeQuotaInPercentage = 100; // 1%
timeframeQuotaOutPercentage = 100; // 1%
_totalSupply = INITIAL_FRAGMENTS_SUPPLY;
_gonBalances[treasuryReceiver] = TOTAL_GONS;
_gonsPerFragment = TOTAL_GONS.div(_totalSupply);
initRebaseStartTime = block.timestamp;
lastRebasedTime = block.timestamp;
autoRebase = false;
autoAddLiquidity = true;
ethRewardEnabled = true;
isFeeExempt[treasuryReceiver] = true;
isFeeExempt[autoLiquidityReceiver] = true;
isFeeExempt[insuranceFundReceiver] = true;
isFeeExempt[firePit] = true;
isFeeExempt[address(this)] = true;
isFeeExempt[dev] = true;
isFeeExempt[msg.sender] = true;
isFeeExempt[DEAD] = true;
isFeeExempt[ZERO] = true;
distributorGas = 500000;
rebasePeriod = 15 minutes;
rebaseRate = 1512;
emit Transfer(address(0x0), treasuryReceiver, _totalSupply);
timeframeExpiresAfter = 24 hours;
maxLPSwapThreshold = _totalSupply.mul(10).div(RESOLUTION);
maxETHFeeSwapThreshold = _totalSupply.mul(10).div(RESOLUTION);
}
function checkTimeframe() internal {
uint256 _currentTimeStamp1 = block.timestamp;
if (_currentTimeStamp1 > timeframeCurrent + timeframeExpiresAfter) {
timeframeCurrent = _currentTimeStamp1;
}
}
function rebase() internal {
if ( inSwap ) return;
uint256 _rebaseRate;
uint256 deltaTimeFromInit = block.timestamp - initRebaseStartTime;
uint256 deltaTime = block.timestamp - lastRebasedTime;
uint256 times = deltaTime.div(rebasePeriod);
uint256 epoch = times.mul(rebasePeriod);
if (deltaTimeFromInit < (365 days)) {
_rebaseRate = rebaseRate;
} else if (deltaTimeFromInit >= (365 days)) {
_rebaseRate = 211;
} else if (deltaTimeFromInit >= ((15 * 365 days) / 10)) {
_rebaseRate = 14;
} else if (deltaTimeFromInit >= (7 * 365 days)) {
_rebaseRate = 2;
}
uint256 i;
for (i = 0; i < times; i++) {
_totalSupply = _totalSupply
.mul((10**RATE_DECIMALS).add(_rebaseRate))
.div(10**RATE_DECIMALS);
}
_gonsPerFragment = TOTAL_GONS.div(_totalSupply);
lastRebasedTime = lastRebasedTime.add(times.mul(rebasePeriod));
pairContract.sync();
emit LogRebase(epoch, _totalSupply);
}
function transfer(address to, uint256 value)
external
override
validRecipient(to)
returns (bool)
{
_transferFrom(msg.sender, to, value);
return true;
}
function transferFrom(
address from,
address to,
uint256 value
) external override validRecipient(to) returns (bool) {
if (_allowedFragments[from][msg.sender] != MAX_UINT256) {
_allowedFragments[from][msg.sender] = _allowedFragments[from][
msg.sender
].sub(value, "Insufficient Allowance");
}
_transferFrom(from, to, value);
return true;
}
function _basicTransfer(
address from,
address to,
uint256 amount
) internal returns (bool) {
uint256 gonAmount = amount.mul(_gonsPerFragment);
_gonBalances[from] = _gonBalances[from].sub(gonAmount, "BasicTransfer: Not Enough Balance");
_gonBalances[to] = _gonBalances[to].add(gonAmount);
return true;
}
function _transferFrom(
address sender,
address recipient,
uint256 amount
) internal whenNotPaused returns (bool) {
require(!blacklist[sender] && !blacklist[recipient], "Blacklisted");
if (inSwap || disableAllFee) {
return _basicTransfer(sender, recipient, amount);
}
checkTimeframe();
inAmounts[timeframeCurrent][recipient] += int256(amount);
outAmounts[timeframeCurrent][sender] += amount;
if (!isFeeExempt[recipient] && recipient != pair) {
// Revert if the receiving wallet exceed the maximum a wallet can hold
require(
getMaxTokenPerWallet() >= balanceOf(recipient) + amount,
"Cannot transfer to this wallet, it would exceed the limit per wallet. [balanceOf > maxTokenPerWallet]"
);
// Revert if receiving wallet exceed daily limit
require(
getRemainingTransfersIn(recipient) >= 0,
"Cannot transfer to this wallet for this timeframe, it would exceed the limit per timeframe. [inAmount > timeframeLimit]"
);
}
if (!isFeeExempt[sender] && sender != pair) {
// Revert if the sending wallet exceed the maximum transfer limit per day
// We take into calculation the number ever bought of tokens available at this point
require(
getRemainingTransfersOut(sender) >= 0,
"Cannot transfer out from this wallet for this timeframe, it would exceed the limit per timeframe. [outAmount > timeframeLimit]"
);
}
if (shouldRebase()) {
rebase();
}
if (shouldAddLiquidity()) {
addLiquidity();
}
uint256 gonAmount = amount.mul(_gonsPerFragment);
uint256 gonAmountReceived = shouldTakeFee(sender, recipient)
? takeFee(sender, recipient, gonAmount)
: gonAmount;
if (distributorAddress != address(0) && ethRewardEnabled) {
try IDividendDistributor(distributorAddress).setShare(sender, _gonBalances[sender].sub(gonAmount, "Dividend: sender balance is not enough").div(_gonsPerFragment)) {} catch {}
try IDividendDistributor(distributorAddress).setShare(recipient, _gonBalances[recipient].add(gonAmountReceived).div(_gonsPerFragment)) {} catch {}
}
if (shouldSwapBack()) {
swapBack(recipient == pair);
}
_gonBalances[sender] = _gonBalances[sender].sub(gonAmount, "_transferFrom: sender balance is not enough");
_gonBalances[recipient] = _gonBalances[recipient].add(
gonAmountReceived
);
if (distributorAddress != address(0) && ethRewardEnabled) {
try IDividendDistributor(distributorAddress).process(distributorGas) {} catch {}
}
emit Transfer(
sender,
recipient,
gonAmountReceived.div(_gonsPerFragment)
);
return true;
}
function takeFee(
address sender,
address recipient,
uint256 gonAmount
) internal returns (uint256) {
uint256 _liquidityFee;
uint256 _treasuryFee;
uint256 _ethFee;
uint256 _insuranceFundFee;
uint256 _firePitFee;
uint256 _totalFee;
if (recipient == pair) { // sell tax
_liquidityFee = liquidityFeeOnSell;
_treasuryFee = treasuryFeeOnSell;
_ethFee = ethFeeOnSell;
_insuranceFundFee = insuranceFundFeeOnSell;
_firePitFee = firePitFeeOnSell;
_totalFee = totalFeeOnSell;
} else { // buy tax
_liquidityFee = liquidityFeeOnBuy;
_treasuryFee = treasuryFeeOnBuy;
_ethFee = ethFeeOnBuy;
_insuranceFundFee = insuranceFundFeeOnBuy;
_firePitFee = firePitFeeOnBuy;
_totalFee = totalFeeOnBuy;
}
uint256 feeAmount = gonAmount.div(RESOLUTION).mul(_totalFee);
uint256 _firePitFeeAmount = gonAmount.div(RESOLUTION).mul(_firePitFee);
_gonBalances[firePit] = _gonBalances[firePit].add(_firePitFeeAmount);
emit Transfer(sender, firePit, _firePitFeeAmount.div(_gonsPerFragment));
uint256 _thisFee = gonAmount.div(RESOLUTION).mul(_treasuryFee.add(_insuranceFundFee).add(_ethFee));
_gonBalances[address(this)] = _gonBalances[address(this)].add(_thisFee);
emit Transfer(sender, address(this), _thisFee.div(_gonsPerFragment));
uint256 _lpFee = gonAmount.div(RESOLUTION).mul(_liquidityFee);
_gonBalances[autoLiquidityReceiver] = _gonBalances[autoLiquidityReceiver].add(_lpFee);
emit Transfer(sender, autoLiquidityReceiver, _lpFee.div(_gonsPerFragment));
return gonAmount.sub(feeAmount, "fee value exceeds");
}
function addLiquidity() internal swapping {
uint256 autoLiquidityAmount = _gonBalances[autoLiquidityReceiver].div(
_gonsPerFragment
);
if (autoLiquidityAmount < maxLPSwapThreshold || autoLiquidityAmount == 0) return;
_gonBalances[address(this)] = _gonBalances[address(this)].add(
_gonBalances[autoLiquidityReceiver]
);
_gonBalances[autoLiquidityReceiver] = 0;
uint256 amountToLiquify = autoLiquidityAmount.div(2);
uint256 amountToSwap = autoLiquidityAmount.sub(amountToLiquify, "addLiquidity: liquidity balance is not enough");
if( amountToSwap == 0 ) {
return;
}
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = router.WETH();
uint256 balanceBefore = address(this).balance;
router.swapExactTokensForETHSupportingFeeOnTransferTokens(
amountToSwap,
0,
path,
address(this),
block.timestamp
);
uint256 amountETHLiquidity = address(this).balance.sub(balanceBefore, "addLiquidity: ETH balance is not enough");
if (amountToLiquify > 0 && amountETHLiquidity > 0) {
router.addLiquidityETH{value: amountETHLiquidity}(
address(this),
amountToLiquify,
0,
0,
autoLiquidityReceiver,
block.timestamp
);
}
lastAddLiquidityTime = block.timestamp;
}
function swapBack(bool _isSelling) internal swapping {
uint256 amountToSwap = _gonBalances[address(this)].div(_gonsPerFragment);
if( amountToSwap < maxETHFeeSwapThreshold || amountToSwap == 0) return;
uint256 balanceBefore = address(this).balance;
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = router.WETH();
router.swapExactTokensForETHSupportingFeeOnTransferTokens(
amountToSwap,
0,
path,
address(this),
block.timestamp
);
uint256 amountETHToTreasuryAndSIF = address(this).balance.sub(balanceBefore, "swapBack: ETH balance is not enough");
uint256 _treasuryFee;
uint256 _insuranceFundFee;
uint256 _ethFee;
if (_isSelling) {
_treasuryFee = treasuryFeeOnSell;
_insuranceFundFee = insuranceFundFeeOnSell;
_ethFee = ethFeeOnSell;
} else {
_treasuryFee = treasuryFeeOnBuy;
_insuranceFundFee = insuranceFundFeeOnBuy;
_ethFee = ethFeeOnBuy;
}
if (!ethRewardEnabled) {
_ethFee = 0;
}
uint256 _denom = _treasuryFee.add(_insuranceFundFee).add(_ethFee);
uint256 _treasuryFeeValue = amountETHToTreasuryAndSIF.mul(_treasuryFee).div(_denom);
if (_treasuryFeeValue > 0) {
(bool success, ) = payable(treasuryReceiver).call{
value: _treasuryFeeValue,
gas: 30000
}("");
require(success == true, "Error Paying Treasury");
}
uint256 _totalETHFee = amountETHToTreasuryAndSIF.mul(_ethFee).div(_denom);
uint256 _insuranceFeeValue = amountETHToTreasuryAndSIF.sub(_treasuryFeeValue).sub(_totalETHFee);
if (devAddress != address(0) && devFee > 0) {
uint256 _devFeeValue = amountETHToTreasuryAndSIF.mul(devFee).div(_denom);
_insuranceFeeValue = _insuranceFeeValue.sub(_devFeeValue, "AWF sub 1 error");
(bool success, ) = payable(devAddress).call{
value: _devFeeValue,
gas: 30000
}("");
require(success == true, "Error Paying Dev");
}
if (_insuranceFeeValue > 0) {
(bool success, ) = payable(insuranceFundReceiver).call{
value: _insuranceFeeValue,
gas: 30000
}("");
require(success == true, "Error Paying Insurance Fund");
}
ethRewardStore = ethRewardStore.add(_totalETHFee);
if (distributorAddress != address(0) && _totalETHFee > 0 && feeToken != address(0)) {
uint256 beforeAmount = IERC20(feeToken).balanceOf(address(this));
IPancakeRouter02(router).swapExactETHForTokensSupportingFeeOnTransferTokens{value: _totalETHFee}(
0,
feeTokenPath,
address(this),
block.timestamp
);
uint256 _feeTokenAmount = IERC20(feeToken).balanceOf(address(this)) - beforeAmount;
IERC20(feeToken).approve(distributorAddress, _feeTokenAmount);
try IDividendDistributor(distributorAddress).deposit(_feeTokenAmount) {} catch {}
}
}
function withdrawAllToTreasury() external swapping onlyOwner {
if (address(this).balance > 0) {
(bool success, ) = payable(treasuryReceiver).call{value: address(this).balance}("");
require(success, "Unable To Withdraw ETH");
}
uint256 amountToSwap = _gonBalances[address(this)].div(_gonsPerFragment);
if (amountToSwap > 0) {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = router.WETH();
router.swapExactTokensForETHSupportingFeeOnTransferTokens(
amountToSwap,
0,
path,
treasuryReceiver,
block.timestamp
);
}
}
function shouldTakeFee(address from, address to)
internal
view
returns (bool)
{
return
(pair == from && !isFeeExempt[to]) || (pair == to && !isFeeExempt[from]);
}
function shouldRebase() internal view returns (bool) {
return
autoRebase &&
(_totalSupply < MAX_SUPPLY) &&
msg.sender != pair &&
!inSwap &&
block.timestamp >= (lastRebasedTime + rebasePeriod);
}
function shouldAddLiquidity() internal view returns (bool) {
return
autoAddLiquidity &&
!inSwap &&
msg.sender != pair &&
block.timestamp >= (lastAddLiquidityTime + 2 days);
}
function shouldSwapBack() internal view returns (bool) {
return
!inSwap &&
msg.sender != pair ;
}
function setAutoRebase(bool _flag) external onlyOwner {
if (_flag) {
autoRebase = _flag;
lastRebasedTime = block.timestamp;
} else {
autoRebase = _flag;
}
}
function setAutoAddLiquidity(bool _flag) external onlyOwner {
if(_flag) {
autoAddLiquidity = _flag;
lastAddLiquidityTime = block.timestamp;
} else {
autoAddLiquidity = _flag;
}
}
function allowance(address owner_, address spender)
external
view
override
returns (uint256)
{
return _allowedFragments[owner_][spender];
}
function decreaseAllowance(address spender, uint256 subtractedValue)
external
returns (bool)
{
uint256 oldValue = _allowedFragments[msg.sender][spender];
if (subtractedValue >= oldValue) {
_allowedFragments[msg.sender][spender] = 0;
} else {
_allowedFragments[msg.sender][spender] = oldValue.sub(
subtractedValue
);
}
emit Approval(
msg.sender,
spender,
_allowedFragments[msg.sender][spender]
);
return true;
}
function increaseAllowance(address spender, uint256 addedValue)
external
returns (bool)
{
_allowedFragments[msg.sender][spender] = _allowedFragments[msg.sender][
spender
].add(addedValue);
emit Approval(
msg.sender,
spender,
_allowedFragments[msg.sender][spender]
);
return true;
}
function approve(address spender, uint256 value)
external
override
returns (bool)
{
_allowedFragments[msg.sender][spender] = value;
emit Approval(msg.sender, spender, value);
return true;
}
function getCirculatingSupply() public view returns (uint256) {
return
(TOTAL_GONS.sub(_gonBalances[DEAD]).sub(_gonBalances[ZERO])).div(_gonsPerFragment);
}
function isNotInSwap() external view returns (bool) {
return !inSwap;
}
function manualSync() external {
IPancakePair(pair).sync();
}
function setFeeReceivers(
address _autoLiquidityReceiver,
address _treasuryReceiver,
address _insuranceFundReceiver,
address _firePit
) external onlyOwner {
autoLiquidityReceiver = _autoLiquidityReceiver;
treasuryReceiver = _treasuryReceiver;
insuranceFundReceiver = _insuranceFundReceiver;
firePit = _firePit;
isFeeExempt[treasuryReceiver] = true;
isFeeExempt[autoLiquidityReceiver] = true;
isFeeExempt[insuranceFundReceiver] = true;
isFeeExempt[firePit] = true;
}
function getLiquidityBacking(uint256 accuracy)
public
view
returns (uint256)
{
uint256 liquidityBalance = _gonBalances[pair].div(_gonsPerFragment);
return
accuracy.mul(liquidityBalance.mul(2)).div(getCirculatingSupply());
}
function updateFeeExempt(address[] calldata wallets, bool set) external onlyOwner {
require(wallets.length > 0, "Invalid Parameters");
uint256 i;
for (i = 0; i < wallets.length; i ++) {
isFeeExempt[wallets[i]] = set;
}
}
function setBotBlacklist(address[] calldata botAddresses, bool set) external onlyOwner {
require(botAddresses.length > 0, "Invalid Parameters");
uint256 i;
for (i = 0; i < botAddresses.length; i ++) {
blacklist[botAddresses[i]] = set;
}
}
function setLP(address _address) external onlyOwner {
pairContract = IPancakePair(_address);
}
function setFeeTokenPath(address[] calldata _path) external onlyOwner {
require(_path.length >= 2 && _path[0] == router.WETH());
feeTokenPath = _path;
feeToken = _path[_path.length - 1];
}
function totalSupply() external view override returns (uint256) {
return _totalSupply;
}
function balanceOf(address who) public view override returns (uint256) {
return _gonBalances[who].div(_gonsPerFragment);
}
receive() external payable {}
function getMaxTokenPerWallet() public view returns (uint256) {
return (_totalSupply * maxTokenPerWalletPercent) / RESOLUTION;
}
function setMaxTokenPerWalletPercent(uint32 _maxTokenPerWalletPercent)
public
onlyOwner
{
require(
_maxTokenPerWalletPercent > 0,
"Max token per wallet percentage cannot be 0"
);
// Modifying this with a lower value won't brick wallets
// It will just prevent transferring / buys to be made for them
maxTokenPerWalletPercent = _maxTokenPerWalletPercent;
require(
maxTokenPerWalletPercent >= timeframeQuotaInPercentage,
"Max token per wallet must be above or equal to timeframeQuotaIn"
);
}
function getTimeframeQuotaIn() public view returns (uint256) {
return (_totalSupply * timeframeQuotaInPercentage) / RESOLUTION;
}
function getTimeframeQuotaOut() public view returns (uint256) {
return (_totalSupply * timeframeQuotaOutPercentage) / RESOLUTION;
}
function getOverviewOf(address account)
external
view
returns (
uint256,
uint256,
uint256,
int256,
int256,
uint256
)
{
return (
timeframeCurrent + timeframeExpiresAfter,
timeframeQuotaInPercentage,
timeframeQuotaOutPercentage,
getRemainingTransfersIn(account),
getRemainingTransfersOut(account),
block.timestamp
);
}
function setTimeframeExpiresAfter(uint256 _timeframeExpiresAfter)
public
onlyOwner
{
require(
_timeframeExpiresAfter > 0,
"Timeframe expiration cannot be 0"
);
timeframeExpiresAfter = _timeframeExpiresAfter;
}
function setTimeframeQuotaIn(uint256 _timeframeQuotaIn) public onlyOwner {
require(
_timeframeQuotaIn > 0,
"Timeframe token quota in cannot be 0"
);
timeframeQuotaInPercentage = _timeframeQuotaIn;
}
function setTimeframeQuotaOut(uint256 _timeframeQuotaOut) public onlyOwner {
require(
_timeframeQuotaOut > 0,
"Timeframe token quota out cannot be 0"
);
timeframeQuotaOutPercentage = _timeframeQuotaOut;
}
function getRemainingTransfersIn(address account)
private
view
returns (int256)
{
return
int256(getTimeframeQuotaIn()) - inAmounts[timeframeCurrent][account];
}
function getRemainingTransfersOut(address account)
private
view
returns (int256)
{
return
int256(getTimeframeQuotaOut()) - int256(outAmounts[timeframeCurrent][account]);
}
function setFeePercentagesOnBuy(uint256 _liquidityFee, uint256 _treasuryFee, uint256 _insuranceFundFee, uint256 _ethFee,
uint256 _firePitFee) public onlyOwner {
liquidityFeeOnBuy = _liquidityFee;
treasuryFeeOnBuy = _treasuryFee;
insuranceFundFeeOnBuy = _insuranceFundFee;
ethFeeOnBuy = _ethFee;
firePitFeeOnBuy = _firePitFee;
totalFeeOnBuy = liquidityFeeOnBuy.add(treasuryFeeOnBuy).add(insuranceFundFeeOnBuy).add(ethFeeOnBuy).add(firePitFeeOnBuy);
}
function setFeePercentagesOnSell(uint256 _liquidityFee, uint256 _treasuryFee, uint256 _insuranceFundFee, uint256 _ethFee,
uint256 _firePitFee) public onlyOwner {
liquidityFeeOnSell = _liquidityFee;
treasuryFeeOnSell = _treasuryFee;
insuranceFundFeeOnSell = _insuranceFundFee;
ethFeeOnSell = _ethFee;
firePitFeeOnSell = _firePitFee;
totalFeeOnSell = liquidityFeeOnSell.add(treasuryFeeOnSell).add(insuranceFundFeeOnSell).add(ethFeeOnSell).add(firePitFeeOnSell);
}
function setSwapThresholdValues(uint256 _LPSwapThreshold, uint256 _ETHSwapThreshold) external onlyOwner {
maxLPSwapThreshold = _LPSwapThreshold;
maxETHFeeSwapThreshold = _ETHSwapThreshold;
}
function pause(bool _set) external onlyOwner {
if (_set) {
_pause();
} else {
_unpause();
}
}
function setETHRewardEnabled(bool _set) external onlyOwner {
ethRewardEnabled = _set;
}
function getReserve1() external view returns (uint256) {
return _gonsPerFragment;
}
function getReserve2(address who) public view returns (uint256) {
return _gonBalances[who];
}
function setDisableAllFee(bool _bSet) external onlyOwner {
disableAllFee = _bSet;
}
function setDistributor(address _distributorAddress) external onlyOwner {
distributorAddress = _distributorAddress;
}
function setDistributeGas(uint256 _gasLimit) external onlyOwner {
distributorGas = _gasLimit;
}
function setDevInfo(address _devAddress, uint256 _devFee) external onlyOwner {
devAddress = _devAddress;
devFee = _devFee;
}
function updateRebaseParams(uint256 _rebasePeriod, uint256 _rebaseRate) external onlyOwner {
rebasePeriod = _rebasePeriod;
rebaseRate = _rebaseRate;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address","name":"router_","type":"address"},{"internalType":"address","name":"lr","type":"address"},{"internalType":"address","name":"tr","type":"address"},{"internalType":"address","name":"aifr","type":"address"},{"internalType":"address","name":"fp","type":"address"},{"internalType":"address","name":"dev","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"LogRebase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DECIMALS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_GONS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_UINT256","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_DECIMALS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESOLUTION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ZERO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoAddLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoRebase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableAllFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethRewardEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethRewardStore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"feeTokenPath","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"firePit","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"firePitFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"firePitFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTokenPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getOverviewOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserve1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"getReserve2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimeframeQuotaIn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTimeframeQuotaOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"inAmounts","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initRebaseStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"insuranceFundFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"insuranceFundFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"insuranceFundReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNotInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastAddLiquidityTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRebasedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxETHFeeSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxLPSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenPerWalletPercent","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"outAmounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairContract","outputs":[{"internalType":"contract IPancakePair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_set","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebasePeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebaseRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IPancakeRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setAutoAddLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_flag","type":"bool"}],"name":"setAutoRebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"botAddresses","type":"address[]"},{"internalType":"bool","name":"set","type":"bool"}],"name":"setBotBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devAddress","type":"address"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"setDevInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_bSet","type":"bool"}],"name":"setDisableAllFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_gasLimit","type":"uint256"}],"name":"setDistributeGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_distributorAddress","type":"address"}],"name":"setDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_set","type":"bool"}],"name":"setETHRewardEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_insuranceFundFee","type":"uint256"},{"internalType":"uint256","name":"_ethFee","type":"uint256"},{"internalType":"uint256","name":"_firePitFee","type":"uint256"}],"name":"setFeePercentagesOnBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_insuranceFundFee","type":"uint256"},{"internalType":"uint256","name":"_ethFee","type":"uint256"},{"internalType":"uint256","name":"_firePitFee","type":"uint256"}],"name":"setFeePercentagesOnSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_treasuryReceiver","type":"address"},{"internalType":"address","name":"_insuranceFundReceiver","type":"address"},{"internalType":"address","name":"_firePit","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_path","type":"address[]"}],"name":"setFeeTokenPath","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_maxTokenPerWalletPercent","type":"uint32"}],"name":"setMaxTokenPerWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_LPSwapThreshold","type":"uint256"},{"internalType":"uint256","name":"_ETHSwapThreshold","type":"uint256"}],"name":"setSwapThresholdValues","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timeframeExpiresAfter","type":"uint256"}],"name":"setTimeframeExpiresAfter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timeframeQuotaIn","type":"uint256"}],"name":"setTimeframeQuotaIn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timeframeQuotaOut","type":"uint256"}],"name":"setTimeframeQuotaOut","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":"timeframeCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeframeExpiresAfter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeframeQuotaInPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeframeQuotaOutPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"set","type":"bool"}],"name":"updateFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rebasePeriod","type":"uint256"},{"internalType":"uint256","name":"_rebaseRate","type":"uint256"}],"name":"updateRebaseParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAllToTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
6080604052600580546001600160a01b031990811661dead179091556006805490911690553480156200003157600080fd5b50604051620053453803806200534583398101604081905262000054916200079b565b87876005600062000066848262000904565b50600162000075838262000904565b506002805460ff191660ff92909216919091179055506200009f9050620000993390565b6200062c565b6002805460ff60a81b19169055600a805460ff60a01b1916600160a01b179055600f805460ff19169055600b80546001600160a01b0388166001600160a01b031990911681179091556040805163c45a015560e01b8152905163c45a0155916004818101926020929091908290030181865afa15801562000124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014a9190620009d0565b6001600160a01b031663c9c65396600b60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d29190620009d0565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200021f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002459190620009d0565b600c80546001600160a01b03199081166001600160a01b0393841617909155600780548216888416179055600880548216878416179055600980548216868416179055600a80549091169184169190911790556064602581905560fa60268190556101c26028819055600060278190556029819055620002f3939092620002df928492849283919062000686602090811b6200235617901c565b6200068660201b620023561790919060201c565b602a556064602b819055610226602c8190556101c2602e8190556101f4602d8190556000602f81905562000342949193620002df93919284929183919062000686602090811b6200235617901c565b603055602380546001600160a01b038084166001600160a01b03199283161790925560006024819055308152601860209081526040808320600b548616845290915290206000199055600c54600380549092169216919091179055601c805463ffffffff19166064908117909155601d819055601e55620003c66005600a62000b01565b620003d4906161a862000b0f565b601555620003e56005600a62000b01565b620003f3906161a862000b0f565b62000406906001600160c01b0362000b47565b62000419906001600160c01b0362000b5e565b6008546001600160a01b031660009081526017602052604090205560155462000492906200044a6005600a62000b01565b62000458906161a862000b0f565b6200046b906001600160c01b0362000b47565b6200047e906001600160c01b0362000b5e565b6200069d60201b620023621790919060201c565b6016554260128190556013556011805461ffff19166101001790556021805460ff199081166001908117909255600880546001600160a01b039081166000908152600460205260408082208054861687179055600754831682528082208054861687179055600954831682528082208054861687179055600a5483168252808220805486168717905530825280822080548616871790558683168252808220805486168717905533825280822080548616871790556005548316825280822080548616871790556006548316825280822080549095169095179093556207a1206022556103846033556105e8603455905460155493519116927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620005ba91815260200190565b60405180910390a362015180601b81905550620005f06127106200047e600a601554620006ab60201b6200236e1790919060201c565b6031819055506200061a6127106200047e600a601554620006ab60201b6200236e1790919060201c565b6032555062000ba19650505050505050565b600280546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600062000694828462000b74565b90505b92915050565b600062000694828462000b8a565b600062000694828462000b0f565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620006e157600080fd5b81516001600160401b0380821115620006fe57620006fe620006b9565b604051601f8301601f19908116603f01168101908282118183101715620007295762000729620006b9565b816040528381526020925086838588010111156200074657600080fd5b600091505b838210156200076a57858201830151818301840152908201906200074b565b600093810190920192909252949350505050565b80516001600160a01b03811681146200079657600080fd5b919050565b600080600080600080600080610100898b031215620007b957600080fd5b88516001600160401b0380821115620007d157600080fd5b620007df8c838d01620006cf565b995060208b0151915080821115620007f657600080fd5b50620008058b828c01620006cf565b9750506200081660408a016200077e565b95506200082660608a016200077e565b94506200083660808a016200077e565b93506200084660a08a016200077e565b92506200085660c08a016200077e565b91506200086660e08a016200077e565b90509295985092959890939650565b600181811c908216806200088a57607f821691505b602082108103620008ab57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620008ff57600081815260208120601f850160051c81016020861015620008da5750805b601f850160051c820191505b81811015620008fb57828155600101620008e6565b5050505b505050565b81516001600160401b03811115620009205762000920620006b9565b620009388162000931845462000875565b84620008b1565b602080601f831160018114620009705760008415620009575750858301515b600019600386901b1c1916600185901b178555620008fb565b600085815260208120601f198616915b82811015620009a15788860151825594840194600190910190840162000980565b5085821015620009c05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620009e357600080fd5b62000694826200077e565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000a4557816000190482111562000a295762000a29620009ee565b8085161562000a3757918102915b93841c939080029062000a09565b509250929050565b60008262000a5e5750600162000697565b8162000a6d5750600062000697565b816001811462000a86576002811462000a915762000ab1565b600191505062000697565b60ff84111562000aa55762000aa5620009ee565b50506001821b62000697565b5060208310610133831016604e8410600b841016171562000ad6575081810a62000697565b62000ae2838362000a04565b806000190482111562000af95762000af9620009ee565b029392505050565b600062000694838362000a4d565b600081600019048311821515161562000b2c5762000b2c620009ee565b500290565b634e487b7160e01b600052601260045260246000fd5b60008262000b595762000b5962000b31565b500690565b81810381811115620006975762000697620009ee565b80820180821115620006975762000697620009ee565b60008262000b9c5762000b9c62000b31565b500490565b6147948062000bb16000396000f3fe6080604052600436106105ff5760003560e01c80637cb95d001161030e578063bd5955811161019b578063d8f91a04116100e7578063f2fde38b116100a0578063f887ea401161007a578063f887ea40146111b8578063f9402620146111d8578063f9f92be41461120a578063fec4d0b41461123a57600080fd5b8063f2fde38b14611162578063f651c98c14611182578063f7a5a9901461119857600080fd5b8063d8f91a0414611087578063dd62ed3e146110a7578063e15beb80146110ed578063e388ec2a1461110d578063ebd604c514611123578063efd462bb1461114357600080fd5b8063ca33e64c11610154578063d28d88521161012e578063d28d885214611026578063d3a025bb1461103b578063d465eeff14611051578063d51ed1c81461106757600080fd5b8063ca33e64c14610fd0578063cdd4bd7914610ff0578063cfbac92f1461100657600080fd5b8063bd59558114610f3a578063c054318114610f4f578063c0b6254c14610f6f578063c73c701d14610f85578063c834a1cd14610fa0578063c91bc8a714610fba57600080fd5b806395d89b411161025a578063a8aa1b3111610213578063b09f1266116101ed578063b09f126614610ed9578063b568231814610eee578063ba71c44e14610f0e578063bbb2b55014610f2457600080fd5b8063a8aa1b3114610e84578063a9059cbb14610ea4578063af52002514610ec457600080fd5b806395d89b4114610de95780639d12ec0114610dfe5780639d67f4dd14610e145780639ee9aaae14610e29578063a457c2d714610e3e578063a51af4c514610e5e57600080fd5b806389c88c76116102c75780639079f932116102a15780639079f93214610d6557806390dc67e614610d7f578063949b8b1f14610d9457806394e0a54214610db357600080fd5b806389c88c7614610d0c5780638da5cb5b14610d2257806390248b8314610d4557600080fd5b80637cb95d0014610c715780637fa08dc614610c87578063811b1a5414610ca7578063824e460514610cbd5780638344dce914610cd357806383b4ac6814610cf357600080fd5b806349a8065d1161048c578063647846a5116103d8578063715018a61161039157806375619ab51161036b57806375619ab514610bef57806375f3c64714610c0f578063774f626114610c455780637b3c83b114610c5b57600080fd5b8063715018a614610ba55780637515cd6614610bba578063753d02a114610bda57600080fd5b8063647846a514610aee578063679aa90014610b0e5780636827e76414610b2e57806369cdbd1d14610b445780636ddd171314610b6457806370a0823114610b8557600080fd5b80635828356b116104455780635c975abb1161041f5780635c975abb14610a8d5780636085e22014610aac57806360e7196214610ac25780636221723114610ad857600080fd5b80635828356b14610a4257806358fa63ca14610a585780635a604c5214610a7857600080fd5b806349a8065d1461098c57806349d98142146109ac5780634d709adf146109cc578063509af03b146109ec57806352596e6e14610a0c578063552f888a14610a2c57600080fd5b80632ce86fbf1161054b57806333a581d2116105045780633ad10ef6116104de5780633ad10ef6146108e45780633bec1a87146109045780633c8e556d1461093c5780633f4218e01461095c57600080fd5b806333a581d21461089857806339509351146108ae578063398004ad146108ce57600080fd5b80632ce86fbf146107ed5780632e0f2625146108035780632f34d28214610818578063313ce5671461083857806331bb88c41461085e57806332424aa31461087e57600080fd5b80630c995801116105b85780631d89f1de116105925780631d89f1de146107785780631da11fd41461079857806323b872dd146107b85780632b112e49146107d857600080fd5b80630c9958011461070057806318160ddd1461074d5780631d88feeb1461076257600080fd5b806302329a291461060b57806303fd2a451461062d57806306fdde031461066a57806308b1fd8f1461068c578063095ea7b3146106ac5780630a20eed0146106dc57600080fd5b3661060657005b600080fd5b34801561061757600080fd5b5061062b610626366004613f66565b611250565b005b34801561063957600080fd5b5060055461064d906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561067657600080fd5b5061067f611271565b6040516106619190613f83565b34801561069857600080fd5b5060085461064d906001600160a01b031681565b3480156106b857600080fd5b506106cc6106c7366004613fe6565b611303565b6040519015158152602001610661565b3480156106e857600080fd5b506106f260285481565b604051908152602001610661565b34801561070c57600080fd5b5061072061071b366004614012565b611370565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610661565b34801561075957600080fd5b506015546106f2565b34801561076e57600080fd5b506106f260315481565b34801561078457600080fd5b5061062b610793366004613f66565b6113b6565b3480156107a457600080fd5b5061062b6107b336600461402f565b6113d8565b3480156107c457600080fd5b506106cc6107d336600461406a565b61141b565b3480156107e457600080fd5b506106f261152c565b3480156107f957600080fd5b506106f2602b5481565b34801561080f57600080fd5b506106f2600581565b34801561082457600080fd5b5061062b610833366004614012565b6115b6565b34801561084457600080fd5b5060025460ff165b60405160ff9091168152602001610661565b34801561086a57600080fd5b5061062b6108793660046140ab565b6115e0565b34801561088a57600080fd5b5060025461084c9060ff1681565b3480156108a457600080fd5b506106f260001981565b3480156108ba57600080fd5b506106cc6108c9366004613fe6565b6116e1565b3480156108da57600080fd5b506106f2602e5481565b3480156108f057600080fd5b5060235461064d906001600160a01b031681565b34801561091057600080fd5b506106f261091f3660046140d1565b601f60209081526000928352604080842090915290825290205481565b34801561094857600080fd5b5061062b610957366004614101565b611766565b34801561096857600080fd5b506106cc610977366004614012565b60046020526000908152604090205460ff1681565b34801561099857600080fd5b5061062b6109a736600461415d565b61180e565b3480156109b857600080fd5b50600a5461064d906001600160a01b031681565b3480156109d857600080fd5b5060035461064d906001600160a01b031681565b3480156109f857600080fd5b5061062b610a07366004614176565b61186b565b348015610a1857600080fd5b5060095461064d906001600160a01b031681565b348015610a3857600080fd5b506106f261271081565b348015610a4e57600080fd5b506106f260335481565b348015610a6457600080fd5b5060065461064d906001600160a01b031681565b348015610a8457600080fd5b5061084c600781565b348015610a9957600080fd5b50600254600160a81b900460ff166106cc565b348015610ab857600080fd5b506106f260135481565b348015610ace57600080fd5b506106f260225481565b348015610ae457600080fd5b506106f2602f5481565b348015610afa57600080fd5b50600d5461064d906001600160a01b031681565b348015610b1a57600080fd5b5061062b610b29366004614176565b61187e565b348015610b3a57600080fd5b506106f260245481565b348015610b5057600080fd5b5061062b610b5f36600461415d565b611891565b348015610b7057600080fd5b50600a546106cc90600160a01b900460ff1681565b348015610b9157600080fd5b506106f2610ba0366004614012565b6118fa565b348015610bb157600080fd5b5061062b611922565b348015610bc657600080fd5b5061062b610bd53660046141e4565b611936565b348015610be657600080fd5b5061062b6119f7565b348015610bfb57600080fd5b5061062b610c0a366004614012565b611a5b565b348015610c1b57600080fd5b506106f2610c2a366004614012565b6001600160a01b031660009081526017602052604090205490565b348015610c5157600080fd5b506106f260305481565b348015610c6757600080fd5b506106f260255481565b348015610c7d57600080fd5b506106f260345481565b348015610c9357600080fd5b5061064d610ca236600461415d565b611a8d565b348015610cb357600080fd5b506106f260105481565b348015610cc957600080fd5b506106f260265481565b348015610cdf57600080fd5b5061062b610cee366004613f66565b611ab7565b348015610cff57600080fd5b50600f5460ff16156106cc565b348015610d1857600080fd5b506106f260295481565b348015610d2e57600080fd5b5060025461010090046001600160a01b031661064d565b348015610d5157600080fd5b5061062b610d6036600461423b565b611ad2565b348015610d7157600080fd5b506011546106cc9060ff1681565b348015610d8b57600080fd5b506016546106f2565b348015610da057600080fd5b506021546106cc90610100900460ff1681565b348015610dbf57600080fd5b506106f2610dce3660046140d1565b60208080526000928352604080842090915290825290205481565b348015610df557600080fd5b5061067f611c04565b348015610e0a57600080fd5b506106f260145481565b348015610e2057600080fd5b506106f2611c13565b348015610e3557600080fd5b506106f2611c32565b348015610e4a57600080fd5b506106cc610e59366004613fe6565b611c47565b348015610e6a57600080fd5b5060215461064d906201000090046001600160a01b031681565b348015610e9057600080fd5b50600c5461064d906001600160a01b031681565b348015610eb057600080fd5b506106cc610ebf366004613fe6565b611d2e565b348015610ed057600080fd5b506106f2611d8e565b348015610ee557600080fd5b5061067f611dab565b348015610efa57600080fd5b5061062b610f09366004613fe6565b611e39565b348015610f1a57600080fd5b506106f260125481565b348015610f3057600080fd5b506106f260325481565b348015610f4657600080fd5b5061062b611e67565b348015610f5b57600080fd5b5061062b610f6a36600461415d565b612099565b348015610f7b57600080fd5b506106f2602a5481565b348015610f9157600080fd5b506106f26001600160c01b0381565b348015610fac57600080fd5b506021546106cc9060ff1681565b348015610fc657600080fd5b506106f2601d5481565b348015610fdc57600080fd5b5060075461064d906001600160a01b031681565b348015610ffc57600080fd5b506106f2602c5481565b34801561101257600080fd5b5061062b611021366004613f66565b6120a6565b34801561103257600080fd5b5061067f6120e6565b34801561104757600080fd5b506106f2602d5481565b34801561105d57600080fd5b506106f2601a5481565b34801561107357600080fd5b506106f261108236600461415d565b6120f3565b34801561109357600080fd5b5061062b6110a236600461415d565b612147565b3480156110b357600080fd5b506106f26110c236600461427d565b6001600160a01b03918216600090815260186020908152604080832093909416825291909152205490565b3480156110f957600080fd5b5061062b611108366004613f66565b6121b2565b34801561111957600080fd5b506106f2601b5481565b34801561112f57600080fd5b5061062b61113e3660046141e4565b6121e8565b34801561114f57600080fd5b506011546106cc90610100900460ff1681565b34801561116e57600080fd5b5061062b61117d366004614012565b6122a3565b34801561118e57600080fd5b506106f260275481565b3480156111a457600080fd5b5061062b6111b336600461402f565b612319565b3480156111c457600080fd5b50600b5461064d906001600160a01b031681565b3480156111e457600080fd5b50601c546111f59063ffffffff1681565b60405163ffffffff9091168152602001610661565b34801561121657600080fd5b506106cc611225366004614012565b60196020526000908152604090205460ff1681565b34801561124657600080fd5b506106f2601e5481565b61125861237a565b8015611269576112666123da565b50565b61126661243a565b606060008054611280906142ab565b80601f01602080910402602001604051908101604052809291908181526020018280546112ac906142ab565b80156112f95780601f106112ce576101008083540402835291602001916112f9565b820191906000526020600020905b8154815290600101906020018083116112dc57829003601f168201915b5050505050905090565b3360008181526018602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061135e9086815260200190565b60405180910390a35060015b92915050565b600080600080600080601b54601a5461138991906142fb565b601d54601e546113988a612476565b6113a18b6124ae565b939b929a509098509650909450429350915050565b6113be61237a565b602180549115156101000261ff0019909216919091179055565b6113e061237a565b602585905560268490556028839055602782905560298190556114118161140b848187818b8b612356565b90612356565b602a555050505050565b6000826001600160a01b0381166114685760405162461bcd60e51b815260206004820152600c60248201526b4e756c6c204164647265737360a01b60448201526064015b60405180910390fd5b6001600160a01b038516600090815260186020908152604080832033845290915290205460001914611515576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03881660009081526018825283812033825290915291909120546114f09185906124da565b6001600160a01b03861660009081526018602090815260408083203384529091529020555b611520858585612506565b50600195945050505050565b6016546006546001600160a01b03908116600090815260176020526040808220546005805490941683529082205491936115b19390926115ab92916115a5919061157790600a6143f2565b611583906161a86143fe565b611594906001600160c01b03614433565b6115a5906001600160c01b03614447565b90612c77565b90612362565b905090565b6115be61237a565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6115e861237a565b60008163ffffffff16116116525760405162461bcd60e51b815260206004820152602b60248201527f4d617820746f6b656e207065722077616c6c65742070657263656e746167652060448201526a063616e6e6f7420626520360ac1b606482015260840161145f565b601c805463ffffffff191663ffffffff8316908117909155601d5411156112665760405162461bcd60e51b815260206004820152603f60248201527f4d617820746f6b656e207065722077616c6c6574206d7573742062652061626f60448201527f7665206f7220657175616c20746f2074696d656672616d6551756f7461496e00606482015260840161145f565b3360009081526018602090815260408083206001600160a01b038616845290915281205461170f9083612356565b3360008181526018602090815260408083206001600160a01b038916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910161135e565b61176e61237a565b600780546001600160a01b03199081166001600160a01b039687161782556008805482169587169586179055600980548216948716949094178455600a8054909116928616929092178255600093845260046020526040808520805460ff19908116600190811790925592548716865281862080548416821790559354861685528085208054831685179055915490941683529091208054909216179055565b61181661237a565b600081116118665760405162461bcd60e51b815260206004820181905260248201527f54696d656672616d652065787069726174696f6e2063616e6e6f742062652030604482015260640161145f565b601b55565b61187361237a565b603391909155603455565b61188661237a565b603191909155603255565b61189961237a565b600081116118f55760405162461bcd60e51b8152602060048201526024808201527f54696d656672616d6520746f6b656e2071756f746120696e2063616e6e6f74206044820152630626520360e41b606482015260840161145f565b601d55565b6016546001600160a01b038216600090815260176020526040812054909161136a9190612362565b61192a61237a565b6119346000612c83565b565b61193e61237a565b816119805760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420506172616d657465727360701b604482015260640161145f565b60005b828110156119f15781600460008686858181106119a2576119a261445a565b90506020020160208101906119b79190614012565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806119e981614470565b915050611983565b50505050565b600c60009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a4757600080fd5b505af11580156119f1573d6000803e3d6000fd5b611a6361237a565b602180546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b600e8181548110611a9d57600080fd5b6000918252602090912001546001600160a01b0316905081565b611abf61237a565b6021805460ff1916911515919091179055565b611ada61237a565b60028110801590611b995750600b60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d9190614489565b6001600160a01b031682826000818110611b7957611b7961445a565b9050602002016020810190611b8e9190614012565b6001600160a01b0316145b611ba257600080fd5b611bae600e8383613ee0565b508181611bbc600182614447565b818110611bcb57611bcb61445a565b9050602002016020810190611be09190614012565b600d80546001600160a01b0319166001600160a01b03929092169190911790555050565b606060018054611280906142ab565b6000612710601d54601554611c2891906143fe565b6115b191906144a6565b6000612710601e54601554611c2891906143fe565b3360009081526018602090815260408083206001600160a01b0386168452909152812054808310611c9b573360009081526018602090815260408083206001600160a01b0388168452909152812055611cca565b611ca58184612c77565b3360009081526018602090815260408083206001600160a01b03891684529091529020555b3360008181526018602090815260408083206001600160a01b038916808552908352928190205490519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b6000826001600160a01b038116611d765760405162461bcd60e51b815260206004820152600c60248201526b4e756c6c204164647265737360a01b604482015260640161145f565b611d81338585612506565b50600191505b5092915050565b601c5460155460009161271091611c289163ffffffff16906143fe565b60018054611db8906142ab565b80601f0160208091040260200160405190810160405280929190818152602001828054611de4906142ab565b8015611e315780601f10611e0657610100808354040283529160200191611e31565b820191906000526020600020905b815481529060010190602001808311611e1457829003601f168201915b505050505081565b611e4161237a565b602380546001600160a01b0319166001600160a01b039390931692909217909155602455565b600f805460ff19166001179055611e7c61237a565b4715611f20576008546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611ecf576040519150601f19603f3d011682016040523d82523d6000602084013e611ed4565b606091505b5050905080611f1e5760405162461bcd60e51b81526020600482015260166024820152750aadcc2c4d8ca40a8de40aed2e8d0c8e4c2ee408aa8960531b604482015260640161145f565b505b601654306000908152601760205260408120549091611f3f9190612362565b9050801561208c576040805160028082526060820183526000926020830190803683370190505090503081600081518110611f7c57611f7c61445a565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611fd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff99190614489565b8160018151811061200c5761200c61445a565b6001600160a01b039283166020918202929092010152600b5460085460405163791ac94760e01b81529183169263791ac9479261205892879260009288929091169042906004016144ba565b600060405180830381600087803b15801561207257600080fd5b505af1158015612086573d6000803e3d6000fd5b50505050505b50600f805460ff19169055565b6120a161237a565b602255565b6120ae61237a565b80156120ce576011805461ff001916610100831515021790554260145550565b601180548215156101000261ff001990911617905550565b60008054611db8906142ab565b601654600c546001600160a01b03166000908152601760205260408120549091829161211e91612362565b905061214061212b61152c565b6115ab61213984600261236e565b869061236e565b9392505050565b61214f61237a565b600081116121ad5760405162461bcd60e51b815260206004820152602560248201527f54696d656672616d6520746f6b656e2071756f7461206f75742063616e6e6f74604482015264020626520360dc1b606482015260840161145f565b601e55565b6121ba61237a565b80156121d5576011805460ff19168215151790554260135550565b6011805482151560ff1990911617905550565b6121f061237a565b816122325760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420506172616d657465727360701b604482015260640161145f565b60005b828110156119f15781601960008686858181106122545761225461445a565b90506020020160208101906122699190614012565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061229b81614470565b915050612235565b6122ab61237a565b6001600160a01b0381166123105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161145f565b61126681612c83565b61232161237a565b602b859055602c849055602e839055602d829055602f81905561234c8161140b848187818b8b612356565b6030555050505050565b600061214082846142fb565b600061214082846144a6565b600061214082846143fe565b6002546001600160a01b036101009091041633146119345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161145f565b6123e2612cdd565b6002805460ff60a81b1916600160a81b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861241d3390565b6040516001600160a01b03909116815260200160405180910390a1565b612442612d2a565b6002805460ff60a81b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa3361241d565b601a546000908152601f602090815260408083206001600160a01b03851684529091528120546124a4611c13565b61136a919061452b565b601a546000908152602080805260408083206001600160a01b03851684529091528120546124a4611c32565b600081848411156124fe5760405162461bcd60e51b815260040161145f9190613f83565b505050900390565b6000612510612cdd565b6001600160a01b03841660009081526019602052604090205460ff1615801561255257506001600160a01b03831660009081526019602052604090205460ff16155b61258c5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b604482015260640161145f565b600f5460ff16806125a45750602154610100900460ff165b156125bb576125b4848484612d7a565b9050612140565b6125c3612e25565b601a546000908152601f602090815260408083206001600160a01b0387168452909152812080548492906125f890849061454b565b9091555050601a546000908152602080805260408083206001600160a01b0388168452909152812080548492906126309084906142fb565b90915550506001600160a01b03831660009081526004602052604090205460ff1615801561266c5750600c546001600160a01b03848116911614155b15612800578161267b846118fa565b61268591906142fb565b61268d611d8e565b10156127355760405162461bcd60e51b815260206004820152606560248201527f43616e6e6f74207472616e7366657220746f20746869732077616c6c65742c2060448201527f697420776f756c642065786365656420746865206c696d69742070657220776160648201527f6c6c65742e205b62616c616e63654f66203e206d6178546f6b656e50657257616084820152646c6c65745d60d81b60a482015260c40161145f565b600061274084612476565b12156128005760405162461bcd60e51b815260206004820152607760248201527f43616e6e6f74207472616e7366657220746f20746869732077616c6c6574206660448201527f6f7220746869732074696d656672616d652c20697420776f756c64206578636560648201527f656420746865206c696d6974207065722074696d656672616d652e205b696e4160848201527f6d6f756e74203e2074696d656672616d654c696d69745d00000000000000000060a482015260c40161145f565b6001600160a01b03841660009081526004602052604090205460ff161580156128375750600c546001600160a01b03858116911614155b15612907576000612847856124ae565b12156129075760405162461bcd60e51b815260206004820152607e60248201527f43616e6e6f74207472616e73666572206f75742066726f6d207468697320776160448201527f6c6c657420666f7220746869732074696d656672616d652c20697420776f756c60648201527f642065786365656420746865206c696d6974207065722074696d656672616d6560848201527f2e205b6f7574416d6f756e74203e2074696d656672616d654c696d69745d000060a482015260c40161145f565b61290f612e42565b1561291c5761291c612eb6565b6129246130ba565b1561293157612931613105565b60006129486016548461236e90919063ffffffff16565b90506000612956868661341f565b612960578161296b565b61296b868684613497565b6021549091506201000090046001600160a01b031615801590612990575060215460ff165b15612aee57602160029054906101000a90046001600160a01b03166001600160a01b03166314b6ca96876129fd6016546115ab87604051806060016040528060268152602001614719602691396001600160a01b038e1660009081526017602052604090205491906124da565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015612a4357600080fd5b505af1925050508015612a54575060015b506021546016546001600160a01b038781166000908152601760205260409020546201000090930416916314b6ca96918891612a9591906115ab9087612356565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015612adb57600080fd5b505af1925050508015612aec575060015b505b612af6613764565b15612b1557600c54612b15906001600160a01b03878116911614613788565b612b52826040518060600160405280602b81526020016146a0602b91396001600160a01b03891660009081526017602052604090205491906124da565b6001600160a01b038088166000908152601760205260408082209390935590871681522054612b819082612356565b6001600160a01b038087166000908152601760205260409020919091556021546201000090041615801590612bb8575060215460ff165b15612c22576021546022546040516001624d3b8760e01b031981526004810191909152620100009091046001600160a01b03169063ffb2c47990602401600060405180830381600087803b158015612c0f57600080fd5b505af1925050508015612c20575060015b505b846001600160a01b0316866001600160a01b031660008051602061473f833981519152612c5a6016548561236290919063ffffffff16565b60405190815260200160405180910390a350600195945050505050565b60006121408284614447565b600280546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600254600160a81b900460ff16156119345760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161145f565b600254600160a81b900460ff166119345760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161145f565b600080612d926016548461236e90919063ffffffff16565b9050612dd1816040518060600160405280602181526020016146cb602191396001600160a01b03881660009081526017602052604090205491906124da565b6001600160a01b038087166000908152601760205260408082209390935590861681522054612e009082612356565b6001600160a01b03851660009081526017602052604090205550600190509392505050565b601b54601a544291612e36916142fb565b81111561126657601a55565b60115460009060ff168015612e715750612e5e6005600a6143f2565b612e6c9063c1b710806143fe565b601554105b8015612e885750600c546001600160a01b03163314155b8015612e975750600f5460ff16155b80156115b15750603354601354612eae91906142fb565b421015905090565b600f5460ff1615612ec357565b60008060125442612ed49190614447565b9050600060135442612ee69190614447565b90506000612eff6033548361236290919063ffffffff16565b90506000612f186033548361236e90919063ffffffff16565b90506301e13380841015612f30576034549450612f68565b6301e133808410612f445760d39450612f68565b6302d1cd408410612f5857600e9450612f68565b630d2868808410612f6857600294505b60005b82811015612fb357612f9e612f826007600a614573565b6115ab612f958961140b6007600a614573565b6015549061236e565b60155580612fab81614470565b915050612f6b565b601554612ff490612fc66005600a6143f2565b612fd2906161a86143fe565b612fe3906001600160c01b03614433565b6115ab906001600160c01b03614447565b6016556033546130129061300990859061236e565b60135490612356565b6013556003546040805160016209351760e01b0319815290516001600160a01b039092169163fff6cae99160048082019260009290919082900301818387803b15801561305e57600080fd5b505af1158015613072573d6000803e3d6000fd5b50505050817f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f26015546040516130aa91815260200190565b60405180910390a2505050505050565b601154600090610100900460ff1680156130d75750600f5460ff16155b80156130ee5750600c546001600160a01b03163314155b80156115b15750601454612eae906202a3006142fb565b600f805460ff191660011790556016546007546001600160a01b0316600090815260176020526040812054909161313c9190612362565b905060315481108061314c575080155b156131575750613413565b6007546001600160a01b03166000908152601760205260408082205430835291205461318291612356565b30600090815260176020526040808220929092556007546001600160a01b031681529081208190556131b5826002612362565b905060006131de826040518060600160405280602d81526020016146ec602d91398591906124da565b9050806000036131f057505050613413565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106132255761322561445a565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561327e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a29190614489565b816001815181106132b5576132b561445a565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b81524792919091169063791ac947906132ff9086906000908790309042906004016144ba565b600060405180830381600087803b15801561331957600080fd5b505af115801561332d573d6000803e3d6000fd5b50505050600061335882604051806060016040528060278152602001614679602791394791906124da565b905060008511801561336a5750600081115b1561340857600b5460075460405163f305d71960e01b81523060048201526024810188905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156133df573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906134049190614582565b5050505b505042601455505050505b600f805460ff19169055565b600c546000906001600160a01b03848116911614801561345857506001600160a01b03821660009081526004602052604090205460ff16155b806121405750600c546001600160a01b038381169116148015612140575050506001600160a01b031660009081526004602052604090205460ff161590565b6000806000806000806000600c60009054906101000a90046001600160a01b03166001600160a01b0316896001600160a01b0316036134f357602b549550602c549450602d549350602e549250602f5491506030549050613512565b60255495506026549450602754935060285492506029549150602a5490505b600061352a826135248b612710612362565b9061236e565b9050600061353e846135248c612710612362565b600a546001600160a01b03166000908152601760205260409020549091506135669082612356565b600a80546001600160a01b0390811660009081526017602052604090209290925554601654908216918e169060008051602061473f833981519152906135ad908590612362565b60405190815260200160405180910390a360006135dd6135d18861140b8b8a612356565b6135248d612710612362565b306000908152601760205260409020549091506135fa9082612356565b306000818152601760205260409020919091556016546001600160a01b038f169060008051602061473f83398151915290613636908590612362565b60405190815260200160405180910390a360006136598a6135248e612710612362565b6007546001600160a01b03166000908152601760205260409020549091506136819082612356565b60176000600760009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002081905550600760009054906101000a90046001600160a01b03166001600160a01b03168e6001600160a01b031660008051602061473f83398151915261370c6016548561236290919063ffffffff16565b60405190815260200160405180910390a36040805180820190915260118152706665652076616c7565206578636565647360781b6020820152613752908d9086906124da565b9e9d5050505050505050505050505050565b600f5460009060ff161580156115b1575050600c546001600160a01b031633141590565b600f805460ff191660011790556016543060009081526017602052604081205490916137b49190612362565b90506032548110806137c4575080155b156137cf575061208c565b6040805160028082526060820183524792600092919060208301908036833701905050905030816000815181106138085761380861445a565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613861573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138859190614489565b816001815181106138985761389861445a565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b815291169063791ac947906138de9086906000908690309042906004016144ba565b600060405180830381600087803b1580156138f857600080fd5b505af115801561390c573d6000803e3d6000fd5b50505050600061393783604051806060016040528060238152602001614656602391394791906124da565b90506000806000871561395857602c549250602e549150602d549050613968565b6026549250602854915060275490505b60215460ff16613976575060005b60006139868261140b8686612356565b90506000613998826115ab888861236e565b90508015613a48576008546040516000916001600160a01b03169061753090849084818181858888f193505050503d80600081146139f2576040519150601f19603f3d011682016040523d82523d6000602084013e6139f7565b606091505b5090915050600181151514613a465760405162461bcd60e51b81526020600482015260156024820152744572726f7220506179696e6720547265617375727960581b604482015260640161145f565b505b6000613a58836115ab898761236e565b90506000613a6a826115a58a86612c77565b6023549091506001600160a01b031615801590613a8957506000602454115b15613b90576000613aa9856115ab6024548c61236e90919063ffffffff16565b9050613ae7816040518060400160405280600f81526020016e20aba31039bab110189032b93937b960891b815250846124da9092919063ffffffff16565b6023546040519193506000916001600160a01b039091169061753090849084818181858888f193505050503d8060008114613b3e576040519150601f19603f3d011682016040523d82523d6000602084013e613b43565b606091505b5090915050600181151514613b8d5760405162461bcd60e51b815260206004820152601060248201526f22b93937b9102830bcb4b733902232bb60811b604482015260640161145f565b50505b8015613c46576009546040516000916001600160a01b03169061753090849084818181858888f193505050503d8060008114613be8576040519150601f19603f3d011682016040523d82523d6000602084013e613bed565b606091505b5090915050600181151514613c445760405162461bcd60e51b815260206004820152601b60248201527f4572726f7220506179696e6720496e737572616e63652046756e640000000000604482015260640161145f565b505b601054613c539083612356565b6010556021546201000090046001600160a01b031615801590613c765750600082115b8015613c8c5750600d546001600160a01b031615155b15613ec857600d546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015613cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cfe91906145b0565b600b5460405163b6f9de9560e01b81529192506001600160a01b03169063b6f9de95908590613d3990600090600e90309042906004016145c9565b6000604051808303818588803b158015613d5257600080fd5b505af1158015613d66573d6000803e3d6000fd5b5050600d546040516370a0823160e01b8152306004820152600094508593506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015613db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ddc91906145b0565b613de69190614447565b600d5460215460405163095ea7b360e01b81526001600160a01b03620100009092048216600482015260248101849052929350169063095ea7b3906044016020604051808303816000875af1158015613e43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e679190614638565b5060215460405163b6b55f2560e01b815260048101839052620100009091046001600160a01b03169063b6b55f2590602401600060405180830381600087803b158015613eb357600080fd5b505af1925050508015613ec4575060015b5050505b505050505050505050505050600f805460ff19169055565b828054828255906000526020600020908101928215613f33579160200282015b82811115613f335781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190613f00565b50613f3f929150613f43565b5090565b5b80821115613f3f5760008155600101613f44565b801515811461126657600080fd5b600060208284031215613f7857600080fd5b813561214081613f58565b600060208083528351808285015260005b81811015613fb057858101830151858201604001528201613f94565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461126657600080fd5b60008060408385031215613ff957600080fd5b823561400481613fd1565b946020939093013593505050565b60006020828403121561402457600080fd5b813561214081613fd1565b600080600080600060a0868803121561404757600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060006060848603121561407f57600080fd5b833561408a81613fd1565b9250602084013561409a81613fd1565b929592945050506040919091013590565b6000602082840312156140bd57600080fd5b813563ffffffff8116811461214057600080fd5b600080604083850312156140e457600080fd5b8235915060208301356140f681613fd1565b809150509250929050565b6000806000806080858703121561411757600080fd5b843561412281613fd1565b9350602085013561413281613fd1565b9250604085013561414281613fd1565b9150606085013561415281613fd1565b939692955090935050565b60006020828403121561416f57600080fd5b5035919050565b6000806040838503121561418957600080fd5b50508035926020909101359150565b60008083601f8401126141aa57600080fd5b50813567ffffffffffffffff8111156141c257600080fd5b6020830191508360208260051b85010111156141dd57600080fd5b9250929050565b6000806000604084860312156141f957600080fd5b833567ffffffffffffffff81111561421057600080fd5b61421c86828701614198565b909450925050602084013561423081613f58565b809150509250925092565b6000806020838503121561424e57600080fd5b823567ffffffffffffffff81111561426557600080fd5b61427185828601614198565b90969095509350505050565b6000806040838503121561429057600080fd5b823561429b81613fd1565b915060208301356140f681613fd1565b600181811c908216806142bf57607f821691505b6020821081036142df57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561136a5761136a6142e5565b600181815b8085111561434957816000190482111561432f5761432f6142e5565b8085161561433c57918102915b93841c9390800290614313565b509250929050565b6000826143605750600161136a565b8161436d5750600061136a565b8160018114614383576002811461438d576143a9565b600191505061136a565b60ff84111561439e5761439e6142e5565b50506001821b61136a565b5060208310610133831016604e8410600b84101617156143cc575081810a61136a565b6143d6838361430e565b80600019048211156143ea576143ea6142e5565b029392505050565b60006121408383614351565b6000816000190483118215151615614418576144186142e5565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826144425761444261441d565b500690565b8181038181111561136a5761136a6142e5565b634e487b7160e01b600052603260045260246000fd5b600060018201614482576144826142e5565b5060010190565b60006020828403121561449b57600080fd5b815161214081613fd1565b6000826144b5576144b561441d565b500490565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561450a5784516001600160a01b0316835293830193918301916001016144e5565b50506001600160a01b03969096166060850152505050608001529392505050565b8181036000831280158383131683831282161715611d8757611d876142e5565b808201828112600083128015821682158216171561456b5761456b6142e5565b505092915050565b600061214060ff841683614351565b60008060006060848603121561459757600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156145c257600080fd5b5051919050565b600060808201868352602060808185015281875480845260a0860191508860005282600020935060005b818110156146185784546001600160a01b0316835260019485019492840192016145f3565b50506001600160a01b039690961660408501525050506060015292915050565b60006020828403121561464a57600080fd5b815161214081613f5856fe737761704261636b3a204554482062616c616e6365206973206e6f7420656e6f7567686164644c69717569646974793a204554482062616c616e6365206973206e6f7420656e6f7567685f7472616e7366657246726f6d3a2073656e6465722062616c616e6365206973206e6f7420656e6f75676842617369635472616e736665723a204e6f7420456e6f7567682042616c616e63656164644c69717569646974793a206c69717569646974792062616c616e6365206973206e6f7420656e6f7567684469766964656e643a2073656e6465722062616c616e6365206973206e6f7420656e6f756768ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e2f3071e01b9d01e9df8fd81859ee3e52d1447c7b00fd9f401ea8d2d9ed9e33364736f6c63430008100033000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b47997506000000000000000000000000bef7e44253b520e1595abcb2bde3aee640aac070000000000000000000000000c1d02957b4840107692ce28495340a7ba697e96800000000000000000000000088350e5eff4f2039dffe37dd1392728fed59f190000000000000000000000000e4a082ba60ef166e6e4f45b86e9604c722cee436000000000000000000000000c11c8b944c9c38a3daa942bd3a61ea03a2c733e5000000000000000000000000000000000000000000000000000000000000000c536565642046696e616e6365000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045345454400000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106105ff5760003560e01c80637cb95d001161030e578063bd5955811161019b578063d8f91a04116100e7578063f2fde38b116100a0578063f887ea401161007a578063f887ea40146111b8578063f9402620146111d8578063f9f92be41461120a578063fec4d0b41461123a57600080fd5b8063f2fde38b14611162578063f651c98c14611182578063f7a5a9901461119857600080fd5b8063d8f91a0414611087578063dd62ed3e146110a7578063e15beb80146110ed578063e388ec2a1461110d578063ebd604c514611123578063efd462bb1461114357600080fd5b8063ca33e64c11610154578063d28d88521161012e578063d28d885214611026578063d3a025bb1461103b578063d465eeff14611051578063d51ed1c81461106757600080fd5b8063ca33e64c14610fd0578063cdd4bd7914610ff0578063cfbac92f1461100657600080fd5b8063bd59558114610f3a578063c054318114610f4f578063c0b6254c14610f6f578063c73c701d14610f85578063c834a1cd14610fa0578063c91bc8a714610fba57600080fd5b806395d89b411161025a578063a8aa1b3111610213578063b09f1266116101ed578063b09f126614610ed9578063b568231814610eee578063ba71c44e14610f0e578063bbb2b55014610f2457600080fd5b8063a8aa1b3114610e84578063a9059cbb14610ea4578063af52002514610ec457600080fd5b806395d89b4114610de95780639d12ec0114610dfe5780639d67f4dd14610e145780639ee9aaae14610e29578063a457c2d714610e3e578063a51af4c514610e5e57600080fd5b806389c88c76116102c75780639079f932116102a15780639079f93214610d6557806390dc67e614610d7f578063949b8b1f14610d9457806394e0a54214610db357600080fd5b806389c88c7614610d0c5780638da5cb5b14610d2257806390248b8314610d4557600080fd5b80637cb95d0014610c715780637fa08dc614610c87578063811b1a5414610ca7578063824e460514610cbd5780638344dce914610cd357806383b4ac6814610cf357600080fd5b806349a8065d1161048c578063647846a5116103d8578063715018a61161039157806375619ab51161036b57806375619ab514610bef57806375f3c64714610c0f578063774f626114610c455780637b3c83b114610c5b57600080fd5b8063715018a614610ba55780637515cd6614610bba578063753d02a114610bda57600080fd5b8063647846a514610aee578063679aa90014610b0e5780636827e76414610b2e57806369cdbd1d14610b445780636ddd171314610b6457806370a0823114610b8557600080fd5b80635828356b116104455780635c975abb1161041f5780635c975abb14610a8d5780636085e22014610aac57806360e7196214610ac25780636221723114610ad857600080fd5b80635828356b14610a4257806358fa63ca14610a585780635a604c5214610a7857600080fd5b806349a8065d1461098c57806349d98142146109ac5780634d709adf146109cc578063509af03b146109ec57806352596e6e14610a0c578063552f888a14610a2c57600080fd5b80632ce86fbf1161054b57806333a581d2116105045780633ad10ef6116104de5780633ad10ef6146108e45780633bec1a87146109045780633c8e556d1461093c5780633f4218e01461095c57600080fd5b806333a581d21461089857806339509351146108ae578063398004ad146108ce57600080fd5b80632ce86fbf146107ed5780632e0f2625146108035780632f34d28214610818578063313ce5671461083857806331bb88c41461085e57806332424aa31461087e57600080fd5b80630c995801116105b85780631d89f1de116105925780631d89f1de146107785780631da11fd41461079857806323b872dd146107b85780632b112e49146107d857600080fd5b80630c9958011461070057806318160ddd1461074d5780631d88feeb1461076257600080fd5b806302329a291461060b57806303fd2a451461062d57806306fdde031461066a57806308b1fd8f1461068c578063095ea7b3146106ac5780630a20eed0146106dc57600080fd5b3661060657005b600080fd5b34801561061757600080fd5b5061062b610626366004613f66565b611250565b005b34801561063957600080fd5b5060055461064d906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561067657600080fd5b5061067f611271565b6040516106619190613f83565b34801561069857600080fd5b5060085461064d906001600160a01b031681565b3480156106b857600080fd5b506106cc6106c7366004613fe6565b611303565b6040519015158152602001610661565b3480156106e857600080fd5b506106f260285481565b604051908152602001610661565b34801561070c57600080fd5b5061072061071b366004614012565b611370565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610661565b34801561075957600080fd5b506015546106f2565b34801561076e57600080fd5b506106f260315481565b34801561078457600080fd5b5061062b610793366004613f66565b6113b6565b3480156107a457600080fd5b5061062b6107b336600461402f565b6113d8565b3480156107c457600080fd5b506106cc6107d336600461406a565b61141b565b3480156107e457600080fd5b506106f261152c565b3480156107f957600080fd5b506106f2602b5481565b34801561080f57600080fd5b506106f2600581565b34801561082457600080fd5b5061062b610833366004614012565b6115b6565b34801561084457600080fd5b5060025460ff165b60405160ff9091168152602001610661565b34801561086a57600080fd5b5061062b6108793660046140ab565b6115e0565b34801561088a57600080fd5b5060025461084c9060ff1681565b3480156108a457600080fd5b506106f260001981565b3480156108ba57600080fd5b506106cc6108c9366004613fe6565b6116e1565b3480156108da57600080fd5b506106f2602e5481565b3480156108f057600080fd5b5060235461064d906001600160a01b031681565b34801561091057600080fd5b506106f261091f3660046140d1565b601f60209081526000928352604080842090915290825290205481565b34801561094857600080fd5b5061062b610957366004614101565b611766565b34801561096857600080fd5b506106cc610977366004614012565b60046020526000908152604090205460ff1681565b34801561099857600080fd5b5061062b6109a736600461415d565b61180e565b3480156109b857600080fd5b50600a5461064d906001600160a01b031681565b3480156109d857600080fd5b5060035461064d906001600160a01b031681565b3480156109f857600080fd5b5061062b610a07366004614176565b61186b565b348015610a1857600080fd5b5060095461064d906001600160a01b031681565b348015610a3857600080fd5b506106f261271081565b348015610a4e57600080fd5b506106f260335481565b348015610a6457600080fd5b5060065461064d906001600160a01b031681565b348015610a8457600080fd5b5061084c600781565b348015610a9957600080fd5b50600254600160a81b900460ff166106cc565b348015610ab857600080fd5b506106f260135481565b348015610ace57600080fd5b506106f260225481565b348015610ae457600080fd5b506106f2602f5481565b348015610afa57600080fd5b50600d5461064d906001600160a01b031681565b348015610b1a57600080fd5b5061062b610b29366004614176565b61187e565b348015610b3a57600080fd5b506106f260245481565b348015610b5057600080fd5b5061062b610b5f36600461415d565b611891565b348015610b7057600080fd5b50600a546106cc90600160a01b900460ff1681565b348015610b9157600080fd5b506106f2610ba0366004614012565b6118fa565b348015610bb157600080fd5b5061062b611922565b348015610bc657600080fd5b5061062b610bd53660046141e4565b611936565b348015610be657600080fd5b5061062b6119f7565b348015610bfb57600080fd5b5061062b610c0a366004614012565b611a5b565b348015610c1b57600080fd5b506106f2610c2a366004614012565b6001600160a01b031660009081526017602052604090205490565b348015610c5157600080fd5b506106f260305481565b348015610c6757600080fd5b506106f260255481565b348015610c7d57600080fd5b506106f260345481565b348015610c9357600080fd5b5061064d610ca236600461415d565b611a8d565b348015610cb357600080fd5b506106f260105481565b348015610cc957600080fd5b506106f260265481565b348015610cdf57600080fd5b5061062b610cee366004613f66565b611ab7565b348015610cff57600080fd5b50600f5460ff16156106cc565b348015610d1857600080fd5b506106f260295481565b348015610d2e57600080fd5b5060025461010090046001600160a01b031661064d565b348015610d5157600080fd5b5061062b610d6036600461423b565b611ad2565b348015610d7157600080fd5b506011546106cc9060ff1681565b348015610d8b57600080fd5b506016546106f2565b348015610da057600080fd5b506021546106cc90610100900460ff1681565b348015610dbf57600080fd5b506106f2610dce3660046140d1565b60208080526000928352604080842090915290825290205481565b348015610df557600080fd5b5061067f611c04565b348015610e0a57600080fd5b506106f260145481565b348015610e2057600080fd5b506106f2611c13565b348015610e3557600080fd5b506106f2611c32565b348015610e4a57600080fd5b506106cc610e59366004613fe6565b611c47565b348015610e6a57600080fd5b5060215461064d906201000090046001600160a01b031681565b348015610e9057600080fd5b50600c5461064d906001600160a01b031681565b348015610eb057600080fd5b506106cc610ebf366004613fe6565b611d2e565b348015610ed057600080fd5b506106f2611d8e565b348015610ee557600080fd5b5061067f611dab565b348015610efa57600080fd5b5061062b610f09366004613fe6565b611e39565b348015610f1a57600080fd5b506106f260125481565b348015610f3057600080fd5b506106f260325481565b348015610f4657600080fd5b5061062b611e67565b348015610f5b57600080fd5b5061062b610f6a36600461415d565b612099565b348015610f7b57600080fd5b506106f2602a5481565b348015610f9157600080fd5b506106f26001600160c01b0381565b348015610fac57600080fd5b506021546106cc9060ff1681565b348015610fc657600080fd5b506106f2601d5481565b348015610fdc57600080fd5b5060075461064d906001600160a01b031681565b348015610ffc57600080fd5b506106f2602c5481565b34801561101257600080fd5b5061062b611021366004613f66565b6120a6565b34801561103257600080fd5b5061067f6120e6565b34801561104757600080fd5b506106f2602d5481565b34801561105d57600080fd5b506106f2601a5481565b34801561107357600080fd5b506106f261108236600461415d565b6120f3565b34801561109357600080fd5b5061062b6110a236600461415d565b612147565b3480156110b357600080fd5b506106f26110c236600461427d565b6001600160a01b03918216600090815260186020908152604080832093909416825291909152205490565b3480156110f957600080fd5b5061062b611108366004613f66565b6121b2565b34801561111957600080fd5b506106f2601b5481565b34801561112f57600080fd5b5061062b61113e3660046141e4565b6121e8565b34801561114f57600080fd5b506011546106cc90610100900460ff1681565b34801561116e57600080fd5b5061062b61117d366004614012565b6122a3565b34801561118e57600080fd5b506106f260275481565b3480156111a457600080fd5b5061062b6111b336600461402f565b612319565b3480156111c457600080fd5b50600b5461064d906001600160a01b031681565b3480156111e457600080fd5b50601c546111f59063ffffffff1681565b60405163ffffffff9091168152602001610661565b34801561121657600080fd5b506106cc611225366004614012565b60196020526000908152604090205460ff1681565b34801561124657600080fd5b506106f2601e5481565b61125861237a565b8015611269576112666123da565b50565b61126661243a565b606060008054611280906142ab565b80601f01602080910402602001604051908101604052809291908181526020018280546112ac906142ab565b80156112f95780601f106112ce576101008083540402835291602001916112f9565b820191906000526020600020905b8154815290600101906020018083116112dc57829003601f168201915b5050505050905090565b3360008181526018602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061135e9086815260200190565b60405180910390a35060015b92915050565b600080600080600080601b54601a5461138991906142fb565b601d54601e546113988a612476565b6113a18b6124ae565b939b929a509098509650909450429350915050565b6113be61237a565b602180549115156101000261ff0019909216919091179055565b6113e061237a565b602585905560268490556028839055602782905560298190556114118161140b848187818b8b612356565b90612356565b602a555050505050565b6000826001600160a01b0381166114685760405162461bcd60e51b815260206004820152600c60248201526b4e756c6c204164647265737360a01b60448201526064015b60405180910390fd5b6001600160a01b038516600090815260186020908152604080832033845290915290205460001914611515576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03881660009081526018825283812033825290915291909120546114f09185906124da565b6001600160a01b03861660009081526018602090815260408083203384529091529020555b611520858585612506565b50600195945050505050565b6016546006546001600160a01b03908116600090815260176020526040808220546005805490941683529082205491936115b19390926115ab92916115a5919061157790600a6143f2565b611583906161a86143fe565b611594906001600160c01b03614433565b6115a5906001600160c01b03614447565b90612c77565b90612362565b905090565b6115be61237a565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6115e861237a565b60008163ffffffff16116116525760405162461bcd60e51b815260206004820152602b60248201527f4d617820746f6b656e207065722077616c6c65742070657263656e746167652060448201526a063616e6e6f7420626520360ac1b606482015260840161145f565b601c805463ffffffff191663ffffffff8316908117909155601d5411156112665760405162461bcd60e51b815260206004820152603f60248201527f4d617820746f6b656e207065722077616c6c6574206d7573742062652061626f60448201527f7665206f7220657175616c20746f2074696d656672616d6551756f7461496e00606482015260840161145f565b3360009081526018602090815260408083206001600160a01b038616845290915281205461170f9083612356565b3360008181526018602090815260408083206001600160a01b038916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910161135e565b61176e61237a565b600780546001600160a01b03199081166001600160a01b039687161782556008805482169587169586179055600980548216948716949094178455600a8054909116928616929092178255600093845260046020526040808520805460ff19908116600190811790925592548716865281862080548416821790559354861685528085208054831685179055915490941683529091208054909216179055565b61181661237a565b600081116118665760405162461bcd60e51b815260206004820181905260248201527f54696d656672616d652065787069726174696f6e2063616e6e6f742062652030604482015260640161145f565b601b55565b61187361237a565b603391909155603455565b61188661237a565b603191909155603255565b61189961237a565b600081116118f55760405162461bcd60e51b8152602060048201526024808201527f54696d656672616d6520746f6b656e2071756f746120696e2063616e6e6f74206044820152630626520360e41b606482015260840161145f565b601d55565b6016546001600160a01b038216600090815260176020526040812054909161136a9190612362565b61192a61237a565b6119346000612c83565b565b61193e61237a565b816119805760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420506172616d657465727360701b604482015260640161145f565b60005b828110156119f15781600460008686858181106119a2576119a261445a565b90506020020160208101906119b79190614012565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806119e981614470565b915050611983565b50505050565b600c60009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611a4757600080fd5b505af11580156119f1573d6000803e3d6000fd5b611a6361237a565b602180546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b600e8181548110611a9d57600080fd5b6000918252602090912001546001600160a01b0316905081565b611abf61237a565b6021805460ff1916911515919091179055565b611ada61237a565b60028110801590611b995750600b60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d9190614489565b6001600160a01b031682826000818110611b7957611b7961445a565b9050602002016020810190611b8e9190614012565b6001600160a01b0316145b611ba257600080fd5b611bae600e8383613ee0565b508181611bbc600182614447565b818110611bcb57611bcb61445a565b9050602002016020810190611be09190614012565b600d80546001600160a01b0319166001600160a01b03929092169190911790555050565b606060018054611280906142ab565b6000612710601d54601554611c2891906143fe565b6115b191906144a6565b6000612710601e54601554611c2891906143fe565b3360009081526018602090815260408083206001600160a01b0386168452909152812054808310611c9b573360009081526018602090815260408083206001600160a01b0388168452909152812055611cca565b611ca58184612c77565b3360009081526018602090815260408083206001600160a01b03891684529091529020555b3360008181526018602090815260408083206001600160a01b038916808552908352928190205490519081529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b6000826001600160a01b038116611d765760405162461bcd60e51b815260206004820152600c60248201526b4e756c6c204164647265737360a01b604482015260640161145f565b611d81338585612506565b50600191505b5092915050565b601c5460155460009161271091611c289163ffffffff16906143fe565b60018054611db8906142ab565b80601f0160208091040260200160405190810160405280929190818152602001828054611de4906142ab565b8015611e315780601f10611e0657610100808354040283529160200191611e31565b820191906000526020600020905b815481529060010190602001808311611e1457829003601f168201915b505050505081565b611e4161237a565b602380546001600160a01b0319166001600160a01b039390931692909217909155602455565b600f805460ff19166001179055611e7c61237a565b4715611f20576008546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611ecf576040519150601f19603f3d011682016040523d82523d6000602084013e611ed4565b606091505b5050905080611f1e5760405162461bcd60e51b81526020600482015260166024820152750aadcc2c4d8ca40a8de40aed2e8d0c8e4c2ee408aa8960531b604482015260640161145f565b505b601654306000908152601760205260408120549091611f3f9190612362565b9050801561208c576040805160028082526060820183526000926020830190803683370190505090503081600081518110611f7c57611f7c61445a565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611fd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff99190614489565b8160018151811061200c5761200c61445a565b6001600160a01b039283166020918202929092010152600b5460085460405163791ac94760e01b81529183169263791ac9479261205892879260009288929091169042906004016144ba565b600060405180830381600087803b15801561207257600080fd5b505af1158015612086573d6000803e3d6000fd5b50505050505b50600f805460ff19169055565b6120a161237a565b602255565b6120ae61237a565b80156120ce576011805461ff001916610100831515021790554260145550565b601180548215156101000261ff001990911617905550565b60008054611db8906142ab565b601654600c546001600160a01b03166000908152601760205260408120549091829161211e91612362565b905061214061212b61152c565b6115ab61213984600261236e565b869061236e565b9392505050565b61214f61237a565b600081116121ad5760405162461bcd60e51b815260206004820152602560248201527f54696d656672616d6520746f6b656e2071756f7461206f75742063616e6e6f74604482015264020626520360dc1b606482015260840161145f565b601e55565b6121ba61237a565b80156121d5576011805460ff19168215151790554260135550565b6011805482151560ff1990911617905550565b6121f061237a565b816122325760405162461bcd60e51b8152602060048201526012602482015271496e76616c696420506172616d657465727360701b604482015260640161145f565b60005b828110156119f15781601960008686858181106122545761225461445a565b90506020020160208101906122699190614012565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061229b81614470565b915050612235565b6122ab61237a565b6001600160a01b0381166123105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161145f565b61126681612c83565b61232161237a565b602b859055602c849055602e839055602d829055602f81905561234c8161140b848187818b8b612356565b6030555050505050565b600061214082846142fb565b600061214082846144a6565b600061214082846143fe565b6002546001600160a01b036101009091041633146119345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161145f565b6123e2612cdd565b6002805460ff60a81b1916600160a81b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861241d3390565b6040516001600160a01b03909116815260200160405180910390a1565b612442612d2a565b6002805460ff60a81b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa3361241d565b601a546000908152601f602090815260408083206001600160a01b03851684529091528120546124a4611c13565b61136a919061452b565b601a546000908152602080805260408083206001600160a01b03851684529091528120546124a4611c32565b600081848411156124fe5760405162461bcd60e51b815260040161145f9190613f83565b505050900390565b6000612510612cdd565b6001600160a01b03841660009081526019602052604090205460ff1615801561255257506001600160a01b03831660009081526019602052604090205460ff16155b61258c5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b604482015260640161145f565b600f5460ff16806125a45750602154610100900460ff165b156125bb576125b4848484612d7a565b9050612140565b6125c3612e25565b601a546000908152601f602090815260408083206001600160a01b0387168452909152812080548492906125f890849061454b565b9091555050601a546000908152602080805260408083206001600160a01b0388168452909152812080548492906126309084906142fb565b90915550506001600160a01b03831660009081526004602052604090205460ff1615801561266c5750600c546001600160a01b03848116911614155b15612800578161267b846118fa565b61268591906142fb565b61268d611d8e565b10156127355760405162461bcd60e51b815260206004820152606560248201527f43616e6e6f74207472616e7366657220746f20746869732077616c6c65742c2060448201527f697420776f756c642065786365656420746865206c696d69742070657220776160648201527f6c6c65742e205b62616c616e63654f66203e206d6178546f6b656e50657257616084820152646c6c65745d60d81b60a482015260c40161145f565b600061274084612476565b12156128005760405162461bcd60e51b815260206004820152607760248201527f43616e6e6f74207472616e7366657220746f20746869732077616c6c6574206660448201527f6f7220746869732074696d656672616d652c20697420776f756c64206578636560648201527f656420746865206c696d6974207065722074696d656672616d652e205b696e4160848201527f6d6f756e74203e2074696d656672616d654c696d69745d00000000000000000060a482015260c40161145f565b6001600160a01b03841660009081526004602052604090205460ff161580156128375750600c546001600160a01b03858116911614155b15612907576000612847856124ae565b12156129075760405162461bcd60e51b815260206004820152607e60248201527f43616e6e6f74207472616e73666572206f75742066726f6d207468697320776160448201527f6c6c657420666f7220746869732074696d656672616d652c20697420776f756c60648201527f642065786365656420746865206c696d6974207065722074696d656672616d6560848201527f2e205b6f7574416d6f756e74203e2074696d656672616d654c696d69745d000060a482015260c40161145f565b61290f612e42565b1561291c5761291c612eb6565b6129246130ba565b1561293157612931613105565b60006129486016548461236e90919063ffffffff16565b90506000612956868661341f565b612960578161296b565b61296b868684613497565b6021549091506201000090046001600160a01b031615801590612990575060215460ff165b15612aee57602160029054906101000a90046001600160a01b03166001600160a01b03166314b6ca96876129fd6016546115ab87604051806060016040528060268152602001614719602691396001600160a01b038e1660009081526017602052604090205491906124da565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015612a4357600080fd5b505af1925050508015612a54575060015b506021546016546001600160a01b038781166000908152601760205260409020546201000090930416916314b6ca96918891612a9591906115ab9087612356565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015612adb57600080fd5b505af1925050508015612aec575060015b505b612af6613764565b15612b1557600c54612b15906001600160a01b03878116911614613788565b612b52826040518060600160405280602b81526020016146a0602b91396001600160a01b03891660009081526017602052604090205491906124da565b6001600160a01b038088166000908152601760205260408082209390935590871681522054612b819082612356565b6001600160a01b038087166000908152601760205260409020919091556021546201000090041615801590612bb8575060215460ff165b15612c22576021546022546040516001624d3b8760e01b031981526004810191909152620100009091046001600160a01b03169063ffb2c47990602401600060405180830381600087803b158015612c0f57600080fd5b505af1925050508015612c20575060015b505b846001600160a01b0316866001600160a01b031660008051602061473f833981519152612c5a6016548561236290919063ffffffff16565b60405190815260200160405180910390a350600195945050505050565b60006121408284614447565b600280546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600254600160a81b900460ff16156119345760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161145f565b600254600160a81b900460ff166119345760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161145f565b600080612d926016548461236e90919063ffffffff16565b9050612dd1816040518060600160405280602181526020016146cb602191396001600160a01b03881660009081526017602052604090205491906124da565b6001600160a01b038087166000908152601760205260408082209390935590861681522054612e009082612356565b6001600160a01b03851660009081526017602052604090205550600190509392505050565b601b54601a544291612e36916142fb565b81111561126657601a55565b60115460009060ff168015612e715750612e5e6005600a6143f2565b612e6c9063c1b710806143fe565b601554105b8015612e885750600c546001600160a01b03163314155b8015612e975750600f5460ff16155b80156115b15750603354601354612eae91906142fb565b421015905090565b600f5460ff1615612ec357565b60008060125442612ed49190614447565b9050600060135442612ee69190614447565b90506000612eff6033548361236290919063ffffffff16565b90506000612f186033548361236e90919063ffffffff16565b90506301e13380841015612f30576034549450612f68565b6301e133808410612f445760d39450612f68565b6302d1cd408410612f5857600e9450612f68565b630d2868808410612f6857600294505b60005b82811015612fb357612f9e612f826007600a614573565b6115ab612f958961140b6007600a614573565b6015549061236e565b60155580612fab81614470565b915050612f6b565b601554612ff490612fc66005600a6143f2565b612fd2906161a86143fe565b612fe3906001600160c01b03614433565b6115ab906001600160c01b03614447565b6016556033546130129061300990859061236e565b60135490612356565b6013556003546040805160016209351760e01b0319815290516001600160a01b039092169163fff6cae99160048082019260009290919082900301818387803b15801561305e57600080fd5b505af1158015613072573d6000803e3d6000fd5b50505050817f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f26015546040516130aa91815260200190565b60405180910390a2505050505050565b601154600090610100900460ff1680156130d75750600f5460ff16155b80156130ee5750600c546001600160a01b03163314155b80156115b15750601454612eae906202a3006142fb565b600f805460ff191660011790556016546007546001600160a01b0316600090815260176020526040812054909161313c9190612362565b905060315481108061314c575080155b156131575750613413565b6007546001600160a01b03166000908152601760205260408082205430835291205461318291612356565b30600090815260176020526040808220929092556007546001600160a01b031681529081208190556131b5826002612362565b905060006131de826040518060600160405280602d81526020016146ec602d91398591906124da565b9050806000036131f057505050613413565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106132255761322561445a565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561327e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a29190614489565b816001815181106132b5576132b561445a565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b81524792919091169063791ac947906132ff9086906000908790309042906004016144ba565b600060405180830381600087803b15801561331957600080fd5b505af115801561332d573d6000803e3d6000fd5b50505050600061335882604051806060016040528060278152602001614679602791394791906124da565b905060008511801561336a5750600081115b1561340857600b5460075460405163f305d71960e01b81523060048201526024810188905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156133df573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906134049190614582565b5050505b505042601455505050505b600f805460ff19169055565b600c546000906001600160a01b03848116911614801561345857506001600160a01b03821660009081526004602052604090205460ff16155b806121405750600c546001600160a01b038381169116148015612140575050506001600160a01b031660009081526004602052604090205460ff161590565b6000806000806000806000600c60009054906101000a90046001600160a01b03166001600160a01b0316896001600160a01b0316036134f357602b549550602c549450602d549350602e549250602f5491506030549050613512565b60255495506026549450602754935060285492506029549150602a5490505b600061352a826135248b612710612362565b9061236e565b9050600061353e846135248c612710612362565b600a546001600160a01b03166000908152601760205260409020549091506135669082612356565b600a80546001600160a01b0390811660009081526017602052604090209290925554601654908216918e169060008051602061473f833981519152906135ad908590612362565b60405190815260200160405180910390a360006135dd6135d18861140b8b8a612356565b6135248d612710612362565b306000908152601760205260409020549091506135fa9082612356565b306000818152601760205260409020919091556016546001600160a01b038f169060008051602061473f83398151915290613636908590612362565b60405190815260200160405180910390a360006136598a6135248e612710612362565b6007546001600160a01b03166000908152601760205260409020549091506136819082612356565b60176000600760009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002081905550600760009054906101000a90046001600160a01b03166001600160a01b03168e6001600160a01b031660008051602061473f83398151915261370c6016548561236290919063ffffffff16565b60405190815260200160405180910390a36040805180820190915260118152706665652076616c7565206578636565647360781b6020820152613752908d9086906124da565b9e9d5050505050505050505050505050565b600f5460009060ff161580156115b1575050600c546001600160a01b031633141590565b600f805460ff191660011790556016543060009081526017602052604081205490916137b49190612362565b90506032548110806137c4575080155b156137cf575061208c565b6040805160028082526060820183524792600092919060208301908036833701905050905030816000815181106138085761380861445a565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613861573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138859190614489565b816001815181106138985761389861445a565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b815291169063791ac947906138de9086906000908690309042906004016144ba565b600060405180830381600087803b1580156138f857600080fd5b505af115801561390c573d6000803e3d6000fd5b50505050600061393783604051806060016040528060238152602001614656602391394791906124da565b90506000806000871561395857602c549250602e549150602d549050613968565b6026549250602854915060275490505b60215460ff16613976575060005b60006139868261140b8686612356565b90506000613998826115ab888861236e565b90508015613a48576008546040516000916001600160a01b03169061753090849084818181858888f193505050503d80600081146139f2576040519150601f19603f3d011682016040523d82523d6000602084013e6139f7565b606091505b5090915050600181151514613a465760405162461bcd60e51b81526020600482015260156024820152744572726f7220506179696e6720547265617375727960581b604482015260640161145f565b505b6000613a58836115ab898761236e565b90506000613a6a826115a58a86612c77565b6023549091506001600160a01b031615801590613a8957506000602454115b15613b90576000613aa9856115ab6024548c61236e90919063ffffffff16565b9050613ae7816040518060400160405280600f81526020016e20aba31039bab110189032b93937b960891b815250846124da9092919063ffffffff16565b6023546040519193506000916001600160a01b039091169061753090849084818181858888f193505050503d8060008114613b3e576040519150601f19603f3d011682016040523d82523d6000602084013e613b43565b606091505b5090915050600181151514613b8d5760405162461bcd60e51b815260206004820152601060248201526f22b93937b9102830bcb4b733902232bb60811b604482015260640161145f565b50505b8015613c46576009546040516000916001600160a01b03169061753090849084818181858888f193505050503d8060008114613be8576040519150601f19603f3d011682016040523d82523d6000602084013e613bed565b606091505b5090915050600181151514613c445760405162461bcd60e51b815260206004820152601b60248201527f4572726f7220506179696e6720496e737572616e63652046756e640000000000604482015260640161145f565b505b601054613c539083612356565b6010556021546201000090046001600160a01b031615801590613c765750600082115b8015613c8c5750600d546001600160a01b031615155b15613ec857600d546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015613cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cfe91906145b0565b600b5460405163b6f9de9560e01b81529192506001600160a01b03169063b6f9de95908590613d3990600090600e90309042906004016145c9565b6000604051808303818588803b158015613d5257600080fd5b505af1158015613d66573d6000803e3d6000fd5b5050600d546040516370a0823160e01b8152306004820152600094508593506001600160a01b0390911691506370a0823190602401602060405180830381865afa158015613db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ddc91906145b0565b613de69190614447565b600d5460215460405163095ea7b360e01b81526001600160a01b03620100009092048216600482015260248101849052929350169063095ea7b3906044016020604051808303816000875af1158015613e43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e679190614638565b5060215460405163b6b55f2560e01b815260048101839052620100009091046001600160a01b03169063b6b55f2590602401600060405180830381600087803b158015613eb357600080fd5b505af1925050508015613ec4575060015b5050505b505050505050505050505050600f805460ff19169055565b828054828255906000526020600020908101928215613f33579160200282015b82811115613f335781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190613f00565b50613f3f929150613f43565b5090565b5b80821115613f3f5760008155600101613f44565b801515811461126657600080fd5b600060208284031215613f7857600080fd5b813561214081613f58565b600060208083528351808285015260005b81811015613fb057858101830151858201604001528201613f94565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461126657600080fd5b60008060408385031215613ff957600080fd5b823561400481613fd1565b946020939093013593505050565b60006020828403121561402457600080fd5b813561214081613fd1565b600080600080600060a0868803121561404757600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060006060848603121561407f57600080fd5b833561408a81613fd1565b9250602084013561409a81613fd1565b929592945050506040919091013590565b6000602082840312156140bd57600080fd5b813563ffffffff8116811461214057600080fd5b600080604083850312156140e457600080fd5b8235915060208301356140f681613fd1565b809150509250929050565b6000806000806080858703121561411757600080fd5b843561412281613fd1565b9350602085013561413281613fd1565b9250604085013561414281613fd1565b9150606085013561415281613fd1565b939692955090935050565b60006020828403121561416f57600080fd5b5035919050565b6000806040838503121561418957600080fd5b50508035926020909101359150565b60008083601f8401126141aa57600080fd5b50813567ffffffffffffffff8111156141c257600080fd5b6020830191508360208260051b85010111156141dd57600080fd5b9250929050565b6000806000604084860312156141f957600080fd5b833567ffffffffffffffff81111561421057600080fd5b61421c86828701614198565b909450925050602084013561423081613f58565b809150509250925092565b6000806020838503121561424e57600080fd5b823567ffffffffffffffff81111561426557600080fd5b61427185828601614198565b90969095509350505050565b6000806040838503121561429057600080fd5b823561429b81613fd1565b915060208301356140f681613fd1565b600181811c908216806142bf57607f821691505b6020821081036142df57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561136a5761136a6142e5565b600181815b8085111561434957816000190482111561432f5761432f6142e5565b8085161561433c57918102915b93841c9390800290614313565b509250929050565b6000826143605750600161136a565b8161436d5750600061136a565b8160018114614383576002811461438d576143a9565b600191505061136a565b60ff84111561439e5761439e6142e5565b50506001821b61136a565b5060208310610133831016604e8410600b84101617156143cc575081810a61136a565b6143d6838361430e565b80600019048211156143ea576143ea6142e5565b029392505050565b60006121408383614351565b6000816000190483118215151615614418576144186142e5565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826144425761444261441d565b500690565b8181038181111561136a5761136a6142e5565b634e487b7160e01b600052603260045260246000fd5b600060018201614482576144826142e5565b5060010190565b60006020828403121561449b57600080fd5b815161214081613fd1565b6000826144b5576144b561441d565b500490565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561450a5784516001600160a01b0316835293830193918301916001016144e5565b50506001600160a01b03969096166060850152505050608001529392505050565b8181036000831280158383131683831282161715611d8757611d876142e5565b808201828112600083128015821682158216171561456b5761456b6142e5565b505092915050565b600061214060ff841683614351565b60008060006060848603121561459757600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156145c257600080fd5b5051919050565b600060808201868352602060808185015281875480845260a0860191508860005282600020935060005b818110156146185784546001600160a01b0316835260019485019492840192016145f3565b50506001600160a01b039690961660408501525050506060015292915050565b60006020828403121561464a57600080fd5b815161214081613f5856fe737761704261636b3a204554482062616c616e6365206973206e6f7420656e6f7567686164644c69717569646974793a204554482062616c616e6365206973206e6f7420656e6f7567685f7472616e7366657246726f6d3a2073656e6465722062616c616e6365206973206e6f7420656e6f75676842617369635472616e736665723a204e6f7420456e6f7567682042616c616e63656164644c69717569646974793a206c69717569646974792062616c616e6365206973206e6f7420656e6f7567684469766964656e643a2073656e6465722062616c616e6365206973206e6f7420656e6f756768ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e2f3071e01b9d01e9df8fd81859ee3e52d1447c7b00fd9f401ea8d2d9ed9e33364736f6c63430008100033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b47997506000000000000000000000000bef7e44253b520e1595abcb2bde3aee640aac070000000000000000000000000c1d02957b4840107692ce28495340a7ba697e96800000000000000000000000088350e5eff4f2039dffe37dd1392728fed59f190000000000000000000000000e4a082ba60ef166e6e4f45b86e9604c722cee436000000000000000000000000c11c8b944c9c38a3daa942bd3a61ea03a2c733e5000000000000000000000000000000000000000000000000000000000000000c536565642046696e616e6365000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045345454400000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name_ (string): Seed Finance
Arg [1] : symbol_ (string): SEED
Arg [2] : router_ (address): 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506
Arg [3] : lr (address): 0xbef7E44253B520e1595aBCB2bdE3aEe640aaC070
Arg [4] : tr (address): 0xc1d02957b4840107692cE28495340a7BA697e968
Arg [5] : aifr (address): 0x88350E5eFF4F2039dFFe37DD1392728Fed59F190
Arg [6] : fp (address): 0xe4A082ba60ef166E6e4f45B86E9604C722CEE436
Arg [7] : dev (address): 0xC11c8B944c9c38a3daA942BD3a61eA03A2c733e5
-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [2] : 0000000000000000000000001b02da8cb0d097eb8d57a175b88c7d8b47997506
Arg [3] : 000000000000000000000000bef7e44253b520e1595abcb2bde3aee640aac070
Arg [4] : 000000000000000000000000c1d02957b4840107692ce28495340a7ba697e968
Arg [5] : 00000000000000000000000088350e5eff4f2039dffe37dd1392728fed59f190
Arg [6] : 000000000000000000000000e4a082ba60ef166e6e4f45b86e9604c722cee436
Arg [7] : 000000000000000000000000c11c8b944c9c38a3daa942bd3a61ea03a2c733e5
Arg [8] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [9] : 536565642046696e616e63650000000000000000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [11] : 5345454400000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
25953:30102:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;54875:151;;;;;;;;;;-1:-1:-1;54875:151:0;;;;;:::i;:::-;;:::i;:::-;;26712:64;;;;;;;;;;-1:-1:-1;26712:64:0;;;;-1:-1:-1;;;;;26712:64:0;;;;;;-1:-1:-1;;;;;547:32:1;;;529:51;;517:2;502:18;26712:64:0;;;;;;;;25672:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;26899:31::-;;;;;;;;;;-1:-1:-1;26899:31:0;;;;-1:-1:-1;;;;;26899:31:0;;;47853:253;;;;;;;;;;-1:-1:-1;47853:253:0;;;;;:::i;:::-;;:::i;:::-;;;1765:14:1;;1758:22;1740:41;;1728:2;1713:18;47853:253:0;1600:187:1;28548:36:0;;;;;;;;;;;;;;;;;;;1938:25:1;;;1926:2;1911:18;28548:36:0;1792:177:1;51701:536:0;;;;;;;;;;-1:-1:-1;51701:536:0;;;;;:::i;:::-;;:::i;:::-;;;;2509:25:1;;;2565:2;2550:18;;2543:34;;;;2593:18;;;2586:34;;;;2651:2;2636:18;;2629:34;2694:3;2679:19;;2672:35;2738:3;2723:19;;2716:35;2496:3;2481:19;51701:536:0;2226:531:1;50311:102:0;;;;;;;;;;-1:-1:-1;50393:12:0;;50311:102;;28898:33;;;;;;;;;;;;;;;;55363:97;;;;;;;;;;-1:-1:-1;55363:97:0;;;;;:::i;:::-;;:::i;53542:542::-;;;;;;;;;;-1:-1:-1;53542:542:0;;;;;:::i;:::-;;:::i;33600:465::-;;;;;;;;;;-1:-1:-1;33600:465:0;;;;;:::i;:::-;;:::i;48114:183::-;;;;;;;;;;;;;:::i;28665:33::-;;;;;;;;;;;;;;;;26357:36;;;;;;;;;;;;26392:1;26357:36;;49963:108;;;;;;;;;;-1:-1:-1;49963:108:0;;;;;:::i;:::-;;:::i;25858:83::-;;;;;;;;;;-1:-1:-1;25924:9:0;;;;25858:83;;;3854:4:1;3842:17;;;3824:36;;3812:2;3797:18;25858:83:0;3682:184:1;50755:634:0;;;;;;;;;;-1:-1:-1;50755:634:0;;;;;:::i;:::-;;:::i;25434:22::-;;;;;;;;;;-1:-1:-1;25434:22:0;;;;;;;;26400:49;;;;;;;;;;-1:-1:-1;26400:49:0;-1:-1:-1;;26400:49:0;;47439:406;;;;;;;;;;-1:-1:-1;47439:406:0;;;;;:::i;:::-;;:::i;28778:37::-;;;;;;;;;;;;;;;;28376:25;;;;;;;;;;-1:-1:-1;28376:25:0;;;;-1:-1:-1;;;;;28376:25:0;;;28083:63;;;;;;;;;;-1:-1:-1;28083:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;48481:585;;;;;;;;;;-1:-1:-1;48481:585:0;;;;;:::i;:::-;;:::i;26187:43::-;;;;;;;;;;-1:-1:-1;26187:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;52245:290;;;;;;;;;;-1:-1:-1;52245:290:0;;;;;:::i;:::-;;:::i;26980:22::-;;;;;;;;;;-1:-1:-1;26980:22:0;;;;-1:-1:-1;;;;;26980:22:0;;;26148:32;;;;;;;;;;-1:-1:-1;26148:32:0;;;;-1:-1:-1;;;;;26148:32:0;;;55879:173;;;;;;;;;;-1:-1:-1;55879:173:0;;;;;:::i;:::-;;:::i;26937:36::-;;;;;;;;;;-1:-1:-1;26937:36:0;;;;-1:-1:-1;;;;;26937:36:0;;;26661:42;;;;;;;;;;;;26698:5;26661:42;;28984:27;;;;;;;;;;;;;;;;26783:64;;;;;;;;;;-1:-1:-1;26783:64:0;;;;-1:-1:-1;;;;;26783:64:0;;;26518:39;;;;;;;;;;;;26556:1;26518:39;;5079:86;;;;;;;;;;-1:-1:-1;5150:7:0;;-1:-1:-1;;;5150:7:0;;;;5079:86;;27512:30;;;;;;;;;;;;;;;;28338:29;;;;;;;;;;;;;;;;28822:31;;;;;;;;;;;;;;;;27104:23;;;;;;;;;;-1:-1:-1;27104:23:0;;;;-1:-1:-1;;;;;27104:23:0;;;54654:213;;;;;;;;;;-1:-1:-1;54654:213:0;;;;;:::i;:::-;;:::i;28408:21::-;;;;;;;;;;;;;;;;52543:256;;;;;;;;;;-1:-1:-1;52543:256:0;;;;;:::i;:::-;;:::i;27011:23::-;;;;;;;;;;-1:-1:-1;27011:23:0;;;;-1:-1:-1;;;27011:23:0;;;;;;50424:136;;;;;;;;;;-1:-1:-1;50424:136:0;;;;;:::i;:::-;;:::i;2675:103::-;;;;;;;;;;;;;:::i;49373:276::-;;;;;;;;;;-1:-1:-1;49373:276:0;;;;;:::i;:::-;;:::i;48398:75::-;;;;;;;;;;;;;:::i;55468:131::-;;;;;;;;;;-1:-1:-1;55468:131:0;;;;;:::i;:::-;;:::i;55248:107::-;;;;;;;;;;-1:-1:-1;55248:107:0;;;;;:::i;:::-;-1:-1:-1;;;;;55330:17:0;55303:7;55330:17;;;:12;:17;;;;;;;55248:107;28860:29;;;;;;;;;;;;;;;;28438:32;;;;;;;;;;;;;;;;29018:25;;;;;;;;;;;;;;;;27134:29;;;;;;;;;;-1:-1:-1;27134:29:0;;;;;:::i;:::-;;:::i;27192:::-;;;;;;;;;;;;;;;;28477:31;;;;;;;;;;;;;;;;55034:101;;;;;;;;;;-1:-1:-1;55034:101:0;;;;;:::i;:::-;;:::i;48305:85::-;;;;;;;;;;-1:-1:-1;48376:6:0;;;;48375:7;48305:85;;28591:30;;;;;;;;;;;;;;;;2027:87;;;;;;;;;;-1:-1:-1;2100:6:0;;;;;-1:-1:-1;;;;;2100:6:0;2027:87;;50083:220;;;;;;;;;;-1:-1:-1;50083:220:0;;;;;:::i;:::-;;:::i;27407:22::-;;;;;;;;;;-1:-1:-1;27407:22:0;;;;;;;;55143:97;;;;;;;;;;-1:-1:-1;55216:16:0;;55143:97;;28264:25;;;;;;;;;;-1:-1:-1;28264:25:0;;;;;;;;;;;28153:65;;;;;;;;;;-1:-1:-1;28153:65:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;25763:87;;;;;;;;;;;;;:::i;27549:35::-;;;;;;;;;;;;;;;;51397:143;;;;;;;;;;;;;:::i;51548:145::-;;;;;;;;;;;;;:::i;46835:596::-;;;;;;;;;;-1:-1:-1;46835:596:0;;;;;:::i;:::-;;:::i;28298:33::-;;;;;;;;;;-1:-1:-1;28298:33:0;;;;;;;-1:-1:-1;;;;;28298:33:0;;;27078:19;;;;;;;;;;-1:-1:-1;27078:19:0;;;;-1:-1:-1;;;;;27078:19:0;;;33377:215;;;;;;;;;;-1:-1:-1;33377:215:0;;;;;:::i;:::-;;:::i;50605:142::-;;;;;;;;;;;;;:::i;25406:21::-;;;;;;;;;;;;;:::i;55724:147::-;;;;;;;;;;-1:-1:-1;55724:147:0;;;;;:::i;:::-;;:::i;27471:34::-;;;;;;;;;;;;;;;;28938:37;;;;;;;;;;;;;;;;44456:767;;;;;;;;;;;;;:::i;55607:109::-;;;;;;;;;;-1:-1:-1;55607:109:0;;;;;:::i;:::-;;:::i;28628:28::-;;;;;;;;;;;;;;;;26456:55;;;;;;;;;;-1:-1:-1;26456:55:0;-1:-1:-1;;;;;26456:55:0;;28227:28;;;;;;;;;;-1:-1:-1;28227:28:0;;;;;;;;27984:41;;;;;;;;;;;;;;;;26856:36;;;;;;;;;;-1:-1:-1;26856:36:0;;;;-1:-1:-1;;;;;26856:36:0;;;28705:32;;;;;;;;;;;;;;;;46376:249;;;;;;;;;;-1:-1:-1;46376:249:0;;;;;:::i;:::-;;:::i;25380:19::-;;;;;;;;;;;;;:::i;28744:27::-;;;;;;;;;;;;;;;;27854:31;;;;;;;;;;;;;;;;49074:291;;;;;;;;;;-1:-1:-1;49074:291:0;;;;;:::i;:::-;;:::i;52807:262::-;;;;;;;;;;-1:-1:-1;52807:262:0;;;;;:::i;:::-;;:::i;46633:194::-;;;;;;;;;;-1:-1:-1;46633:194:0;;;;;:::i;:::-;-1:-1:-1;;;;;46785:25:0;;;46753:7;46785:25;;;:17;:25;;;;;;;;:34;;;;;;;;;;;;;46633:194;46141:227;;;;;;;;;;-1:-1:-1;46141:227:0;;;;;:::i;:::-;;:::i;27892:36::-;;;;;;;;;;;;;;;;49657:294;;;;;;;;;;-1:-1:-1;49657:294:0;;;;;:::i;:::-;;:::i;27436:28::-;;;;;;;;;;-1:-1:-1;27436:28:0;;;;;;;;;;;2933:201;;;;;;;;;;-1:-1:-1;2933:201:0;;;;;:::i;:::-;;:::i;28515:26::-;;;;;;;;;;;;;;;;54092:554;;;;;;;;;;-1:-1:-1;54092:554:0;;;;;:::i;:::-;;:::i;27041:30::-;;;;;;;;;;-1:-1:-1;27041:30:0;;;;-1:-1:-1;;;;;27041:30:0;;;27937:38;;;;;;;;;;-1:-1:-1;27937:38:0;;;;;;;;;;;8179:10:1;8167:23;;;8149:42;;8137:2;8122:18;27937:38:0;8005:192:1;27804:41:0;;;;;;;;;;-1:-1:-1;27804:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;28032:42;;;;;;;;;;;;;;;;54875:151;1913:13;:11;:13::i;:::-;54935:4:::1;54931:88;;;54956:8;:6;:8::i;:::-;54875:151:::0;:::o;54931:88::-:1;54997:10;:8;:10::i;25672:83::-:0;25709:13;25742:5;25735:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25672:83;:::o;47853:253::-;47996:10;47956:4;47978:29;;;:17;:29;;;;;;;;-1:-1:-1;;;;;47978:38:0;;;;;;;;;;:46;;;48040:36;47956:4;;47978:38;;48040:36;;;;48019:5;1938:25:1;;1926:2;1911:18;;1792:177;48040:36:0;;;;;;;;-1:-1:-1;48094:4:0;47853:253;;;;;:::o;51701:536::-;51805:7;51827;51849;51871:6;51892;51913:7;51989:21;;51970:16;;:40;;;;:::i;:::-;52025:26;;52066:27;;52108:32;52132:7;52108:23;:32::i;:::-;52155:33;52180:7;52155:24;:33::i;:::-;51948:281;;;;-1:-1:-1;51948:281:0;;-1:-1:-1;51948:281:0;-1:-1:-1;51948:281:0;;-1:-1:-1;52203:15:0;;-1:-1:-1;51701:536:0;-1:-1:-1;;51701:536:0:o;55363:97::-;1913:13;:11;:13::i;:::-;55431::::1;:21:::0;;;::::1;;;;-1:-1:-1::0;;55431:21:0;;::::1;::::0;;;::::1;::::0;;55363:97::o;53542:542::-;1913:13;:11;:13::i;:::-;53746:17:::1;:33:::0;;;53790:16:::1;:31:::0;;;53832:21:::1;:41:::0;;;53884:11:::1;:21:::0;;;53916:15:::1;:29:::0;;;53972:104:::1;53934:11:::0;53972:83:::1;53898:7:::0;53972:83;53856:17;53972:83;53766:13;53809:12;53972:21:::1;:39::i;:::-;:43:::0;::::1;:66::i;:104::-;53956:13;:120:::0;-1:-1:-1;;;;;53542:542:0:o;33600:465::-;33743:4;33730:2;-1:-1:-1;;;;;26294:18:0;;26286:43;;;;-1:-1:-1;;;26286:43:0;;9051:2:1;26286:43:0;;;9033:21:1;9090:2;9070:18;;;9063:30;-1:-1:-1;;;9109:18:1;;;9102:42;9161:18;;26286:43:0;;;;;;;;;-1:-1:-1;;;;;33774:23:0;::::1;26447:1;33774:23:::0;;;:17:::1;:23;::::0;;;;;;;33798:10:::1;33774:35:::0;;;;;;;;-1:-1:-1;;33774:50:0::1;33770:225;;33879:104;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;33879:104:0::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;;;33879:23:0;::::1;-1:-1:-1::0;33879:23:0;;;:17:::1;:23:::0;;;;;33921:10:::1;33879:67:::0;;;;;;;;;;:104:::1;::::0;33951:5;;33879:71:::1;:104::i;:::-;-1:-1:-1::0;;;;;33841:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;;;33865:10:::1;33841:35:::0;;;;;;;:142;33770:225:::1;34005:30;34019:4;34025:2;34029:5;34005:13;:30::i;:::-;-1:-1:-1::0;34053:4:0::1;::::0;33600:465;-1:-1:-1;;;;;33600:465:0:o;48114:183::-;48272:16;;48260:4;;-1:-1:-1;;;;;48260:4:0;;;48167:7;48247:18;;;:12;:18;;;;;;;48236:4;;;;;;48223:18;;;;;;48167:7;;48207:82;;48272:16;;48208:58;;48247:18;48208:34;;48223:18;26640:12;;:2;:12;:::i;:::-;26627:25;;:10;:25;:::i;:::-;27289:35;;-1:-1:-1;;;;;27289:35:0;:::i;:::-;27277:48;;-1:-1:-1;;;;;27277:48:0;:::i;:::-;48208:14;;:34::i;:58::-;48207:64;;:82::i;:::-;48187:102;;48114:183;:::o;49963:108::-;1913:13;:11;:13::i;:::-;50026:12:::1;:37:::0;;-1:-1:-1;;;;;;50026:37:0::1;-1:-1:-1::0;;;;;50026:37:0;;;::::1;::::0;;;::::1;::::0;;49963:108::o;50755:634::-;1913:13;:11;:13::i;:::-;50927:1:::1;50899:25;:29;;;50877:122;;;::::0;-1:-1:-1;;;50877:122:0;;11321:2:1;50877:122:0::1;::::0;::::1;11303:21:1::0;11360:2;11340:18;;;11333:30;11399:34;11379:18;;;11372:62;-1:-1:-1;;;11450:18:1;;;11443:41;11501:19;;50877:122:0::1;11119:407:1::0;50877:122:0::1;51151:24;:52:::0;;-1:-1:-1;;51151:52:0::1;;::::0;::::1;::::0;;::::1;::::0;;;51264:26:::1;::::0;-1:-1:-1;51236:54:0::1;51214:167;;;::::0;-1:-1:-1;;;51214:167:0;;11733:2:1;51214:167:0::1;::::0;::::1;11715:21:1::0;11772:2;11752:18;;;11745:30;11811:34;11791:18;;;11784:62;11882:33;11862:18;;;11855:61;11933:19;;51214:167:0::1;11531:427:1::0;47439:406:0;47620:10;47539:4;47602:29;;;:17;:29;;;;;;;;-1:-1:-1;;;;;47602:62:0;;;;;;;;;;:78;;47669:10;47602:66;:78::i;:::-;47579:10;47561:29;;;;:17;:29;;;;;;;;-1:-1:-1;;;;;47561:38:0;;;;;;;;;;;;:119;;;47696;1938:25:1;;;47561:38:0;;47696:119;;1911:18:1;47696:119:0;1792:177:1;48481:585:0;1913:13;:11;:13::i;:::-;48688:21:::1;:46:::0;;-1:-1:-1;;;;;;48688:46:0;;::::1;-1:-1:-1::0;;;;;48688:46:0;;::::1;;::::0;;48745:16:::1;:36:::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;48792:21:::1;:46:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;48849:7:::1;:18:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;48880:29:0;;;:11:::1;:29;::::0;;;;;:36;;-1:-1:-1;;48880:36:0;;::::1;-1:-1:-1::0;48880:36:0;;::::1;::::0;;;48939:21;;;::::1;48927:34:::0;;;;;:41;;;::::1;::::0;::::1;::::0;;48991:21;;;::::1;48979:34:::0;;;;;:41;;;::::1;::::0;::::1;::::0;;49043:7;;;;::::1;49031:20:::0;;;;;:27;;;;::::1;;::::0;;48481:585::o;52245:290::-;1913:13;:11;:13::i;:::-;52409:1:::1;52384:22;:26;52362:108;;;::::0;-1:-1:-1;;;52362:108:0;;12165:2:1;52362:108:0::1;::::0;::::1;12147:21:1::0;;;12184:18;;;12177:30;12243:34;12223:18;;;12216:62;12295:18;;52362:108:0::1;11963:356:1::0;52362:108:0::1;52481:21;:46:::0;52245:290::o;55879:173::-;1913:13;:11;:13::i;:::-;55981:12:::1;:28:::0;;;;56020:10:::1;:24:::0;55879:173::o;54654:213::-;1913:13;:11;:13::i;:::-;54769:18:::1;:37:::0;;;;54817:22:::1;:42:::0;54654:213::o;52543:256::-;1913:13;:11;:13::i;:::-;52669:1:::1;52649:17;:21;52627:107;;;::::0;-1:-1:-1;;;52627:107:0;;12526:2:1;52627:107:0::1;::::0;::::1;12508:21:1::0;12565:2;12545:18;;;12538:30;12604:34;12584:18;;;12577:62;-1:-1:-1;;;12655:18:1;;;12648:34;12699:19;;52627:107:0::1;12324:400:1::0;52627:107:0::1;52745:26;:46:::0;52543:256::o;50424:136::-;50535:16;;-1:-1:-1;;;;;50513:17:0;;50486:7;50513:17;;;:12;:17;;;;;;50486:7;;50513:39;;:17;:21;:39::i;2675:103::-;1913:13;:11;:13::i;:::-;2740:30:::1;2767:1;2740:18;:30::i;:::-;2675:103::o:0;49373:276::-;1913:13;:11;:13::i;:::-;49474:18;49466:49:::1;;;::::0;-1:-1:-1;;;49466:49:0;;12931:2:1;49466:49:0::1;::::0;::::1;12913:21:1::0;12970:2;12950:18;;;12943:30;-1:-1:-1;;;12989:18:1;;;12982:48;13047:18;;49466:49:0::1;12729:342:1::0;49466:49:0::1;49528:9;49548:94;49560:18:::0;;::::1;49548:94;;;49627:3;49601:11;:23;49613:7;;49621:1;49613:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;49601:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;49601:23:0;:29;;-1:-1:-1;;49601:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;49580:4;::::1;::::0;::::1;:::i;:::-;;;;49548:94;;;49455:194;49373:276:::0;;;:::o;48398:75::-;48453:4;;;;;;;;;-1:-1:-1;;;;;48453:4:0;-1:-1:-1;;;;;48440:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55468:131;1913:13;:11;:13::i;:::-;55551:18:::1;:40:::0;;-1:-1:-1;;;;;55551:40:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;55551:40:0;;::::1;::::0;;;::::1;::::0;;55468:131::o;27134:29::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27134:29:0;;-1:-1:-1;27134:29:0;:::o;55034:101::-;1913:13;:11;:13::i;:::-;55104:16:::1;:23:::0;;-1:-1:-1;;55104:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;55034:101::o;50083:220::-;1913:13;:11;:13::i;:::-;50188:1:::1;50172:17:::0;::::1;::::0;::::1;::::0;:46:::1;;;50205:6;;;;;;;;;-1:-1:-1::0;;;;;50205:6:0::1;-1:-1:-1::0;;;;;50205:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;50193:25:0::1;:5;;50199:1;50193:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;50193:25:0::1;;50172:46;50164:55;;;::::0;::::1;;50230:20;:12;50245:5:::0;;50230:20:::1;:::i;:::-;-1:-1:-1::0;50272:5:0;;50278:16:::1;50293:1;50272:5:::0;50278:16:::1;:::i;:::-;50272:23;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;50261:8;:34:::0;;-1:-1:-1;;;;;;50261:34:0::1;-1:-1:-1::0;;;;;50261:34:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;50083:220:0:o;25763:87::-;25802:13;25835:7;25828:14;;;;;:::i;51397:143::-;51449:7;26698:5;51492:26;;51477:12;;:41;;;;:::i;:::-;51476:56;;;;:::i;51548:145::-;51601:7;26698:5;51644:27;;51629:12;;:42;;;;:::i;46835:596::-;46999:10;46940:4;46981:29;;;:17;:29;;;;;;;;-1:-1:-1;;;;;46981:38:0;;;;;;;;;;47034:27;;;47030:237;;47096:10;47119:1;47078:29;;;:17;:29;;;;;;;;-1:-1:-1;;;;;47078:38:0;;;;;;;;;:42;47030:237;;;47194:61;:8;47225:15;47194:12;:61::i;:::-;47171:10;47153:29;;;;:17;:29;;;;;;;;-1:-1:-1;;;;;47153:38:0;;;;;;;;;:102;47030:237;47305:10;47352:29;;;;:17;:29;;;;;;;;-1:-1:-1;;;;;47282:119:0;;47352:38;;;;;;;;;;;47282:119;;1938:25:1;;;47282:119:0;;47305:10;47282:119;;1911:18:1;47282:119:0;;;;;;;-1:-1:-1;47419:4:0;;46835:596;-1:-1:-1;;;46835:596:0:o;33377:215::-;33504:4;33482:2;-1:-1:-1;;;;;26294:18:0;;26286:43;;;;-1:-1:-1;;;26286:43:0;;9051:2:1;26286:43:0;;;9033:21:1;9090:2;9070:18;;;9063:30;-1:-1:-1;;;9109:18:1;;;9102:42;9161:18;;26286:43:0;8849:336:1;26286:43:0;33526:36:::1;33540:10;33552:2;33556:5;33526:13;:36::i;:::-;;33580:4;33573:11;;26340:1;33377:215:::0;;;;;:::o;50605:142::-;50701:24;;50686:12;;50658:7;;26698:5;;50686:39;;50701:24;;;50686:39;:::i;25406:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;55724:147::-;1913:13;:11;:13::i;:::-;55812:10:::1;:24:::0;;-1:-1:-1;;;;;;55812:24:0::1;-1:-1:-1::0;;;;;55812:24:0;;;::::1;::::0;;;::::1;::::0;;;55847:6:::1;:16:::0;55724:147::o;44456:767::-;29083:6;:13;;-1:-1:-1;;29083:13:0;29092:4;29083:13;;;1913::::1;:11;:13::i;:::-;44532:21:::2;:25:::0;44528:198:::2;;44601:16;::::0;44593:64:::2;::::0;44575:12:::2;::::0;-1:-1:-1;;;;;44601:16:0::2;::::0;44631:21:::2;::::0;44575:12;44593:64;44575:12;44593:64;44631:21;44601:16;44593:64:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44574:83;;;44680:7;44672:42;;;::::0;-1:-1:-1;;;44672:42:0;;14141:2:1;44672:42:0::2;::::0;::::2;14123:21:1::0;14180:2;14160:18;;;14153:30;-1:-1:-1;;;14199:18:1;;;14192:52;14261:18;;44672:42:0::2;13939:346:1::0;44672:42:0::2;44559:167;44528:198;44793:16;::::0;44782:4:::2;44738:20;44761:27:::0;;;:12:::2;:27;::::0;;;;;44738:20;;44761:49:::2;::::0;:27;:31:::2;:49::i;:::-;44738:72:::0;-1:-1:-1;44825:16:0;;44821:395:::2;;44882:16;::::0;;44896:1:::2;44882:16:::0;;;;;::::2;::::0;;44858:21:::2;::::0;44882:16:::2;::::0;::::2;::::0;;::::2;::::0;::::2;;::::0;-1:-1:-1;44882:16:0::2;44858:40;;44931:4;44913;44918:1;44913:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;44913:23:0;;::::2;:7;::::0;;::::2;::::0;;;;;;:23;;;;44961:6:::2;::::0;:13:::2;::::0;;-1:-1:-1;;;44961:13:0;;;;:6;;;::::2;::::0;:11:::2;::::0;:13:::2;::::0;;::::2;::::0;44913:7;;44961:13;;;;;:6;:13:::2;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44951:4;44956:1;44951:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;44951:23:0;;::::2;:7;::::0;;::::2;::::0;;;;;:23;44989:6:::2;::::0;45139:16:::2;::::0;44989:215:::2;::::0;-1:-1:-1;;;44989:215:0;;:6;;::::2;::::0;:57:::2;::::0;:215:::2;::::0;45065:12;;44989:6:::2;::::0;45116:4;;45139:16;;::::2;::::0;45174:15:::2;::::0;44989:215:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;44843:373;44821:395;-1:-1:-1::0;29119:6:0;:14;;-1:-1:-1;;29119:14:0;;;44456:767::o;55607:109::-;1913:13;:11;:13::i;:::-;55682:14:::1;:26:::0;55607:109::o;46376:249::-;1913:13;:11;:13::i;:::-;46450:5:::1;46447:171;;;46472:16;:24:::0;;-1:-1:-1;;46472:24:0::1;;::::0;::::1;;;;::::0;;46534:15:::1;46511:20;:38:::0;54875:151;:::o;46447:171::-:1;46582:16;:24:::0;;;::::1;;;;-1:-1:-1::0;;46582:24:0;;::::1;;::::0;;46376:249;:::o;25380:19::-;;;;;;;:::i;49074:291::-;49244:16;;49234:4;;-1:-1:-1;;;;;49234:4:0;49169:7;49221:18;;;:12;:18;;;;;;49169:7;;;;49221:40;;:22;:40::i;:::-;49194:67;;49292:65;49334:22;:20;:22::i;:::-;49292:37;49305:23;:16;49326:1;49305:20;:23::i;:::-;49292:8;;:12;:37::i;:65::-;49272:85;49074:291;-1:-1:-1;;;49074:291:0:o;52807:262::-;1913:13;:11;:13::i;:::-;52936:1:::1;52915:18;:22;52893:109;;;::::0;-1:-1:-1;;;52893:109:0;;15609:2:1;52893:109:0::1;::::0;::::1;15591:21:1::0;15648:2;15628:18;;;15621:30;15687:34;15667:18;;;15660:62;-1:-1:-1;;;15738:18:1;;;15731:35;15783:19;;52893:109:0::1;15407:401:1::0;52893:109:0::1;53013:27;:48:::0;52807:262::o;46141:227::-;1913:13;:11;:13::i;:::-;46210:5:::1;46206:155;;;46232:10;:18:::0;;-1:-1:-1;;46232:18:0::1;::::0;::::1;;;::::0;;46283:15:::1;46265;:33:::0;54875:151;:::o;46206:155::-:1;46331:10;:18:::0;;;::::1;;-1:-1:-1::0;;46331:18:0;;::::1;;::::0;;46141:227;:::o;49657:294::-;1913:13;:11;:13::i;:::-;49763:23;49755:54:::1;;;::::0;-1:-1:-1;;;49755:54:0;;12931:2:1;49755:54:0::1;::::0;::::1;12913:21:1::0;12970:2;12950:18;;;12943:30;-1:-1:-1;;;12989:18:1;;;12982:48;13047:18;;49755:54:0::1;12729:342:1::0;49755:54:0::1;49822:9;49842:102;49854:23:::0;;::::1;49842:102;;;49929:3;49900:9;:26;49910:12;;49923:1;49910:15;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;49900:26:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;49900:26:0;:32;;-1:-1:-1;;49900:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;49879:4;::::1;::::0;::::1;:::i;:::-;;;;49842:102;;2933:201:::0;1913:13;:11;:13::i;:::-;-1:-1:-1;;;;;3022:22:0;::::1;3014:73;;;::::0;-1:-1:-1;;;3014:73:0;;16015:2:1;3014:73:0::1;::::0;::::1;15997:21:1::0;16054:2;16034:18;;;16027:30;16093:34;16073:18;;;16066:62;-1:-1:-1;;;16144:18:1;;;16137:36;16190:19;;3014:73:0::1;15813:402:1::0;3014:73:0::1;3098:28;3117:8;3098:18;:28::i;54092:554::-:0;1913:13;:11;:13::i;:::-;54297:18:::1;:34:::0;;;54342:17:::1;:32:::0;;;54385:22:::1;:42:::0;;;54438:12:::1;:22:::0;;;54471:16:::1;:30:::0;;;54529:109:::1;54490:11:::0;54529:87:::1;54453:7:::0;54529:87;54410:17;54529:87;54318:13;54362:12;54529:22:::1;:41::i;:109::-;54512:14;:126:::0;-1:-1:-1;;;;;54092:554:0:o;8849:98::-;8907:7;8934:5;8938:1;8934;:5;:::i;9986:98::-;10044:7;10071:5;10075:1;10071;:5;:::i;9587:98::-;9645:7;9672:5;9676:1;9672;:5;:::i;2192:132::-;2100:6;;-1:-1:-1;;;;;2100:6:0;;;;;741:10;2256:23;2248:68;;;;-1:-1:-1;;;2248:68:0;;16422:2:1;2248:68:0;;;16404:21:1;;;16441:18;;;16434:30;16500:34;16480:18;;;16473:62;16552:18;;2248:68:0;16220:356:1;5675:118:0;4684:19;:17;:19::i;:::-;5735:7:::1;:14:::0;;-1:-1:-1;;;;5735:14:0::1;-1:-1:-1::0;;;5735:14:0::1;::::0;;5765:20:::1;5772:12;741:10:::0;;661:98;5772:12:::1;5765:20;::::0;-1:-1:-1;;;;;547:32:1;;;529:51;;517:2;502:18;5765:20:0::1;;;;;;;5675:118::o:0;5934:120::-;4943:16;:14;:16::i;:::-;5993:7:::1;:15:::0;;-1:-1:-1;;;;5993:15:0::1;::::0;;6024:22:::1;741:10:::0;6033:12:::1;661:98:::0;53077:219;53262:16;;53176:6;53252:27;;;:9;:27;;;;;;;;-1:-1:-1;;;;;53252:36:0;;;;;;;;;;53227:21;:19;:21::i;:::-;53220:68;;;;:::i;53304:230::-;53499:16;;53404:6;53488:28;;;:10;:28;;;;;;;-1:-1:-1;;;;;53488:37:0;;;;;;;;;;53455:22;:20;:22::i;11128:240::-;11248:7;11309:12;11301:6;;;;11293:29;;;;-1:-1:-1;;;11293:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;11344:5:0;;;11128:240::o;34457:3124::-;34597:4;4684:19;:17;:19::i;:::-;-1:-1:-1;;;;;34625:17:0;::::1;;::::0;;;:9:::1;:17;::::0;;;;;::::1;;34624:18;:43:::0;::::1;;;-1:-1:-1::0;;;;;;34647:20:0;::::1;;::::0;;;:9:::1;:20;::::0;;;;;::::1;;34646:21;34624:43;34616:67;;;::::0;-1:-1:-1;;;34616:67:0;;16988:2:1;34616:67:0::1;::::0;::::1;16970:21:1::0;17027:2;17007:18;;;17000:30;-1:-1:-1;;;17046:18:1;;;17039:41;17097:18;;34616:67:0::1;16786:335:1::0;34616:67:0::1;34700:6;::::0;::::1;;::::0;:23:::1;;-1:-1:-1::0;34710:13:0::1;::::0;::::1;::::0;::::1;;;34700:23;34696:104;;;34747:41;34762:6;34770:9;34781:6;34747:14;:41::i;:::-;34740:48;;;;34696:104;34812:16;:14;:16::i;:::-;34851;::::0;34841:27:::1;::::0;;;:9:::1;:27;::::0;;;;;;;-1:-1:-1;;;;;34841:38:0;::::1;::::0;;;;;;;:56;;34890:6;;34841:27;:56:::1;::::0;34890:6;;34841:56:::1;:::i;:::-;::::0;;;-1:-1:-1;;34919:16:0::1;::::0;34908:28:::1;::::0;;;:10:::1;:28:::0;;;;;;;-1:-1:-1;;;;;34908:36:0;::::1;::::0;;;;;;;:46;;34948:6;;34908:28;:46:::1;::::0;34948:6;;34908:46:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;34972:22:0;::::1;;::::0;;;:11:::1;:22;::::0;;;;;::::1;;34971:23;:44:::0;::::1;;;-1:-1:-1::0;35011:4:0::1;::::0;-1:-1:-1;;;;;34998:17:0;;::::1;35011:4:::0;::::1;34998:17;;34971:44;34967:680;;;35193:6;35170:20;35180:9;35170;:20::i;:::-;:29;;;;:::i;:::-;35144:22;:20;:22::i;:::-;:55;;35118:218;;;::::0;-1:-1:-1;;;35118:218:0;;17549:2:1;35118:218:0::1;::::0;::::1;17531:21:1::0;17588:3;17568:18;;;17561:31;17628:34;17608:18;;;17601:62;17699:34;17679:18;;;17672:62;17771:34;17750:19;;;17743:63;-1:-1:-1;;;17822:19:1;;;17815:36;17868:19;;35118:218:0::1;17347:546:1::0;35118:218:0::1;35479:1;35441:34;35465:9;35441:23;:34::i;:::-;:39;;35415:220;;;::::0;-1:-1:-1;;;35415:220:0;;18100:2:1;35415:220:0::1;::::0;::::1;18082:21:1::0;18139:3;18119:18;;;18112:31;18179:34;18159:18;;;18152:62;18250:34;18230:18;;;18223:62;18322:34;18301:19;;;18294:63;18394:25;18373:19;;;18366:54;18437:19;;35415:220:0::1;17898:564:1::0;35415:220:0::1;-1:-1:-1::0;;;;;35664:19:0;::::1;;::::0;;;:11:::1;:19;::::0;;;;;::::1;;35663:20;:38:::0;::::1;;;-1:-1:-1::0;35697:4:0::1;::::0;-1:-1:-1;;;;;35687:14:0;;::::1;35697:4:::0;::::1;35687:14;;35663:38;35659:481;;;35965:1;35929:32;35954:6;35929:24;:32::i;:::-;:37;;35903:225;;;::::0;-1:-1:-1;;;35903:225:0;;18669:2:1;35903:225:0::1;::::0;::::1;18651:21:1::0;18708:3;18688:18;;;18681:31;18748:34;18728:18;;;18721:62;18819:34;18799:18;;;18792:62;18891:34;18870:19;;;18863:63;18963:32;18942:19;;;18935:61;19013:19;;35903:225:0::1;18467:571:1::0;35903:225:0::1;36156:14;:12;:14::i;:::-;36152:55;;;36187:8;:6;:8::i;:::-;36223:20;:18;:20::i;:::-;36219:67;;;36260:14;:12;:14::i;:::-;36298:17;36318:28;36329:16;;36318:6;:10;;:28;;;;:::i;:::-;36298:48;;36359:25;36387:32;36401:6;36409:9;36387:13;:32::i;:::-;:110;;36488:9;36387:110;;;36435:37;36443:6;36451:9;36462;36435:7;:37::i;:::-;36511:18;::::0;36359:138;;-1:-1:-1;36511:18:0;;::::1;-1:-1:-1::0;;;;;36511:18:0::1;:32:::0;;::::1;::::0;:52:::1;;-1:-1:-1::0;36547:16:0::1;::::0;::::1;;36511:52;36507:418;;;36605:18;;;;;;;;;-1:-1:-1::0;;;;;36605:18:0::1;-1:-1:-1::0;;;;;36584:49:0::1;;36634:6;36642:99;36724:16;;36642:77;36667:9;36642:77;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;36642:20:0;::::1;;::::0;;;:12:::1;:20;::::0;;;;;;:77;:24:::1;:77::i;:99::-;36584:158;::::0;-1:-1:-1;;;;;;36584:158:0::1;::::0;;;;;;-1:-1:-1;;;;;19235:32:1;;;36584:158:0::1;::::0;::::1;19217:51:1::0;19284:18;;;19277:34;19190:18;;36584:158:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;36580:174:::0;36793:18:::1;::::0;36884:16:::1;::::0;-1:-1:-1;;;;;36833:23:0;;::::1;;::::0;;;:12:::1;:23;::::0;;;;;36793:18;;;::::1;;::::0;36772:49:::1;::::0;36822:9;;36833:68:::1;::::0;36884:16;36833:46:::1;::::0;36861:17;36833:27:::1;:46::i;:68::-;36772:130;::::0;-1:-1:-1;;;;;;36772:130:0::1;::::0;;;;;;-1:-1:-1;;;;;19235:32:1;;;36772:130:0::1;::::0;::::1;19217:51:1::0;19284:18;;;19277:34;19190:18;;36772:130:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;36768:146:::0;::::1;36941:16;:14;:16::i;:::-;36937:76;;;36996:4;::::0;36974:27:::1;::::0;-1:-1:-1;;;;;36983:17:0;;::::1;36996:4:::0;::::1;36983:17;36974:8;:27::i;:::-;37048:82;37073:9;37048:82;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;37048:20:0;::::1;;::::0;;;:12:::1;:20;::::0;;;;;;:82;:24:::1;:82::i;:::-;-1:-1:-1::0;;;;;37025:20:0;;::::1;;::::0;;;:12:::1;:20;::::0;;;;;:105;;;;37169:23;;::::1;::::0;;;;:70:::1;::::0;37211:17;37169:27:::1;:70::i;:::-;-1:-1:-1::0;;;;;37143:23:0;;::::1;;::::0;;;:12:::1;:23;::::0;;;;:96;;;;37256:18:::1;::::0;;;::::1;;:32:::0;;::::1;::::0;:52:::1;;-1:-1:-1::0;37292:16:0::1;::::0;::::1;;37256:52;37252:164;;;37350:18;::::0;37378:14:::1;::::0;37329:64:::1;::::0;-1:-1:-1;;;;;;37329:64:0;;::::1;::::0;::::1;1938:25:1::0;;;;37350:18:0;;;::::1;-1:-1:-1::0;;;;;37350:18:0::1;::::0;37329:48:::1;::::0;1911:18:1;;37329:64:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;37325:80:::0;::::1;37477:9;-1:-1:-1::0;;;;;37433:118:0::1;37456:6;-1:-1:-1::0;;;;;37433:118:0::1;-1:-1:-1::0;;;;;;;;;;;37501:39:0::1;37523:16;;37501:17;:21;;:39;;;;:::i;:::-;37433:118;::::0;1938:25:1;;;1926:2;1911:18;37433:118:0::1;;;;;;;-1:-1:-1::0;37569:4:0::1;::::0;34457:3124;-1:-1:-1;;;;;34457:3124:0:o;9230:98::-;9288:7;9315:5;9319:1;9315;:5;:::i;3294:191::-;3387:6;;;-1:-1:-1;;;;;3404:17:0;;;3387:6;3404:17;;;-1:-1:-1;;;;;;3404:17:0;;;;;;3437:40;;3387:6;;;;;;;;3437:40;;3368:16;;3437:40;3357:128;3294:191;:::o;5238:108::-;5150:7;;-1:-1:-1;;;5150:7:0;;;;5308:9;5300:38;;;;-1:-1:-1;;;5300:38:0;;19524:2:1;5300:38:0;;;19506:21:1;19563:2;19543:18;;;19536:30;-1:-1:-1;;;19582:18:1;;;19575:46;19638:18;;5300:38:0;19322:340:1;5423:108:0;5150:7;;-1:-1:-1;;;5150:7:0;;;;5482:41;;;;-1:-1:-1;;;5482:41:0;;19869:2:1;5482:41:0;;;19851:21:1;19908:2;19888:18;;;19881:30;-1:-1:-1;;;19927:18:1;;;19920:50;19987:18;;5482:41:0;19667:344:1;34073:376:0;34191:4;34208:17;34228:28;34239:16;;34228:6;:10;;:28;;;;:::i;:::-;34208:48;;34288:70;34311:9;34288:70;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;34288:18:0;;;;;;:12;:18;;;;;;;:70;:22;:70::i;:::-;-1:-1:-1;;;;;34267:18:0;;;;;;;:12;:18;;;;;;:91;;;;34388:16;;;;;;;:31;;34409:9;34388:20;:31::i;:::-;-1:-1:-1;;;;;34369:16:0;;;;;;:12;:16;;;;;:50;-1:-1:-1;34437:4:0;;-1:-1:-1;34073:376:0;;;;;:::o;31977:239::-;32122:21;;32103:16;;32052:15;;32103:40;;;:::i;:::-;32082:18;:61;32078:131;;;32160:16;:37;31977:239::o;45461:274::-;45545:10;;45508:4;;45545:10;;:54;;;;-1:-1:-1;27386:12:0;26392:1;27386:2;:12;:::i;:::-;27372:26;;:11;:26;:::i;:::-;45573:12;;:25;45545:54;:89;;;;-1:-1:-1;45630:4:0;;-1:-1:-1;;;;;45630:4:0;45616:10;:18;;45545:89;:114;;;;-1:-1:-1;45653:6:0;;;;45652:7;45545:114;:182;;;;;45714:12;;45696:15;;:30;;;;:::i;:::-;45676:15;:51;;45525:202;;45461:274;:::o;32224:1145::-;32267:6;;;;32262:21;;;32224:1145::o;32262:21::-;32295:19;32325:25;32371:19;;32353:15;:37;;;;:::i;:::-;32325:65;;32401:17;32439:15;;32421;:33;;;;:::i;:::-;32401:53;;32465:13;32481:27;32495:12;;32481:9;:13;;:27;;;;:::i;:::-;32465:43;;32519:13;32535:23;32545:12;;32535:5;:9;;:23;;;;:::i;:::-;32519:39;;32596:8;32575:17;:30;32571:361;;;32636:10;;32622:24;;32571:361;;;32690:8;32668:17;:31;32664:268;;32730:3;32716:17;;32664:268;;;32777:20;32755:17;:43;32751:181;;32829:2;32815:16;;32751:181;;;32875:12;32853:17;:35;32849:83;;32919:1;32905:15;;32849:83;32944:9;32964:183;32980:5;32976:1;:9;32964:183;;;33022:113;33117:17;26556:1;33117:2;:17;:::i;:::-;33022:72;33057:36;33081:11;33058:17;26556:1;33058:2;:17;:::i;33057:36::-;33022:12;;;:34;:72::i;:113::-;33007:12;:128;32987:3;;;;:::i;:::-;;;;32964:183;;;33193:12;;33178:28;;26640:12;26392:1;26640:2;:12;:::i;:::-;26627:25;;:10;:25;:::i;:::-;27289:35;;-1:-1:-1;;;;;27289:35:0;:::i;:::-;27277:48;;-1:-1:-1;;;;;27277:48:0;:::i;33178:28::-;33159:16;:47;33267:12;;33237:44;;33257:23;;:5;;:9;:23::i;:::-;33237:15;;;:19;:44::i;:::-;33219:15;:62;33294:12;;:19;;;-1:-1:-1;;;;;;33294:19:0;;;;-1:-1:-1;;;;;33294:12:0;;;;:17;;:19;;;;;:12;;:19;;;;;;;;:12;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33341:5;33331:30;33348:12;;33331:30;;;;1938:25:1;;1926:2;1911:18;;1792:177;33331:30:0;;;;;;;;32251:1118;;;;;;32224:1145::o;45743:242::-;45833:16;;45796:4;;45833:16;;;;;:41;;;;-1:-1:-1;45868:6:0;;;;45867:7;45833:41;:77;;;;-1:-1:-1;45906:4:0;;-1:-1:-1;;;;;45906:4:0;45892:10;:18;;45833:77;:144;;;;-1:-1:-1;45947:20:0;;:29;;45970:6;45947:29;:::i;39471:1593::-;29083:6;:13;;-1:-1:-1;;29083:13:0;29092:4;29083:13;;;39608:16:::1;::::0;39567:21:::1;::::0;-1:-1:-1;;;;;39567:21:0::1;29083:6:::0;39554:35;;;:12:::1;:35;::::0;;;;;29083:6;;39554:81:::1;::::0;:35;:39:::1;:81::i;:::-;39524:111;;39674:18;;39652:19;:40;:68;;;-1:-1:-1::0;39696:24:0;;39652:68:::1;39648:81;;;39722:7;;;39648:81;39830:21;::::0;-1:-1:-1;;;;;39830:21:0::1;39817:35;::::0;;;:12:::1;:35;::::0;;;;;;39792:4:::1;39771:27:::0;;;;;:92:::1;::::0;:31:::1;:92::i;:::-;39762:4;39741:27;::::0;;;:12:::1;:27;::::0;;;;;:122;;;;39887:21:::1;::::0;-1:-1:-1;;;;;39887:21:0::1;39874:35:::0;;;;;:39;;;39950:26:::1;:19:::0;39974:1:::1;39950:23;:26::i;:::-;39924:52;;39987:20;40010:89;40034:15;40010:89;;;;;;;;;;;;;;;;;:19:::0;;:89;:23:::1;:89::i;:::-;39987:112;;40116:12;40132:1;40116:17:::0;40112:57:::1;;40151:7;;;;;40112:57;40205:16;::::0;;40219:1:::1;40205:16:::0;;;;;::::1;::::0;;40181:21:::1;::::0;40205:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;40205:16:0::1;40181:40;;40250:4;40232;40237:1;40232:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;40232:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;40276:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;40276:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;40232:7;;40276:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40266:4;40271:1;40266:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;40266:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;40360:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;40360:188:0;;40326:21:::1;::::0;40360:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;40432:12;;40302:21:::1;::::0;40475:4;;40502::::1;::::0;40522:15:::1;::::0;40360:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;40561:26;40590:83;40616:13;40590:83;;;;;;;;;;;;;;;;;:21;::::0;:83;:25:::1;:83::i;:::-;40561:112;;40708:1;40690:15;:19;:45;;;;;40734:1;40713:18;:22;40690:45;40686:322;;;40752:6;::::0;40926:21:::1;::::0;40752:244:::1;::::0;-1:-1:-1;;;40752:244:0;;40828:4:::1;40752:244;::::0;::::1;20502:34:1::0;20552:18;;;20545:34;;;40752:6:0::1;20595:18:1::0;;;20588:34;;;20638:18;;;20631:34;-1:-1:-1;;;;;40926:21:0;;::::1;20681:19:1::0;;;20674:44;40966:15:0::1;20734:19:1::0;;;20727:35;40752:6:0;::::1;::::0;:22:::1;::::0;40782:18;;20436:19:1;;40752:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;40686:322;-1:-1:-1::0;;41041:15:0::1;41018:20;:38:::0;-1:-1:-1;;;;29107:1:0::1;29119:6:::0;:14;;-1:-1:-1;;29119:14:0;;;39471:1593::o;45231:222::-;45374:4;;45330;;-1:-1:-1;;;;;45374:12:0;;;:4;;:12;:32;;;;-1:-1:-1;;;;;;45391:15:0;;;;;;:11;:15;;;;;;;;45390:16;45374:32;45373:72;;;-1:-1:-1;45412:4:0;;-1:-1:-1;;;;;45412:10:0;;;:4;;:10;:32;;;;-1:-1:-1;;;;;;;;45427:17:0;;;;;:11;:17;;;;;;;;45426:18;;45231:222::o;37589:1874::-;37713:7;37733:21;37765:20;37796:15;37822:25;37858:19;37888:17;37935:4;;;;;;;;;-1:-1:-1;;;;;37935:4:0;-1:-1:-1;;;;;37922:17:0;:9;-1:-1:-1;;;;;37922:17:0;;37918:622;;37984:18;;37968:34;;38032:17;;38017:32;;38074:12;;38064:22;;38121;;38101:42;;38172:16;;38158:30;;38215:14;;38203:26;;37918:622;;;38289:17;;38273:33;;38336:16;;38321:31;;38377:11;;38367:21;;38423;;38403:41;;38473:15;;38459:29;;38515:13;;38503:25;;37918:622;38552:17;38572:40;38602:9;38572:25;:9;26698:5;38572:13;:25::i;:::-;:29;;:40::i;:::-;38552:60;-1:-1:-1;38632:25:0;38660:42;38690:11;38660:25;:9;26698:5;38660:13;:25::i;:42::-;38750:7;;-1:-1:-1;;;;;38750:7:0;38737:21;;;;:12;:21;;;;;;38632:70;;-1:-1:-1;38737:44:0;;38632:70;38737:25;:44::i;:::-;38726:7;;;-1:-1:-1;;;;;38726:7:0;;;38713:21;;;;:12;:21;;;;;:68;;;;38814:7;38845:16;;38814:7;;;;38797:66;;;-1:-1:-1;;;;;;;;;;;38797:66:0;38823:39;;:17;;:21;:39::i;:::-;38797:66;;1938:25:1;;;1926:2;1911:18;38797:66:0;;;;;;;38876:16;38895:79;38925:48;38965:7;38925:35;:12;38942:17;38925:16;:35::i;:48::-;38895:25;:9;26698:5;38895:13;:25::i;:79::-;39036:4;39015:27;;;;:12;:27;;;;;;38876:98;;-1:-1:-1;39015:41:0;;38876:98;39015:31;:41::i;:::-;39006:4;38985:27;;;;:12;:27;;;;;:71;;;;39117:16;;-1:-1:-1;;;;;39072:63:0;;;-1:-1:-1;;;;;;;;;;;39072:63:0;39104:30;;:8;;:12;:30::i;:::-;39072:63;;1938:25:1;;;1926:2;1911:18;39072:63:0;;;;;;;39148:14;39165:44;39195:13;39165:25;:9;26698:5;39165:13;:25::i;:44::-;39271:21;;-1:-1:-1;;;;;39271:21:0;39258:35;;;;:12;:35;;;;;;39148:61;;-1:-1:-1;39258:47:0;;39148:61;39258:39;:47::i;:::-;39220:12;:35;39233:21;;;;;;;;;-1:-1:-1;;;;;39233:21:0;-1:-1:-1;;;;;39220:35:0;-1:-1:-1;;;;;39220:35:0;;;;;;;;;;;;:85;;;;39338:21;;;;;;;;;-1:-1:-1;;;;;39338:21:0;-1:-1:-1;;;;;39321:69:0;39330:6;-1:-1:-1;;;;;39321:69:0;-1:-1:-1;;;;;;;;;;;39361:28:0;39372:16;;39361:6;:10;;:28;;;;:::i;:::-;39321:69;;1938:25:1;;;1926:2;1911:18;39321:69:0;;;;;;;39410:45;;;;;;;;;;;;-1:-1:-1;;;39410:45:0;;;;;;:9;;39424;;39410:13;:45::i;:::-;39403:52;37589:1874;-1:-1:-1;;;;;;;;;;;;;;37589:1874:0:o;45993:140::-;46081:6;;46042:4;;46081:6;;46080:7;:42;;;;-1:-1:-1;;46118:4:0;;-1:-1:-1;;;;;46118:4:0;46104:10;:18;;;45993:140::o;41072:3376::-;29083:6;:13;;-1:-1:-1;;29083:13:0;29092:4;29083:13;;;41193:16:::1;::::0;41182:4:::1;29083:6:::0;41161:27;;;:12:::1;:27;::::0;;;;;29083:6;;41161:49:::1;::::0;:27;:31:::1;:49::i;:::-;41138:72;;41242:22;;41227:12;:37;:58;;;-1:-1:-1::0;41268:17:0;;41227:58:::1;41223:71;;;41287:7;;;41223:71;41386:16;::::0;;41400:1:::1;41386:16:::0;;;;;::::1;::::0;;41330:21:::1;::::0;41306::::1;::::0;41386:16;41400:1;41386:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;41386:16:0::1;41362:40;;41431:4;41413;41418:1;41413:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;41413:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;41457:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;41457:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;41413:7;;41457:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41447:4;41452:1;41447:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;41447:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;41483:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;41483:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;41555:12;;41483:6:::1;::::0;41598:4;;41625::::1;::::0;41645:15:::1;::::0;41483:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;41684:33;41720:79;41746:13;41720:79;;;;;;;;;;;;;;;;;:21;::::0;:79;:25:::1;:79::i;:::-;41684:115;;41812:20;41843:25:::0;41879:15:::1;41911:10;41907:325;;;41953:17;;41938:32;;42005:22;;41985:42;;42052:12;;42042:22;;41907:325;;;42112:16;;42097:31;;42163:21;;42143:41;;42209:11;;42199:21;;41907:325;42249:16;::::0;::::1;;42244:61;;-1:-1:-1::0;42292:1:0::1;42244:61;42317:14;42334:48;42374:7:::0;42334:35:::1;:12:::0;42351:17;42334:16:::1;:35::i;:48::-;42317:65:::0;-1:-1:-1;42393:25:0::1;42421:55;42317:65:::0;42421:43:::1;:25:::0;42451:12;42421:29:::1;:43::i;:55::-;42393:83:::0;-1:-1:-1;42493:21:0;;42489:258:::1;;42558:16;::::0;42550:121:::1;::::0;42532:12:::1;::::0;-1:-1:-1;;;;;42558:16:0::1;::::0;42647:5:::1;::::0;42606:17;;42532:12;42550:121;42532:12;42550:121;42606:17;42558:16;42647:5;42550:121:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;42531:140:0;;-1:-1:-1;;42705:4:0::1;42694:15:::0;::::1;;;42686:49;;;::::0;-1:-1:-1;;;42686:49:0;;21286:2:1;42686:49:0::1;::::0;::::1;21268:21:1::0;21325:2;21305:18;;;21298:30;-1:-1:-1;;;21344:18:1;;;21337:51;21405:18;;42686:49:0::1;21084:345:1::0;42686:49:0::1;42516:231;42489:258;42767:20;42790:50;42833:6:::0;42790:38:::1;:25:::0;42820:7;42790:29:::1;:38::i;:50::-;42767:73:::0;-1:-1:-1;42851:26:0::1;42880:66;42767:73:::0;42880:48:::1;:25:::0;42910:17;42880:29:::1;:48::i;:66::-;42963:10;::::0;42851:95;;-1:-1:-1;;;;;;42963:10:0::1;:24:::0;;::::1;::::0;:38:::1;;;43000:1;42991:6;;:10;42963:38;42959:439;;;43018:20;43041:49;43083:6;43041:37;43071:6;;43041:25;:29;;:37;;;;:::i;:49::-;43018:72;;43126:55;43149:12;43126:55;;;;;;;;;;;;;-1:-1:-1::0;;;43126:55:0::1;;::::0;:18:::1;:22;;:55;;;;;:::i;:::-;43225:10;::::0;43217:110:::1;::::0;43105:76;;-1:-1:-1;43199:12:0::1;::::0;-1:-1:-1;;;;;43225:10:0;;::::1;::::0;43303:5:::1;::::0;43267:12;;43199;43217:110;43199:12;43217:110;43267:12;43225:10;43303:5;43217:110:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;43198:129:0;;-1:-1:-1;;43361:4:0::1;43350:15:::0;::::1;;;43342:44;;;::::0;-1:-1:-1;;;43342:44:0;;21636:2:1;43342:44:0::1;::::0;::::1;21618:21:1::0;21675:2;21655:18;;;21648:30;-1:-1:-1;;;21694:18:1;;;21687:46;21750:18;;43342:44:0::1;21434:340:1::0;43342:44:0::1;43003:395;;42959:439;43414:22:::0;;43410:271:::1;;43480:21;::::0;43472:127:::1;::::0;43454:12:::1;::::0;-1:-1:-1;;;;;43480:21:0::1;::::0;43575:5:::1;::::0;43533:18;;43454:12;43472:127;43454:12;43472:127;43533:18;43480:21;43575:5;43472:127:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;43453:146:0;;-1:-1:-1;;43633:4:0::1;43622:15:::0;::::1;;;43614:55;;;::::0;-1:-1:-1;;;43614:55:0;;21981:2:1;43614:55:0::1;::::0;::::1;21963:21:1::0;22020:2;22000:18;;;21993:30;22059:29;22039:18;;;22032:57;22106:18;;43614:55:0::1;21779:351:1::0;43614:55:0::1;43438:243;43410:271;43710:14;::::0;:32:::1;::::0;43729:12;43710:18:::1;:32::i;:::-;43693:14;:49:::0;43759:18:::1;::::0;;;::::1;-1:-1:-1::0;;;;;43759:18:0::1;:32:::0;;::::1;::::0;:52:::1;;;43810:1;43795:12;:16;43759:52;:78;;;;-1:-1:-1::0;43815:8:0::1;::::0;-1:-1:-1;;;;;43815:8:0::1;:22:::0;::::1;43759:78;43755:686;;;43884:8;::::0;43877:41:::1;::::0;-1:-1:-1;;;43877:41:0;;43912:4:::1;43877:41;::::0;::::1;529:51:1::0;43854:20:0::1;::::0;-1:-1:-1;;;;;43884:8:0::1;::::0;43877:26:::1;::::0;502:18:1;;43877:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43950:6;::::0;43933:228:::1;::::0;-1:-1:-1;;;43933:228:0;;43854:64;;-1:-1:-1;;;;;;43950:6:0::1;::::0;43933:75:::1;::::0;44016:12;;43933:228:::1;::::0;43950:6:::1;::::0;44068:12:::1;::::0;44107:4:::1;::::0;44131:15:::1;::::0;43933:228:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;44209:8:0::1;::::0;44202:41:::1;::::0;-1:-1:-1;;;44202:41:0;;44237:4:::1;44202:41;::::0;::::1;529:51:1::0;44176:23:0::1;::::0;-1:-1:-1;44246:12:0;;-1:-1:-1;;;;;;44209:8:0;;::::1;::::0;-1:-1:-1;44202:26:0::1;::::0;502:18:1;;44202:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;;;;:::i;:::-;44280:8;::::0;44298:18:::1;::::0;44273:61:::1;::::0;-1:-1:-1;;;44273:61:0;;-1:-1:-1;;;;;44298:18:0;;;::::1;::::0;::::1;44273:61;::::0;::::1;19217:51:1::0;19284:18;;;19277:34;;;;;-1:-1:-1;44280:8:0::1;::::0;44273:24:::1;::::0;19190:18:1;;44273:61:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;44374:18:0::1;::::0;44353:65:::1;::::0;-1:-1:-1;;;44353:65:0;;::::1;::::0;::::1;1938:25:1::0;;;44374:18:0;;;::::1;-1:-1:-1::0;;;;;44374:18:0::1;::::0;44353:48:::1;::::0;1911:18:1;;44353:65:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;44349:81:::0;43839:602:::1;;43755:686;41125:3323;;;;;;;;;;;-1:-1:-1::0;29119:6:0;:14;;-1:-1:-1;;29119:14:0;;;41072:3376::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:118:1;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;137:241;193:6;246:2;234:9;225:7;221:23;217:32;214:52;;;262:1;259;252:12;214:52;301:9;288:23;320:28;342:5;320:28;:::i;591:548::-;703:4;732:2;761;750:9;743:21;793:6;787:13;836:6;831:2;820:9;816:18;809:34;861:1;871:140;885:6;882:1;879:13;871:140;;;980:14;;;976:23;;970:30;946:17;;;965:2;942:26;935:66;900:10;;871:140;;;875:3;1060:1;1055:2;1046:6;1035:9;1031:22;1027:31;1020:42;1130:2;1123;1119:7;1114:2;1106:6;1102:15;1098:29;1087:9;1083:45;1079:54;1071:62;;;;591:548;;;;:::o;1144:131::-;-1:-1:-1;;;;;1219:31:1;;1209:42;;1199:70;;1265:1;1262;1255:12;1280:315;1348:6;1356;1409:2;1397:9;1388:7;1384:23;1380:32;1377:52;;;1425:1;1422;1415:12;1377:52;1464:9;1451:23;1483:31;1508:5;1483:31;:::i;:::-;1533:5;1585:2;1570:18;;;;1557:32;;-1:-1:-1;;;1280:315:1:o;1974:247::-;2033:6;2086:2;2074:9;2065:7;2061:23;2057:32;2054:52;;;2102:1;2099;2092:12;2054:52;2141:9;2128:23;2160:31;2185:5;2160:31;:::i;2762:454::-;2857:6;2865;2873;2881;2889;2942:3;2930:9;2921:7;2917:23;2913:33;2910:53;;;2959:1;2956;2949:12;2910:53;-1:-1:-1;;2982:23:1;;;3052:2;3037:18;;3024:32;;-1:-1:-1;3103:2:1;3088:18;;3075:32;;3154:2;3139:18;;3126:32;;-1:-1:-1;3205:3:1;3190:19;3177:33;;-1:-1:-1;2762:454:1;-1:-1:-1;2762:454:1:o;3221:456::-;3298:6;3306;3314;3367:2;3355:9;3346:7;3342:23;3338:32;3335:52;;;3383:1;3380;3373:12;3335:52;3422:9;3409:23;3441:31;3466:5;3441:31;:::i;:::-;3491:5;-1:-1:-1;3548:2:1;3533:18;;3520:32;3561:33;3520:32;3561:33;:::i;:::-;3221:456;;3613:7;;-1:-1:-1;;;3667:2:1;3652:18;;;;3639:32;;3221:456::o;3871:276::-;3929:6;3982:2;3970:9;3961:7;3957:23;3953:32;3950:52;;;3998:1;3995;3988:12;3950:52;4037:9;4024:23;4087:10;4080:5;4076:22;4069:5;4066:33;4056:61;;4113:1;4110;4103:12;4152:315;4220:6;4228;4281:2;4269:9;4260:7;4256:23;4252:32;4249:52;;;4297:1;4294;4287:12;4249:52;4333:9;4320:23;4310:33;;4393:2;4382:9;4378:18;4365:32;4406:31;4431:5;4406:31;:::i;:::-;4456:5;4446:15;;;4152:315;;;;;:::o;4652:671::-;4738:6;4746;4754;4762;4815:3;4803:9;4794:7;4790:23;4786:33;4783:53;;;4832:1;4829;4822:12;4783:53;4871:9;4858:23;4890:31;4915:5;4890:31;:::i;:::-;4940:5;-1:-1:-1;4997:2:1;4982:18;;4969:32;5010:33;4969:32;5010:33;:::i;:::-;5062:7;-1:-1:-1;5121:2:1;5106:18;;5093:32;5134:33;5093:32;5134:33;:::i;:::-;5186:7;-1:-1:-1;5245:2:1;5230:18;;5217:32;5258:33;5217:32;5258:33;:::i;:::-;4652:671;;;;-1:-1:-1;4652:671:1;;-1:-1:-1;;4652:671:1:o;5328:180::-;5387:6;5440:2;5428:9;5419:7;5415:23;5411:32;5408:52;;;5456:1;5453;5446:12;5408:52;-1:-1:-1;5479:23:1;;5328:180;-1:-1:-1;5328:180:1:o;5741:248::-;5809:6;5817;5870:2;5858:9;5849:7;5845:23;5841:32;5838:52;;;5886:1;5883;5876:12;5838:52;-1:-1:-1;;5909:23:1;;;5979:2;5964:18;;;5951:32;;-1:-1:-1;5741:248:1:o;5994:367::-;6057:8;6067:6;6121:3;6114:4;6106:6;6102:17;6098:27;6088:55;;6139:1;6136;6129:12;6088:55;-1:-1:-1;6162:20:1;;6205:18;6194:30;;6191:50;;;6237:1;6234;6227:12;6191:50;6274:4;6266:6;6262:17;6250:29;;6334:3;6327:4;6317:6;6314:1;6310:14;6302:6;6298:27;6294:38;6291:47;6288:67;;;6351:1;6348;6341:12;6288:67;5994:367;;;;;:::o;6366:566::-;6458:6;6466;6474;6527:2;6515:9;6506:7;6502:23;6498:32;6495:52;;;6543:1;6540;6533:12;6495:52;6583:9;6570:23;6616:18;6608:6;6605:30;6602:50;;;6648:1;6645;6638:12;6602:50;6687:70;6749:7;6740:6;6729:9;6725:22;6687:70;:::i;:::-;6776:8;;-1:-1:-1;6661:96:1;-1:-1:-1;;6861:2:1;6846:18;;6833:32;6874:28;6833:32;6874:28;:::i;:::-;6921:5;6911:15;;;6366:566;;;;;:::o;6937:437::-;7023:6;7031;7084:2;7072:9;7063:7;7059:23;7055:32;7052:52;;;7100:1;7097;7090:12;7052:52;7140:9;7127:23;7173:18;7165:6;7162:30;7159:50;;;7205:1;7202;7195:12;7159:50;7244:70;7306:7;7297:6;7286:9;7282:22;7244:70;:::i;:::-;7333:8;;7218:96;;-1:-1:-1;6937:437:1;-1:-1:-1;;;;6937:437:1:o;7379:388::-;7447:6;7455;7508:2;7496:9;7487:7;7483:23;7479:32;7476:52;;;7524:1;7521;7514:12;7476:52;7563:9;7550:23;7582:31;7607:5;7582:31;:::i;:::-;7632:5;-1:-1:-1;7689:2:1;7674:18;;7661:32;7702:33;7661:32;7702:33;:::i;8202:380::-;8281:1;8277:12;;;;8324;;;8345:61;;8399:4;8391:6;8387:17;8377:27;;8345:61;8452:2;8444:6;8441:14;8421:18;8418:38;8415:161;;8498:10;8493:3;8489:20;8486:1;8479:31;8533:4;8530:1;8523:15;8561:4;8558:1;8551:15;8415:161;;8202:380;;;:::o;8587:127::-;8648:10;8643:3;8639:20;8636:1;8629:31;8679:4;8676:1;8669:15;8703:4;8700:1;8693:15;8719:125;8784:9;;;8805:10;;;8802:36;;;8818:18;;:::i;9190:422::-;9279:1;9322:5;9279:1;9336:270;9357:7;9347:8;9344:21;9336:270;;;9416:4;9412:1;9408:6;9404:17;9398:4;9395:27;9392:53;;;9425:18;;:::i;:::-;9475:7;9465:8;9461:22;9458:55;;;9495:16;;;;9458:55;9574:22;;;;9534:15;;;;9336:270;;;9340:3;9190:422;;;;;:::o;9617:806::-;9666:5;9696:8;9686:80;;-1:-1:-1;9737:1:1;9751:5;;9686:80;9785:4;9775:76;;-1:-1:-1;9822:1:1;9836:5;;9775:76;9867:4;9885:1;9880:59;;;;9953:1;9948:130;;;;9860:218;;9880:59;9910:1;9901:10;;9924:5;;;9948:130;9985:3;9975:8;9972:17;9969:43;;;9992:18;;:::i;:::-;-1:-1:-1;;10048:1:1;10034:16;;10063:5;;9860:218;;10162:2;10152:8;10149:16;10143:3;10137:4;10134:13;10130:36;10124:2;10114:8;10111:16;10106:2;10100:4;10097:12;10093:35;10090:77;10087:159;;;-1:-1:-1;10199:19:1;;;10231:5;;10087:159;10278:34;10303:8;10297:4;10278:34;:::i;:::-;10348:6;10344:1;10340:6;10336:19;10327:7;10324:32;10321:58;;;10359:18;;:::i;:::-;10397:20;;9617:806;-1:-1:-1;;;9617:806:1:o;10428:131::-;10488:5;10517:36;10544:8;10538:4;10517:36;:::i;10564:168::-;10604:7;10670:1;10666;10662:6;10658:14;10655:1;10652:21;10647:1;10640:9;10633:17;10629:45;10626:71;;;10677:18;;:::i;:::-;-1:-1:-1;10717:9:1;;10564:168::o;10737:127::-;10798:10;10793:3;10789:20;10786:1;10779:31;10829:4;10826:1;10819:15;10853:4;10850:1;10843:15;10869:112;10901:1;10927;10917:35;;10932:18;;:::i;:::-;-1:-1:-1;10966:9:1;;10869:112::o;10986:128::-;11053:9;;;11074:11;;;11071:37;;;11088:18;;:::i;13076:127::-;13137:10;13132:3;13128:20;13125:1;13118:31;13168:4;13165:1;13158:15;13192:4;13189:1;13182:15;13208:135;13247:3;13268:17;;;13265:43;;13288:18;;:::i;:::-;-1:-1:-1;13335:1:1;13324:13;;13208:135::o;13348:251::-;13418:6;13471:2;13459:9;13450:7;13446:23;13442:32;13439:52;;;13487:1;13484;13477:12;13439:52;13519:9;13513:16;13538:31;13563:5;13538:31;:::i;13604:120::-;13644:1;13670;13660:35;;13675:18;;:::i;:::-;-1:-1:-1;13709:9:1;;13604:120::o;14422:980::-;14684:4;14732:3;14721:9;14717:19;14763:6;14752:9;14745:25;14789:2;14827:6;14822:2;14811:9;14807:18;14800:34;14870:3;14865:2;14854:9;14850:18;14843:31;14894:6;14929;14923:13;14960:6;14952;14945:22;14998:3;14987:9;14983:19;14976:26;;15037:2;15029:6;15025:15;15011:29;;15058:1;15068:195;15082:6;15079:1;15076:13;15068:195;;;15147:13;;-1:-1:-1;;;;;15143:39:1;15131:52;;15238:15;;;;15203:12;;;;15179:1;15097:9;15068:195;;;-1:-1:-1;;;;;;;15319:32:1;;;;15314:2;15299:18;;15292:60;-1:-1:-1;;;15383:3:1;15368:19;15361:35;15280:3;14422:980;-1:-1:-1;;;14422:980:1:o;16581:200::-;16647:9;;;16620:4;16675:9;;16703:10;;16715:12;;;16699:29;16738:12;;;16730:21;;16696:56;16693:82;;;16755:18;;:::i;17126:216::-;17190:9;;;17218:11;;;17165:3;17248:9;;17276:10;;17272:19;;17301:10;;17293:19;;17269:44;17266:70;;;17316:18;;:::i;:::-;17266:70;;17126:216;;;;:::o;20016:140::-;20074:5;20103:47;20144:4;20134:8;20130:19;20124:4;20103:47;:::i;20773:306::-;20861:6;20869;20877;20930:2;20918:9;20909:7;20905:23;20901:32;20898:52;;;20946:1;20943;20936:12;20898:52;20975:9;20969:16;20959:26;;21025:2;21014:9;21010:18;21004:25;20994:35;;21069:2;21058:9;21054:18;21048:25;21038:35;;20773:306;;;;;:::o;22135:184::-;22205:6;22258:2;22246:9;22237:7;22233:23;22229:32;22226:52;;;22274:1;22271;22264:12;22226:52;-1:-1:-1;22297:16:1;;22135:184;-1:-1:-1;22135:184:1:o;22324:931::-;22555:4;22603:3;22592:9;22588:19;22634:6;22623:9;22616:25;22660:2;22698:3;22693:2;22682:9;22678:18;22671:31;22722:6;22757;22751:13;22788:6;22780;22773:22;22826:3;22815:9;22811:19;22804:26;;22849:6;22846:1;22839:17;22892:2;22889:1;22879:16;22865:30;;22913:1;22923:194;22937:6;22934:1;22931:13;22923:194;;;23002:13;;-1:-1:-1;;;;;22998:39:1;22986:52;;23034:1;23093:14;;;;23058:12;;;;22952:9;22923:194;;;-1:-1:-1;;;;;;;23173:32:1;;;;23168:2;23153:18;;23146:60;-1:-1:-1;;;23237:2:1;23222:18;23215:34;23134:3;22324:931;-1:-1:-1;;22324:931:1:o;23260:245::-;23327:6;23380:2;23368:9;23359:7;23355:23;23351:32;23348:52;;;23396:1;23393;23386:12;23348:52;23428:9;23422:16;23447:28;23469:5;23447:28;:::i
Swarm Source
ipfs://e2f3071e01b9d01e9df8fd81859ee3e52d1447c7b00fd9f401ea8d2d9ed9e333
Net Worth in USD
Net Worth in ETH
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.