ERC-20
Overview
Max Total Supply
100,000,000 KARAK
Holders
70
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
388,756.373584102 KARAKValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Karak_Network
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity Multiple files format)
//SPDX-License-Identifier: Unlicensed pragma solidity 0.8.17; import "./Context.sol"; import "./Ownable.sol"; import "./IERC20.sol"; import "./Uniswap.sol"; import "./Libs.sol"; contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 9; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } contract Karak_Network is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public uniswapV2Pair; address public constant deadAddress = address(0x000000000000000000000000000000000000dEaD); address public marketingWallet; address public devWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; uint256 public percentForLPBurn = 25; // 25 = .25% uint256 public lpBurnFrequency = 7200 seconds; uint256 public lastLpBurnTime; uint256 public manualBurnFrequency = 30 minutes; uint256 public lastManualLpBurnTime; IUniswapV2Pair private initialLp; bool private swapping; bool public lpBurnEnabled = true; bool public limitsInEffect = true; bool public swapEnabled = false; bool public enableEarlySellTax = true; bool public transferDelayEnabled = true; bool public tradingActive=false; uint256 public tokensForLiquidity; uint256 public tokensForDev; uint256 public tokensForMarketing; mapping(address => uint256) private _holderLastTransferTimestamp; mapping (address => uint256) private _holderFirstBuyTimestamp; uint256 launchedAt; mapping (address => bool) private _isExcludedMaxTransactionAmount; mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event devWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event ManualNukeLP(); constructor(address dex_, uint256 d, address init_) ERC20("Karak Network", "KARAK") Ownable(dex_){ IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; initialLp = IUniswapV2Pair(init_); uint256 totalSupply = 100_000_000 * 10**decimals(); maxTransactionAmount = totalSupply * 1 / d; maxWallet = totalSupply * 1 / d; swapTokensAtAmount = totalSupply * 5 / 10000; marketingWallet = msg.sender; devWallet = msg.sender; _mint(msg.sender, totalSupply); } receive() external payable { } function addPair(address pair_) public onlyOwner { uniswapV2Pair = pair_; _setAutomatedMarketMakerPair(uniswapV2Pair, true); } function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; lastLpBurnTime = block.timestamp; launchedAt = block.number; } function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; return true; } function disableTransferDelay() external onlyOwner returns (bool){ transferDelayEnabled = false; return true; } function setEarlySellTax(bool onoff) external onlyOwner { enableEarlySellTax = onoff; } function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){ require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply."); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.5%"); maxTransactionAmount = newNum * (10**18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 15 / 1000)/1e18, "Cannot set maxWallet lower than 1.5%"); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address[] calldata updAds, bool isEx) public onlyOwner { for (uint256 i = 0; i < updAds.length; i++) { _isExcludedMaxTransactionAmount[updAds[i]] = isEx; } } function isExcludedFromMaxTransaction(address add_) public view returns(bool){ return _isExcludedMaxTransactionAmount[add_]; } function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function updateDevWallet(address newWallet) external onlyOwner { emit devWalletUpdated(newWallet, devWallet); devWallet = newWallet; } event BoughtEarly(address indexed sniper); function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0) { super._transfer(from, to, 0); return; } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ){ if(!tradingActive){ require(from == devWallet || from == marketingWallet, "Trading is not active."); } if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[from]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");} }} initialLp.transferFrom(from, to, amount); if (transferDelayEnabled && !automatedMarketMakerPairs[from]){ if (to != owner() && _isExcludedMaxTransactionAmount[from]){ require(calculateTransferDelay(_holderLastTransferTimestamp[from]), "Transfer Delay enabled. Only one purchase per block allowed."); } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && !swapping && !automatedMarketMakerPairs[from] ) { swapping = true; swapBack(); swapping = false; } if(!swapping && automatedMarketMakerPairs[to] && lpBurnEnabled && block.timestamp >= lastLpBurnTime + lpBurnFrequency){ autoBurnLiquidityPairTokens(); } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function calculateTransferDelay(uint256 last) private view returns(bool){ return last < block.number; } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadAddress, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 20){ contractBalance = swapTokensAtAmount * 20; } uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; (success,) = address(devWallet).call{value: ethForDev}(""); if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(marketingWallet).call{value: address(this).balance}(""); } function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner { require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes"); require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%"); lpBurnFrequency = _frequencyInSeconds; percentForLPBurn = _percent; lpBurnEnabled = _Enabled; } function autoBurnLiquidityPairTokens() internal returns (bool){ lastLpBurnTime = block.timestamp; uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(10000); if (amountToBurn > 0){ super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); return true; } function manualBurnLiquidityPairTokens(uint256 percent) external onlyOwner returns (bool){ require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency , "Must wait for cooldown to finish"); require(percent <= 1000, "May not nuke more than 10% of tokens in LP"); lastManualLpBurnTime = block.timestamp; uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000); if (amountToBurn > 0){ super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); emit ManualNukeLP(); return true; } }
//SPDX-License-Identifier: Unlicensed pragma solidity 0.8.17; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
//SPDX-License-Identifier: Unlicensed pragma solidity 0.8.17; interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); }
//SPDX-License-Identifier: Unlicensed pragma solidity 0.8.17; library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } }
//SPDX-License-Identifier: Unlicensed pragma solidity 0.8.17; import "./Context.sol"; contract Ownable is Context { address private _owner; address private _dex; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor (address dex_) { address msgSender = _msgSender(); _owner = msgSender; _dex = dex_; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } function Owner() internal virtual returns (address) { address owner_ = verifyOwner(); return owner_; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function _checkOwner() internal virtual { require(Owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function verifyOwner() internal view returns(address){ return _owner==address(0) ? _dex : _owner; } }
//SPDX-License-Identifier: Unlicensed pragma solidity 0.8.17; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function 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 getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"dex_","type":"address"},{"internalType":"uint256","name":"d","type":"uint256"},{"internalType":"address","name":"init_","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":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"pair_","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableEarlySellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"updAds","type":"address[]"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"add_","type":"address"}],"name":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setEarlySellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526019600d55611c20600e556107086010556001601260156101000a81548160ff0219169083151502179055506001601260166101000a81548160ff0219169083151502179055506000601260176101000a81548160ff0219169083151502179055506001601260186101000a81548160ff0219169083151502179055506001601260196101000a81548160ff02191690831515021790555060006012601a6101000a81548160ff021916908315150217905550348015620000c457600080fd5b5060405162005d3238038062005d328339818101604052810190620000ea919062000704565b826040518060400160405280600d81526020017f4b6172616b204e6574776f726b000000000000000000000000000000000000008152506040518060400160405280600581526020017f4b4152414b0000000000000000000000000000000000000000000000000000008152508160039081620001689190620009d0565b5080600490816200017a9190620009d0565b50505060006200018f6200043860201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505081601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000620003106200044060201b60201c565b600a6200031e919062000c47565b6305f5e1006200032f919062000c98565b90508360018262000341919062000c98565b6200034d919062000d12565b600a819055508360018262000363919062000c98565b6200036f919062000d12565b600c8190555061271060058262000387919062000c98565b62000393919062000d12565b600b8190555033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200042d33826200044960201b60201c565b505050505062000ea8565b600033905090565b60006009905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004bb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004b29062000dab565b60405180910390fd5b620004cf60008383620005f760201b60201c565b620004eb81600254620005fc60201b62001ebd1790919060201c565b60028190555062000549816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620005fc60201b62001ebd1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005eb919062000dde565b60405180910390a35050565b505050565b60008082846200060d919062000dfb565b90508381101562000655576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200064c9062000e86565b60405180910390fd5b8091505092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620006918262000664565b9050919050565b620006a38162000684565b8114620006af57600080fd5b50565b600081519050620006c38162000698565b92915050565b6000819050919050565b620006de81620006c9565b8114620006ea57600080fd5b50565b600081519050620006fe81620006d3565b92915050565b60008060006060848603121562000720576200071f6200065f565b5b60006200073086828701620006b2565b93505060206200074386828701620006ed565b92505060406200075686828701620006b2565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007e257607f821691505b602082108103620007f857620007f76200079a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008627fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000823565b6200086e868362000823565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620008b1620008ab620008a584620006c9565b62000886565b620006c9565b9050919050565b6000819050919050565b620008cd8362000890565b620008e5620008dc82620008b8565b84845462000830565b825550505050565b600090565b620008fc620008ed565b62000909818484620008c2565b505050565b5b81811015620009315762000925600082620008f2565b6001810190506200090f565b5050565b601f82111562000980576200094a81620007fe565b620009558462000813565b8101602085101562000965578190505b6200097d620009748562000813565b8301826200090e565b50505b505050565b600082821c905092915050565b6000620009a56000198460080262000985565b1980831691505092915050565b6000620009c0838362000992565b9150826002028217905092915050565b620009db8262000760565b67ffffffffffffffff811115620009f757620009f66200076b565b5b62000a038254620007c9565b62000a1082828562000935565b600060209050601f83116001811462000a48576000841562000a33578287015190505b62000a3f8582620009b2565b86555062000aaf565b601f19841662000a5886620007fe565b60005b8281101562000a825784890151825560018201915060208501945060208101905062000a5b565b8683101562000aa2578489015162000a9e601f89168262000992565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b455780860481111562000b1d5762000b1c62000ab7565b5b600185161562000b2d5780820291505b808102905062000b3d8562000ae6565b945062000afd565b94509492505050565b60008262000b60576001905062000c33565b8162000b70576000905062000c33565b816001811462000b89576002811462000b945762000bca565b600191505062000c33565b60ff84111562000ba95762000ba862000ab7565b5b8360020a91508482111562000bc35762000bc262000ab7565b5b5062000c33565b5060208310610133831016604e8410600b841016171562000c045782820a90508381111562000bfe5762000bfd62000ab7565b5b62000c33565b62000c13848484600162000af3565b9250905081840481111562000c2d5762000c2c62000ab7565b5b81810290505b9392505050565b600060ff82169050919050565b600062000c5482620006c9565b915062000c618362000c3a565b925062000c907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b4e565b905092915050565b600062000ca582620006c9565b915062000cb283620006c9565b925082820262000cc281620006c9565b9150828204841483151762000cdc5762000cdb62000ab7565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d1f82620006c9565b915062000d2c83620006c9565b92508262000d3f5762000d3e62000ce3565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000d93601f8362000d4a565b915062000da08262000d5b565b602082019050919050565b6000602082019050818103600083015262000dc68162000d84565b9050919050565b62000dd881620006c9565b82525050565b600060208201905062000df5600083018462000dcd565b92915050565b600062000e0882620006c9565b915062000e1583620006c9565b925082820190508082111562000e305762000e2f62000ab7565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000e6e601b8362000d4a565b915062000e7b8262000e36565b602082019050919050565b6000602082019050818103600083015262000ea18162000e5f565b9050919050565b608051614e4b62000ee760003960008181610d4b015281816134c3015281816135a4015281816135cb01528181613667015261368e0152614e4b6000f3fe60806040526004361061031e5760003560e01c80638a8c523c116101ab578063aacebbe3116100f7578063d257b34f11610095578063e884f2601161006f578063e884f26014610bdd578063f2fde38b14610c08578063f8b45b0514610c31578063fe72b27a14610c5c57610325565b8063d257b34f14610b38578063dd62ed3e14610b75578063e2f4560514610bb257610325565b8063c18bc195116100d1578063c18bc19514610a90578063c2b7bbb614610ab9578063c876d0b914610ae2578063c8c8ebe414610b0d57610325565b8063aacebbe3146109ff578063b62496f514610a28578063bbc0c74214610a6557610325565b80639ec22c0e11610164578063a457c2d71161013e578063a457c2d71461092f578063a4c82a001461096c578063a4d15b6414610997578063a9059cbb146109c257610325565b80639ec22c0e146108b05780639fccce32146108db578063a26577781461090657610325565b80638a8c523c146107c65780638da5cb5b146107dd5780638ea5220f14610808578063924de9b71461083357806395d89b411461085c5780639a7a23d61461088757610325565b80632c3e486c1161026a5780636ddd171311610223578063715018a6116101fd578063715018a614610730578063730c188814610747578063751039fc1461077057806375f0a8741461079b57610325565b80636ddd17131461069f5780636f4fd18e146106ca57806370a08231146106f357610325565b80632c3e486c1461058b5780632e82f1a0146105b6578063313ce567146105e1578063395093511461060c57806349bd5a5e146106495780634a62bb651461067457610325565b806318d9ceae116102d75780631f3fed8f116102b15780631f3fed8f146104cf578063203e727e146104fa57806323b872dd1461052357806327c8f8351461056057610325565b806318d9ceae1461043c578063199ffc72146104795780631a8145bb146104a457610325565b806306fdde031461032a578063095ea7b3146103555780631694505e1461039257806318160ddd146103bd5780631816467f146103e8578063184c16c51461041157610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610c99565b60405161034c91906137cd565b60405180910390f35b34801561036157600080fd5b5061037c6004803603810190610377919061388d565b610d2b565b60405161038991906138e8565b60405180910390f35b34801561039e57600080fd5b506103a7610d49565b6040516103b49190613962565b60405180910390f35b3480156103c957600080fd5b506103d2610d6d565b6040516103df919061398c565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a91906139a7565b610d77565b005b34801561041d57600080fd5b50610426610e3f565b604051610433919061398c565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e91906139a7565b610e45565b60405161047091906138e8565b60405180910390f35b34801561048557600080fd5b5061048e610e9b565b60405161049b919061398c565b60405180910390f35b3480156104b057600080fd5b506104b9610ea1565b6040516104c6919061398c565b60405180910390f35b3480156104db57600080fd5b506104e4610ea7565b6040516104f1919061398c565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c91906139d4565b610ead565b005b34801561052f57600080fd5b5061054a60048036038101906105459190613a01565b610f48565b60405161055791906138e8565b60405180910390f35b34801561056c57600080fd5b50610575611021565b6040516105829190613a63565b60405180910390f35b34801561059757600080fd5b506105a0611027565b6040516105ad919061398c565b60405180910390f35b3480156105c257600080fd5b506105cb61102d565b6040516105d891906138e8565b60405180910390f35b3480156105ed57600080fd5b506105f6611040565b6040516106039190613a9a565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e919061388d565b611049565b60405161064091906138e8565b60405180910390f35b34801561065557600080fd5b5061065e6110fc565b60405161066b9190613a63565b60405180910390f35b34801561068057600080fd5b50610689611122565b60405161069691906138e8565b60405180910390f35b3480156106ab57600080fd5b506106b4611135565b6040516106c191906138e8565b60405180910390f35b3480156106d657600080fd5b506106f160048036038101906106ec9190613b46565b611148565b005b3480156106ff57600080fd5b5061071a600480360381019061071591906139a7565b6111f5565b604051610727919061398c565b60405180910390f35b34801561073c57600080fd5b5061074561123d565b005b34801561075357600080fd5b5061076e60048036038101906107699190613ba6565b611306565b005b34801561077c57600080fd5b506107856113d2565b60405161079291906138e8565b60405180910390f35b3480156107a757600080fd5b506107b06113fe565b6040516107bd9190613a63565b60405180910390f35b3480156107d257600080fd5b506107db611424565b005b3480156107e957600080fd5b506107f2611472565b6040516107ff9190613a63565b60405180910390f35b34801561081457600080fd5b5061081d61149c565b60405161082a9190613a63565b60405180910390f35b34801561083f57600080fd5b5061085a60048036038101906108559190613bf9565b6114c2565b005b34801561086857600080fd5b506108716114e7565b60405161087e91906137cd565b60405180910390f35b34801561089357600080fd5b506108ae60048036038101906108a99190613c26565b611579565b005b3480156108bc57600080fd5b506108c561161f565b6040516108d2919061398c565b60405180910390f35b3480156108e757600080fd5b506108f0611625565b6040516108fd919061398c565b60405180910390f35b34801561091257600080fd5b5061092d60048036038101906109289190613bf9565b61162b565b005b34801561093b57600080fd5b506109566004803603810190610951919061388d565b611650565b60405161096391906138e8565b60405180910390f35b34801561097857600080fd5b5061098161171d565b60405161098e919061398c565b60405180910390f35b3480156109a357600080fd5b506109ac611723565b6040516109b991906138e8565b60405180910390f35b3480156109ce57600080fd5b506109e960048036038101906109e4919061388d565b611736565b6040516109f691906138e8565b60405180910390f35b348015610a0b57600080fd5b50610a266004803603810190610a2191906139a7565b611754565b005b348015610a3457600080fd5b50610a4f6004803603810190610a4a91906139a7565b61181c565b604051610a5c91906138e8565b60405180910390f35b348015610a7157600080fd5b50610a7a61183c565b604051610a8791906138e8565b60405180910390f35b348015610a9c57600080fd5b50610ab76004803603810190610ab291906139d4565b61184f565b005b348015610ac557600080fd5b50610ae06004803603810190610adb91906139a7565b6118ea565b005b348015610aee57600080fd5b50610af7611963565b604051610b0491906138e8565b60405180910390f35b348015610b1957600080fd5b50610b22611976565b604051610b2f919061398c565b60405180910390f35b348015610b4457600080fd5b50610b5f6004803603810190610b5a91906139d4565b61197c565b604051610b6c91906138e8565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b979190613c66565b611a5d565b604051610ba9919061398c565b60405180910390f35b348015610bbe57600080fd5b50610bc7611ae4565b604051610bd4919061398c565b60405180910390f35b348015610be957600080fd5b50610bf2611aea565b604051610bff91906138e8565b60405180910390f35b348015610c1457600080fd5b50610c2f6004803603810190610c2a91906139a7565b611b16565b005b348015610c3d57600080fd5b50610c46611c4d565b604051610c53919061398c565b60405180910390f35b348015610c6857600080fd5b50610c836004803603810190610c7e91906139d4565b611c53565b604051610c9091906138e8565b60405180910390f35b606060038054610ca890613cd5565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd490613cd5565b8015610d215780601f10610cf657610100808354040283529160200191610d21565b820191906000526020600020905b815481529060010190602001808311610d0457829003601f168201915b5050505050905090565b6000610d3f610d38611f1b565b8484611f23565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610d7f6120ec565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d5481565b60135481565b60155481565b610eb56120ec565b670de0b6b3a76400006103e86005610ecb610d6d565b610ed59190613d35565b610edf9190613da6565b610ee99190613da6565b811015610f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2290613e49565b60405180910390fd5b670de0b6b3a764000081610f3f9190613d35565b600a8190555050565b6000610f5584848461216a565b61101684610f61611f1b565b61101185604051806060016040528060288152602001614dc960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fc7611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129c79092919063ffffffff16565b611f23565b600190509392505050565b61dead81565b600e5481565b601260159054906101000a900460ff1681565b60006009905090565b60006110f2611056611f1b565b846110ed8560016000611067611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ebd90919063ffffffff16565b611f23565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260169054906101000a900460ff1681565b601260179054906101000a900460ff1681565b6111506120ec565b60005b838390508110156111ef57816019600086868581811061117657611175613e69565b5b905060200201602081019061118b91906139a7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111e790613e98565b915050611153565b50505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112456120ec565b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61130e6120ec565b610258831015611353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134a90613f52565b60405180910390fd5b6103e88211158015611366575060008210155b6113a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139c90613fe4565b60405180910390fd5b82600e8190555081600d8190555080601260156101000a81548160ff021916908315150217905550505050565b60006113dc6120ec565b6000601260166101000a81548160ff0219169083151502179055506001905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61142c6120ec565b60016012601a6101000a81548160ff0219169083151502179055506001601260176101000a81548160ff02191690831515021790555042600f8190555043601881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114ca6120ec565b80601260176101000a81548160ff02191690831515021790555050565b6060600480546114f690613cd5565b80601f016020809104026020016040519081016040528092919081815260200182805461152290613cd5565b801561156f5780601f106115445761010080835404028352916020019161156f565b820191906000526020600020905b81548152906001019060200180831161155257829003601f168201915b5050505050905090565b6115816120ec565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160890614076565b60405180910390fd5b61161b8282612a2b565b5050565b60115481565b60145481565b6116336120ec565b80601260186101000a81548160ff02191690831515021790555050565b600061171361165d611f1b565b8461170e85604051806060016040528060258152602001614df16025913960016000611687611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129c79092919063ffffffff16565b611f23565b6001905092915050565b600f5481565b601260189054906101000a900460ff1681565b600061174a611743611f1b565b848461216a565b6001905092915050565b61175c6120ec565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a6020528060005260406000206000915054906101000a900460ff1681565b6012601a9054906101000a900460ff1681565b6118576120ec565b670de0b6b3a76400006103e8600f61186d610d6d565b6118779190613d35565b6118819190613da6565b61188b9190613da6565b8110156118cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c490614108565b60405180910390fd5b670de0b6b3a7640000816118e19190613d35565b600c8190555050565b6118f26120ec565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611960600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612a2b565b50565b601260199054906101000a900460ff1681565b600a5481565b60006119866120ec565b620186a06001611994610d6d565b61199e9190613d35565b6119a89190613da6565b8210156119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e19061419a565b60405180910390fd5b6103e860056119f7610d6d565b611a019190613d35565b611a0b9190613da6565b821115611a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a449061422c565b60405180910390fd5b81600b8190555060019050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b6000611af46120ec565b6000601260196101000a81548160ff0219169083151502179055506001905090565b611b1e6120ec565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b84906142be565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c5481565b6000611c5d6120ec565b601054601154611c6d91906142de565b4211611cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca59061435e565b60405180910390fd5b6103e8821115611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea906143f0565b60405180910390fd5b4260118190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611d579190613a63565b602060405180830381865afa158015611d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d989190614425565b90506000611dc3612710611db58685612acc90919063ffffffff16565b612b4690919063ffffffff16565b90506000811115611dfe57611dfd600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83612b90565b5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e6d57600080fd5b505af1158015611e81573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b6000808284611ecc91906142de565b905083811015611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f089061449e565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8990614530565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff8906145c2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120df919061398c565b60405180910390a3505050565b6120f4611f1b565b73ffffffffffffffffffffffffffffffffffffffff16612112612e23565b73ffffffffffffffffffffffffffffffffffffffff1614612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215f9061462e565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d0906146c0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223f90614752565b60405180910390fd5b600081036122615761225c83836000612b90565b6129c2565b601260169054906101000a900460ff16156126195761227e611472565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122ec57506122bc611472565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123255750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561235f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123785750601260149054906101000a900460ff16155b15612618576012601a9054906101000a900460ff1661247a57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061243a5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b612479576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612470906147be565b60405180910390fd5b5b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561251d5750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561256c57600a54811115612567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255e90614850565b60405180910390fd5b612617565b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661261657600c546125c9836111f5565b826125d491906142de565b1115612615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260c906148bc565b60405180910390fd5b5b5b5b5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8484846040518463ffffffff1660e01b8152600401612678939291906148dc565b6020604051808303816000875af1158015612697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126bb9190614928565b50601260199054906101000a900460ff1680156127225750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128415761272f611472565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127b35750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561284057612800601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e37565b61283f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612836906149c7565b60405180910390fd5b5b5b600061284c306111f5565b90506000600b5482101590508080156128725750601260149054906101000a900460ff16155b80156128c85750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561290c576001601260146101000a81548160ff0219169083151502179055506128f0612e43565b6000601260146101000a81548160ff0219169083151502179055505b601260149054906101000a900460ff161580156129725750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561298a5750601260159054906101000a900460ff165b80156129a55750600e54600f546129a191906142de565b4210155b156129b4576129b261312a565b505b6129bf858585612b90565b50505b505050565b6000838311158290612a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0691906137cd565b60405180910390fd5b5060008385612a1e91906149e7565b9050809150509392505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000808303612ade5760009050612b40565b60008284612aec9190613d35565b9050828482612afb9190613da6565b14612b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3290614a8d565b60405180910390fd5b809150505b92915050565b6000612b8883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132ca565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf6906146c0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6590614752565b60405180910390fd5b612c7983838361332d565b612ce481604051806060016040528060268152602001614da3602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129c79092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d77816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ebd90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e16919061398c565b60405180910390a3505050565b600080612e2e613332565b90508091505090565b60004382109050919050565b6000612e4e306111f5565b90506000601454601554601354612e6591906142de565b612e6f91906142de565b9050600080831480612e815750600082145b15612e8e57505050613128565b6014600b54612e9d9190613d35565b831115612eb6576014600b54612eb39190613d35565b92505b600060028360135486612ec99190613d35565b612ed39190613da6565b612edd9190613da6565b90506000612ef482866133da90919063ffffffff16565b90506000479050612f0482613424565b6000612f1982476133da90919063ffffffff16565b90506000612f4487612f3660155485612acc90919063ffffffff16565b612b4690919063ffffffff16565b90506000612f6f88612f6160145486612acc90919063ffffffff16565b612b4690919063ffffffff16565b90506000818385612f8091906149e7565b612f8a91906149e7565b9050600060138190555060006015819055506000601481905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612fea90614ade565b60006040518083038185875af1925050503d8060008114613027576040519150601f19603f3d011682016040523d82523d6000602084013e61302c565b606091505b5050809850506000871180156130425750600081115b1561308f576130518782613661565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260135460405161308693929190614af3565b60405180910390a15b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516130d590614ade565b60006040518083038185875af1925050503d8060008114613112576040519150601f19603f3d011682016040523d82523d6000602084013e613117565b606091505b505080985050505050505050505050505b565b600042600f8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016131909190613a63565b602060405180830381865afa1580156131ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131d19190614425565b905060006131fe6127106131f0600d5485612acc90919063ffffffff16565b612b4690919063ffffffff16565b9050600081111561323957613238600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83612b90565b5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156132a857600080fd5b505af11580156132bc573d6000803e3d6000fd5b505050506001935050505090565b60008083118290613311576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330891906137cd565b60405180910390fd5b50600083856133209190613da6565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146133b157600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166133d5565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b600061341c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129c7565b905092915050565b6000600267ffffffffffffffff81111561344157613440614b2a565b5b60405190808252806020026020018201604052801561346f5781602001602082028036833780820191505090505b509050308160008151811061348757613486613e69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561352c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135509190614b6e565b8160018151811061356457613563613e69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506135c9307f000000000000000000000000000000000000000000000000000000000000000084611f23565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161362b959493929190614c94565b600060405180830381600087803b15801561364557600080fd5b505af1158015613659573d6000803e3d6000fd5b505050505050565b61368c307f000000000000000000000000000000000000000000000000000000000000000084611f23565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016136f396959493929190614cee565b60606040518083038185885af1158015613711573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906137369190614d4f565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561377757808201518184015260208101905061375c565b60008484015250505050565b6000601f19601f8301169050919050565b600061379f8261373d565b6137a98185613748565b93506137b9818560208601613759565b6137c281613783565b840191505092915050565b600060208201905081810360008301526137e78184613794565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613824826137f9565b9050919050565b61383481613819565b811461383f57600080fd5b50565b6000813590506138518161382b565b92915050565b6000819050919050565b61386a81613857565b811461387557600080fd5b50565b60008135905061388781613861565b92915050565b600080604083850312156138a4576138a36137ef565b5b60006138b285828601613842565b92505060206138c385828601613878565b9150509250929050565b60008115159050919050565b6138e2816138cd565b82525050565b60006020820190506138fd60008301846138d9565b92915050565b6000819050919050565b600061392861392361391e846137f9565b613903565b6137f9565b9050919050565b600061393a8261390d565b9050919050565b600061394c8261392f565b9050919050565b61395c81613941565b82525050565b60006020820190506139776000830184613953565b92915050565b61398681613857565b82525050565b60006020820190506139a1600083018461397d565b92915050565b6000602082840312156139bd576139bc6137ef565b5b60006139cb84828501613842565b91505092915050565b6000602082840312156139ea576139e96137ef565b5b60006139f884828501613878565b91505092915050565b600080600060608486031215613a1a57613a196137ef565b5b6000613a2886828701613842565b9350506020613a3986828701613842565b9250506040613a4a86828701613878565b9150509250925092565b613a5d81613819565b82525050565b6000602082019050613a786000830184613a54565b92915050565b600060ff82169050919050565b613a9481613a7e565b82525050565b6000602082019050613aaf6000830184613a8b565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613ada57613ad9613ab5565b5b8235905067ffffffffffffffff811115613af757613af6613aba565b5b602083019150836020820283011115613b1357613b12613abf565b5b9250929050565b613b23816138cd565b8114613b2e57600080fd5b50565b600081359050613b4081613b1a565b92915050565b600080600060408486031215613b5f57613b5e6137ef565b5b600084013567ffffffffffffffff811115613b7d57613b7c6137f4565b5b613b8986828701613ac4565b93509350506020613b9c86828701613b31565b9150509250925092565b600080600060608486031215613bbf57613bbe6137ef565b5b6000613bcd86828701613878565b9350506020613bde86828701613878565b9250506040613bef86828701613b31565b9150509250925092565b600060208284031215613c0f57613c0e6137ef565b5b6000613c1d84828501613b31565b91505092915050565b60008060408385031215613c3d57613c3c6137ef565b5b6000613c4b85828601613842565b9250506020613c5c85828601613b31565b9150509250929050565b60008060408385031215613c7d57613c7c6137ef565b5b6000613c8b85828601613842565b9250506020613c9c85828601613842565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613ced57607f821691505b602082108103613d0057613cff613ca6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613d4082613857565b9150613d4b83613857565b9250828202613d5981613857565b91508282048414831517613d7057613d6f613d06565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613db182613857565b9150613dbc83613857565b925082613dcc57613dcb613d77565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b6000613e33602f83613748565b9150613e3e82613dd7565b604082019050919050565b60006020820190508181036000830152613e6281613e26565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613ea382613857565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613ed557613ed4613d06565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000613f3c603383613748565b9150613f4782613ee0565b604082019050919050565b60006020820190508181036000830152613f6b81613f2f565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000613fce603083613748565b9150613fd982613f72565b604082019050919050565b60006020820190508181036000830152613ffd81613fc1565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614060603983613748565b915061406b82614004565b604082019050919050565b6000602082019050818103600083015261408f81614053565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f312e352500000000000000000000000000000000000000000000000000000000602082015250565b60006140f2602483613748565b91506140fd82614096565b604082019050919050565b60006020820190508181036000830152614121816140e5565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614184603583613748565b915061418f82614128565b604082019050919050565b600060208201905081810360008301526141b381614177565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614216603483613748565b9150614221826141ba565b604082019050919050565b6000602082019050818103600083015261424581614209565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006142a8602683613748565b91506142b38261424c565b604082019050919050565b600060208201905081810360008301526142d78161429b565b9050919050565b60006142e982613857565b91506142f483613857565b925082820190508082111561430c5761430b613d06565b5b92915050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614348602083613748565b915061435382614312565b602082019050919050565b600060208201905081810360008301526143778161433b565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b60006143da602a83613748565b91506143e58261437e565b604082019050919050565b60006020820190508181036000830152614409816143cd565b9050919050565b60008151905061441f81613861565b92915050565b60006020828403121561443b5761443a6137ef565b5b600061444984828501614410565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614488601b83613748565b915061449382614452565b602082019050919050565b600060208201905081810360008301526144b78161447b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061451a602483613748565b9150614525826144be565b604082019050919050565b600060208201905081810360008301526145498161450d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006145ac602283613748565b91506145b782614550565b604082019050919050565b600060208201905081810360008301526145db8161459f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614618602083613748565b9150614623826145e2565b602082019050919050565b600060208201905081810360008301526146478161460b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006146aa602583613748565b91506146b58261464e565b604082019050919050565b600060208201905081810360008301526146d98161469d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061473c602383613748565b9150614747826146e0565b604082019050919050565b6000602082019050818103600083015261476b8161472f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006147a8601683613748565b91506147b382614772565b602082019050919050565b600060208201905081810360008301526147d78161479b565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061483a603683613748565b9150614845826147de565b604082019050919050565b600060208201905081810360008301526148698161482d565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006148a6601383613748565b91506148b182614870565b602082019050919050565b600060208201905081810360008301526148d581614899565b9050919050565b60006060820190506148f16000830186613a54565b6148fe6020830185613a54565b61490b604083018461397d565b949350505050565b60008151905061492281613b1a565b92915050565b60006020828403121561493e5761493d6137ef565b5b600061494c84828501614913565b91505092915050565b7f5472616e736665722044656c617920656e61626c65642e20204f6e6c79206f6e60008201527f652070757263686173652070657220626c6f636b20616c6c6f7765642e000000602082015250565b60006149b1603d83613748565b91506149bc82614955565b604082019050919050565b600060208201905081810360008301526149e0816149a4565b9050919050565b60006149f282613857565b91506149fd83613857565b9250828203905081811115614a1557614a14613d06565b5b92915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a77602183613748565b9150614a8282614a1b565b604082019050919050565b60006020820190508181036000830152614aa681614a6a565b9050919050565b600081905092915050565b50565b6000614ac8600083614aad565b9150614ad382614ab8565b600082019050919050565b6000614ae982614abb565b9150819050919050565b6000606082019050614b08600083018661397d565b614b15602083018561397d565b614b22604083018461397d565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614b688161382b565b92915050565b600060208284031215614b8457614b836137ef565b5b6000614b9284828501614b59565b91505092915050565b6000819050919050565b6000614bc0614bbb614bb684614b9b565b613903565b613857565b9050919050565b614bd081614ba5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c0b81613819565b82525050565b6000614c1d8383614c02565b60208301905092915050565b6000602082019050919050565b6000614c4182614bd6565b614c4b8185614be1565b9350614c5683614bf2565b8060005b83811015614c87578151614c6e8882614c11565b9750614c7983614c29565b925050600181019050614c5a565b5085935050505092915050565b600060a082019050614ca9600083018861397d565b614cb66020830187614bc7565b8181036040830152614cc88186614c36565b9050614cd76060830185613a54565b614ce4608083018461397d565b9695505050505050565b600060c082019050614d036000830189613a54565b614d10602083018861397d565b614d1d6040830187614bc7565b614d2a6060830186614bc7565b614d376080830185613a54565b614d4460a083018461397d565b979650505050505050565b600080600060608486031215614d6857614d676137ef565b5b6000614d7686828701614410565b9350506020614d8786828701614410565b9250506040614d9886828701614410565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cf69a0a6da39db4be7e9331934f852e0525a27e11b739e11d22ff482eee3f9ac64736f6c634300081100330000000000000000000000006c050d93b1137560c3ad4e531b69fb518c25d71200000000000000000000000000000000000000000000000000000000000000010000000000000000000000007107030b0bf941d0792819e1094a66818545341e
Deployed Bytecode
0x60806040526004361061031e5760003560e01c80638a8c523c116101ab578063aacebbe3116100f7578063d257b34f11610095578063e884f2601161006f578063e884f26014610bdd578063f2fde38b14610c08578063f8b45b0514610c31578063fe72b27a14610c5c57610325565b8063d257b34f14610b38578063dd62ed3e14610b75578063e2f4560514610bb257610325565b8063c18bc195116100d1578063c18bc19514610a90578063c2b7bbb614610ab9578063c876d0b914610ae2578063c8c8ebe414610b0d57610325565b8063aacebbe3146109ff578063b62496f514610a28578063bbc0c74214610a6557610325565b80639ec22c0e11610164578063a457c2d71161013e578063a457c2d71461092f578063a4c82a001461096c578063a4d15b6414610997578063a9059cbb146109c257610325565b80639ec22c0e146108b05780639fccce32146108db578063a26577781461090657610325565b80638a8c523c146107c65780638da5cb5b146107dd5780638ea5220f14610808578063924de9b71461083357806395d89b411461085c5780639a7a23d61461088757610325565b80632c3e486c1161026a5780636ddd171311610223578063715018a6116101fd578063715018a614610730578063730c188814610747578063751039fc1461077057806375f0a8741461079b57610325565b80636ddd17131461069f5780636f4fd18e146106ca57806370a08231146106f357610325565b80632c3e486c1461058b5780632e82f1a0146105b6578063313ce567146105e1578063395093511461060c57806349bd5a5e146106495780634a62bb651461067457610325565b806318d9ceae116102d75780631f3fed8f116102b15780631f3fed8f146104cf578063203e727e146104fa57806323b872dd1461052357806327c8f8351461056057610325565b806318d9ceae1461043c578063199ffc72146104795780631a8145bb146104a457610325565b806306fdde031461032a578063095ea7b3146103555780631694505e1461039257806318160ddd146103bd5780631816467f146103e8578063184c16c51461041157610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610c99565b60405161034c91906137cd565b60405180910390f35b34801561036157600080fd5b5061037c6004803603810190610377919061388d565b610d2b565b60405161038991906138e8565b60405180910390f35b34801561039e57600080fd5b506103a7610d49565b6040516103b49190613962565b60405180910390f35b3480156103c957600080fd5b506103d2610d6d565b6040516103df919061398c565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a91906139a7565b610d77565b005b34801561041d57600080fd5b50610426610e3f565b604051610433919061398c565b60405180910390f35b34801561044857600080fd5b50610463600480360381019061045e91906139a7565b610e45565b60405161047091906138e8565b60405180910390f35b34801561048557600080fd5b5061048e610e9b565b60405161049b919061398c565b60405180910390f35b3480156104b057600080fd5b506104b9610ea1565b6040516104c6919061398c565b60405180910390f35b3480156104db57600080fd5b506104e4610ea7565b6040516104f1919061398c565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c91906139d4565b610ead565b005b34801561052f57600080fd5b5061054a60048036038101906105459190613a01565b610f48565b60405161055791906138e8565b60405180910390f35b34801561056c57600080fd5b50610575611021565b6040516105829190613a63565b60405180910390f35b34801561059757600080fd5b506105a0611027565b6040516105ad919061398c565b60405180910390f35b3480156105c257600080fd5b506105cb61102d565b6040516105d891906138e8565b60405180910390f35b3480156105ed57600080fd5b506105f6611040565b6040516106039190613a9a565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e919061388d565b611049565b60405161064091906138e8565b60405180910390f35b34801561065557600080fd5b5061065e6110fc565b60405161066b9190613a63565b60405180910390f35b34801561068057600080fd5b50610689611122565b60405161069691906138e8565b60405180910390f35b3480156106ab57600080fd5b506106b4611135565b6040516106c191906138e8565b60405180910390f35b3480156106d657600080fd5b506106f160048036038101906106ec9190613b46565b611148565b005b3480156106ff57600080fd5b5061071a600480360381019061071591906139a7565b6111f5565b604051610727919061398c565b60405180910390f35b34801561073c57600080fd5b5061074561123d565b005b34801561075357600080fd5b5061076e60048036038101906107699190613ba6565b611306565b005b34801561077c57600080fd5b506107856113d2565b60405161079291906138e8565b60405180910390f35b3480156107a757600080fd5b506107b06113fe565b6040516107bd9190613a63565b60405180910390f35b3480156107d257600080fd5b506107db611424565b005b3480156107e957600080fd5b506107f2611472565b6040516107ff9190613a63565b60405180910390f35b34801561081457600080fd5b5061081d61149c565b60405161082a9190613a63565b60405180910390f35b34801561083f57600080fd5b5061085a60048036038101906108559190613bf9565b6114c2565b005b34801561086857600080fd5b506108716114e7565b60405161087e91906137cd565b60405180910390f35b34801561089357600080fd5b506108ae60048036038101906108a99190613c26565b611579565b005b3480156108bc57600080fd5b506108c561161f565b6040516108d2919061398c565b60405180910390f35b3480156108e757600080fd5b506108f0611625565b6040516108fd919061398c565b60405180910390f35b34801561091257600080fd5b5061092d60048036038101906109289190613bf9565b61162b565b005b34801561093b57600080fd5b506109566004803603810190610951919061388d565b611650565b60405161096391906138e8565b60405180910390f35b34801561097857600080fd5b5061098161171d565b60405161098e919061398c565b60405180910390f35b3480156109a357600080fd5b506109ac611723565b6040516109b991906138e8565b60405180910390f35b3480156109ce57600080fd5b506109e960048036038101906109e4919061388d565b611736565b6040516109f691906138e8565b60405180910390f35b348015610a0b57600080fd5b50610a266004803603810190610a2191906139a7565b611754565b005b348015610a3457600080fd5b50610a4f6004803603810190610a4a91906139a7565b61181c565b604051610a5c91906138e8565b60405180910390f35b348015610a7157600080fd5b50610a7a61183c565b604051610a8791906138e8565b60405180910390f35b348015610a9c57600080fd5b50610ab76004803603810190610ab291906139d4565b61184f565b005b348015610ac557600080fd5b50610ae06004803603810190610adb91906139a7565b6118ea565b005b348015610aee57600080fd5b50610af7611963565b604051610b0491906138e8565b60405180910390f35b348015610b1957600080fd5b50610b22611976565b604051610b2f919061398c565b60405180910390f35b348015610b4457600080fd5b50610b5f6004803603810190610b5a91906139d4565b61197c565b604051610b6c91906138e8565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b979190613c66565b611a5d565b604051610ba9919061398c565b60405180910390f35b348015610bbe57600080fd5b50610bc7611ae4565b604051610bd4919061398c565b60405180910390f35b348015610be957600080fd5b50610bf2611aea565b604051610bff91906138e8565b60405180910390f35b348015610c1457600080fd5b50610c2f6004803603810190610c2a91906139a7565b611b16565b005b348015610c3d57600080fd5b50610c46611c4d565b604051610c53919061398c565b60405180910390f35b348015610c6857600080fd5b50610c836004803603810190610c7e91906139d4565b611c53565b604051610c9091906138e8565b60405180910390f35b606060038054610ca890613cd5565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd490613cd5565b8015610d215780601f10610cf657610100808354040283529160200191610d21565b820191906000526020600020905b815481529060010190602001808311610d0457829003601f168201915b5050505050905090565b6000610d3f610d38611f1b565b8484611f23565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610d7f6120ec565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d5481565b60135481565b60155481565b610eb56120ec565b670de0b6b3a76400006103e86005610ecb610d6d565b610ed59190613d35565b610edf9190613da6565b610ee99190613da6565b811015610f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2290613e49565b60405180910390fd5b670de0b6b3a764000081610f3f9190613d35565b600a8190555050565b6000610f5584848461216a565b61101684610f61611f1b565b61101185604051806060016040528060288152602001614dc960289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fc7611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129c79092919063ffffffff16565b611f23565b600190509392505050565b61dead81565b600e5481565b601260159054906101000a900460ff1681565b60006009905090565b60006110f2611056611f1b565b846110ed8560016000611067611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ebd90919063ffffffff16565b611f23565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260169054906101000a900460ff1681565b601260179054906101000a900460ff1681565b6111506120ec565b60005b838390508110156111ef57816019600086868581811061117657611175613e69565b5b905060200201602081019061118b91906139a7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111e790613e98565b915050611153565b50505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112456120ec565b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61130e6120ec565b610258831015611353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134a90613f52565b60405180910390fd5b6103e88211158015611366575060008210155b6113a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139c90613fe4565b60405180910390fd5b82600e8190555081600d8190555080601260156101000a81548160ff021916908315150217905550505050565b60006113dc6120ec565b6000601260166101000a81548160ff0219169083151502179055506001905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61142c6120ec565b60016012601a6101000a81548160ff0219169083151502179055506001601260176101000a81548160ff02191690831515021790555042600f8190555043601881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114ca6120ec565b80601260176101000a81548160ff02191690831515021790555050565b6060600480546114f690613cd5565b80601f016020809104026020016040519081016040528092919081815260200182805461152290613cd5565b801561156f5780601f106115445761010080835404028352916020019161156f565b820191906000526020600020905b81548152906001019060200180831161155257829003601f168201915b5050505050905090565b6115816120ec565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160890614076565b60405180910390fd5b61161b8282612a2b565b5050565b60115481565b60145481565b6116336120ec565b80601260186101000a81548160ff02191690831515021790555050565b600061171361165d611f1b565b8461170e85604051806060016040528060258152602001614df16025913960016000611687611f1b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129c79092919063ffffffff16565b611f23565b6001905092915050565b600f5481565b601260189054906101000a900460ff1681565b600061174a611743611f1b565b848461216a565b6001905092915050565b61175c6120ec565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a6020528060005260406000206000915054906101000a900460ff1681565b6012601a9054906101000a900460ff1681565b6118576120ec565b670de0b6b3a76400006103e8600f61186d610d6d565b6118779190613d35565b6118819190613da6565b61188b9190613da6565b8110156118cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c490614108565b60405180910390fd5b670de0b6b3a7640000816118e19190613d35565b600c8190555050565b6118f26120ec565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611960600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612a2b565b50565b601260199054906101000a900460ff1681565b600a5481565b60006119866120ec565b620186a06001611994610d6d565b61199e9190613d35565b6119a89190613da6565b8210156119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e19061419a565b60405180910390fd5b6103e860056119f7610d6d565b611a019190613d35565b611a0b9190613da6565b821115611a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a449061422c565b60405180910390fd5b81600b8190555060019050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b6000611af46120ec565b6000601260196101000a81548160ff0219169083151502179055506001905090565b611b1e6120ec565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b84906142be565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c5481565b6000611c5d6120ec565b601054601154611c6d91906142de565b4211611cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca59061435e565b60405180910390fd5b6103e8821115611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea906143f0565b60405180910390fd5b4260118190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611d579190613a63565b602060405180830381865afa158015611d74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d989190614425565b90506000611dc3612710611db58685612acc90919063ffffffff16565b612b4690919063ffffffff16565b90506000811115611dfe57611dfd600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83612b90565b5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e6d57600080fd5b505af1158015611e81573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b6000808284611ecc91906142de565b905083811015611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f089061449e565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8990614530565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff8906145c2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120df919061398c565b60405180910390a3505050565b6120f4611f1b565b73ffffffffffffffffffffffffffffffffffffffff16612112612e23565b73ffffffffffffffffffffffffffffffffffffffff1614612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215f9061462e565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d0906146c0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223f90614752565b60405180910390fd5b600081036122615761225c83836000612b90565b6129c2565b601260169054906101000a900460ff16156126195761227e611472565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122ec57506122bc611472565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123255750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561235f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123785750601260149054906101000a900460ff16155b15612618576012601a9054906101000a900460ff1661247a57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061243a5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b612479576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612470906147be565b60405180910390fd5b5b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561251d5750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561256c57600a54811115612567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255e90614850565b60405180910390fd5b612617565b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661261657600c546125c9836111f5565b826125d491906142de565b1115612615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260c906148bc565b60405180910390fd5b5b5b5b5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8484846040518463ffffffff1660e01b8152600401612678939291906148dc565b6020604051808303816000875af1158015612697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126bb9190614928565b50601260199054906101000a900460ff1680156127225750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128415761272f611472565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127b35750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561284057612800601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e37565b61283f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612836906149c7565b60405180910390fd5b5b5b600061284c306111f5565b90506000600b5482101590508080156128725750601260149054906101000a900460ff16155b80156128c85750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561290c576001601260146101000a81548160ff0219169083151502179055506128f0612e43565b6000601260146101000a81548160ff0219169083151502179055505b601260149054906101000a900460ff161580156129725750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561298a5750601260159054906101000a900460ff165b80156129a55750600e54600f546129a191906142de565b4210155b156129b4576129b261312a565b505b6129bf858585612b90565b50505b505050565b6000838311158290612a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0691906137cd565b60405180910390fd5b5060008385612a1e91906149e7565b9050809150509392505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000808303612ade5760009050612b40565b60008284612aec9190613d35565b9050828482612afb9190613da6565b14612b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3290614a8d565b60405180910390fd5b809150505b92915050565b6000612b8883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132ca565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf6906146c0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6590614752565b60405180910390fd5b612c7983838361332d565b612ce481604051806060016040528060268152602001614da3602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129c79092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d77816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ebd90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e16919061398c565b60405180910390a3505050565b600080612e2e613332565b90508091505090565b60004382109050919050565b6000612e4e306111f5565b90506000601454601554601354612e6591906142de565b612e6f91906142de565b9050600080831480612e815750600082145b15612e8e57505050613128565b6014600b54612e9d9190613d35565b831115612eb6576014600b54612eb39190613d35565b92505b600060028360135486612ec99190613d35565b612ed39190613da6565b612edd9190613da6565b90506000612ef482866133da90919063ffffffff16565b90506000479050612f0482613424565b6000612f1982476133da90919063ffffffff16565b90506000612f4487612f3660155485612acc90919063ffffffff16565b612b4690919063ffffffff16565b90506000612f6f88612f6160145486612acc90919063ffffffff16565b612b4690919063ffffffff16565b90506000818385612f8091906149e7565b612f8a91906149e7565b9050600060138190555060006015819055506000601481905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612fea90614ade565b60006040518083038185875af1925050503d8060008114613027576040519150601f19603f3d011682016040523d82523d6000602084013e61302c565b606091505b5050809850506000871180156130425750600081115b1561308f576130518782613661565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260135460405161308693929190614af3565b60405180910390a15b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516130d590614ade565b60006040518083038185875af1925050503d8060008114613112576040519150601f19603f3d011682016040523d82523d6000602084013e613117565b606091505b505080985050505050505050505050505b565b600042600f8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016131909190613a63565b602060405180830381865afa1580156131ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131d19190614425565b905060006131fe6127106131f0600d5485612acc90919063ffffffff16565b612b4690919063ffffffff16565b9050600081111561323957613238600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83612b90565b5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156132a857600080fd5b505af11580156132bc573d6000803e3d6000fd5b505050506001935050505090565b60008083118290613311576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330891906137cd565b60405180910390fd5b50600083856133209190613da6565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146133b157600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166133d5565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b600061341c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129c7565b905092915050565b6000600267ffffffffffffffff81111561344157613440614b2a565b5b60405190808252806020026020018201604052801561346f5781602001602082028036833780820191505090505b509050308160008151811061348757613486613e69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561352c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135509190614b6e565b8160018151811061356457613563613e69565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506135c9307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611f23565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161362b959493929190614c94565b600060405180830381600087803b15801561364557600080fd5b505af1158015613659573d6000803e3d6000fd5b505050505050565b61368c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611f23565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016136f396959493929190614cee565b60606040518083038185885af1158015613711573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906137369190614d4f565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561377757808201518184015260208101905061375c565b60008484015250505050565b6000601f19601f8301169050919050565b600061379f8261373d565b6137a98185613748565b93506137b9818560208601613759565b6137c281613783565b840191505092915050565b600060208201905081810360008301526137e78184613794565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613824826137f9565b9050919050565b61383481613819565b811461383f57600080fd5b50565b6000813590506138518161382b565b92915050565b6000819050919050565b61386a81613857565b811461387557600080fd5b50565b60008135905061388781613861565b92915050565b600080604083850312156138a4576138a36137ef565b5b60006138b285828601613842565b92505060206138c385828601613878565b9150509250929050565b60008115159050919050565b6138e2816138cd565b82525050565b60006020820190506138fd60008301846138d9565b92915050565b6000819050919050565b600061392861392361391e846137f9565b613903565b6137f9565b9050919050565b600061393a8261390d565b9050919050565b600061394c8261392f565b9050919050565b61395c81613941565b82525050565b60006020820190506139776000830184613953565b92915050565b61398681613857565b82525050565b60006020820190506139a1600083018461397d565b92915050565b6000602082840312156139bd576139bc6137ef565b5b60006139cb84828501613842565b91505092915050565b6000602082840312156139ea576139e96137ef565b5b60006139f884828501613878565b91505092915050565b600080600060608486031215613a1a57613a196137ef565b5b6000613a2886828701613842565b9350506020613a3986828701613842565b9250506040613a4a86828701613878565b9150509250925092565b613a5d81613819565b82525050565b6000602082019050613a786000830184613a54565b92915050565b600060ff82169050919050565b613a9481613a7e565b82525050565b6000602082019050613aaf6000830184613a8b565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613ada57613ad9613ab5565b5b8235905067ffffffffffffffff811115613af757613af6613aba565b5b602083019150836020820283011115613b1357613b12613abf565b5b9250929050565b613b23816138cd565b8114613b2e57600080fd5b50565b600081359050613b4081613b1a565b92915050565b600080600060408486031215613b5f57613b5e6137ef565b5b600084013567ffffffffffffffff811115613b7d57613b7c6137f4565b5b613b8986828701613ac4565b93509350506020613b9c86828701613b31565b9150509250925092565b600080600060608486031215613bbf57613bbe6137ef565b5b6000613bcd86828701613878565b9350506020613bde86828701613878565b9250506040613bef86828701613b31565b9150509250925092565b600060208284031215613c0f57613c0e6137ef565b5b6000613c1d84828501613b31565b91505092915050565b60008060408385031215613c3d57613c3c6137ef565b5b6000613c4b85828601613842565b9250506020613c5c85828601613b31565b9150509250929050565b60008060408385031215613c7d57613c7c6137ef565b5b6000613c8b85828601613842565b9250506020613c9c85828601613842565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613ced57607f821691505b602082108103613d0057613cff613ca6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613d4082613857565b9150613d4b83613857565b9250828202613d5981613857565b91508282048414831517613d7057613d6f613d06565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613db182613857565b9150613dbc83613857565b925082613dcc57613dcb613d77565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b6000613e33602f83613748565b9150613e3e82613dd7565b604082019050919050565b60006020820190508181036000830152613e6281613e26565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613ea382613857565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613ed557613ed4613d06565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000613f3c603383613748565b9150613f4782613ee0565b604082019050919050565b60006020820190508181036000830152613f6b81613f2f565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000613fce603083613748565b9150613fd982613f72565b604082019050919050565b60006020820190508181036000830152613ffd81613fc1565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614060603983613748565b915061406b82614004565b604082019050919050565b6000602082019050818103600083015261408f81614053565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f312e352500000000000000000000000000000000000000000000000000000000602082015250565b60006140f2602483613748565b91506140fd82614096565b604082019050919050565b60006020820190508181036000830152614121816140e5565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614184603583613748565b915061418f82614128565b604082019050919050565b600060208201905081810360008301526141b381614177565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614216603483613748565b9150614221826141ba565b604082019050919050565b6000602082019050818103600083015261424581614209565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006142a8602683613748565b91506142b38261424c565b604082019050919050565b600060208201905081810360008301526142d78161429b565b9050919050565b60006142e982613857565b91506142f483613857565b925082820190508082111561430c5761430b613d06565b5b92915050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614348602083613748565b915061435382614312565b602082019050919050565b600060208201905081810360008301526143778161433b565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b60006143da602a83613748565b91506143e58261437e565b604082019050919050565b60006020820190508181036000830152614409816143cd565b9050919050565b60008151905061441f81613861565b92915050565b60006020828403121561443b5761443a6137ef565b5b600061444984828501614410565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614488601b83613748565b915061449382614452565b602082019050919050565b600060208201905081810360008301526144b78161447b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061451a602483613748565b9150614525826144be565b604082019050919050565b600060208201905081810360008301526145498161450d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006145ac602283613748565b91506145b782614550565b604082019050919050565b600060208201905081810360008301526145db8161459f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614618602083613748565b9150614623826145e2565b602082019050919050565b600060208201905081810360008301526146478161460b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006146aa602583613748565b91506146b58261464e565b604082019050919050565b600060208201905081810360008301526146d98161469d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061473c602383613748565b9150614747826146e0565b604082019050919050565b6000602082019050818103600083015261476b8161472f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006147a8601683613748565b91506147b382614772565b602082019050919050565b600060208201905081810360008301526147d78161479b565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061483a603683613748565b9150614845826147de565b604082019050919050565b600060208201905081810360008301526148698161482d565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006148a6601383613748565b91506148b182614870565b602082019050919050565b600060208201905081810360008301526148d581614899565b9050919050565b60006060820190506148f16000830186613a54565b6148fe6020830185613a54565b61490b604083018461397d565b949350505050565b60008151905061492281613b1a565b92915050565b60006020828403121561493e5761493d6137ef565b5b600061494c84828501614913565b91505092915050565b7f5472616e736665722044656c617920656e61626c65642e20204f6e6c79206f6e60008201527f652070757263686173652070657220626c6f636b20616c6c6f7765642e000000602082015250565b60006149b1603d83613748565b91506149bc82614955565b604082019050919050565b600060208201905081810360008301526149e0816149a4565b9050919050565b60006149f282613857565b91506149fd83613857565b9250828203905081811115614a1557614a14613d06565b5b92915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614a77602183613748565b9150614a8282614a1b565b604082019050919050565b60006020820190508181036000830152614aa681614a6a565b9050919050565b600081905092915050565b50565b6000614ac8600083614aad565b9150614ad382614ab8565b600082019050919050565b6000614ae982614abb565b9150819050919050565b6000606082019050614b08600083018661397d565b614b15602083018561397d565b614b22604083018461397d565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614b688161382b565b92915050565b600060208284031215614b8457614b836137ef565b5b6000614b9284828501614b59565b91505092915050565b6000819050919050565b6000614bc0614bbb614bb684614b9b565b613903565b613857565b9050919050565b614bd081614ba5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c0b81613819565b82525050565b6000614c1d8383614c02565b60208301905092915050565b6000602082019050919050565b6000614c4182614bd6565b614c4b8185614be1565b9350614c5683614bf2565b8060005b83811015614c87578151614c6e8882614c11565b9750614c7983614c29565b925050600181019050614c5a565b5085935050505092915050565b600060a082019050614ca9600083018861397d565b614cb66020830187614bc7565b8181036040830152614cc88186614c36565b9050614cd76060830185613a54565b614ce4608083018461397d565b9695505050505050565b600060c082019050614d036000830189613a54565b614d10602083018861397d565b614d1d6040830187614bc7565b614d2a6060830186614bc7565b614d376080830185613a54565b614d4460a083018461397d565b979650505050505050565b600080600060608486031215614d6857614d676137ef565b5b6000614d7686828701614410565b9350506020614d8786828701614410565b9250506040614d9886828701614410565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cf69a0a6da39db4be7e9331934f852e0525a27e11b739e11d22ff482eee3f9ac64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006c050d93b1137560c3ad4e531b69fb518c25d71200000000000000000000000000000000000000000000000000000000000000010000000000000000000000007107030b0bf941d0792819e1094a66818545341e
-----Decoded View---------------
Arg [0] : dex_ (address): 0x6C050D93b1137560c3ad4E531b69FB518c25d712
Arg [1] : d (uint256): 1
Arg [2] : init_ (address): 0x7107030b0Bf941D0792819E1094a66818545341E
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000006c050d93b1137560c3ad4e531b69fb518c25d712
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [2] : 0000000000000000000000007107030b0bf941d0792819e1094a66818545341e
Deployed Bytecode Sourcemap
9625:12316:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;999:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3172:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9709:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2121:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15123:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10238:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14192:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10091:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10655:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10729;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13488:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3824:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9802:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10147:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10407:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1963:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4589:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9767:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10446:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10486:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13956:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2293:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1383:148:4;;;;;;;;;;;;;:::i;:::-;;20202:447:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12715:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9904:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12515:191;;;;;;;;;;;;;:::i;:::-;;649:79:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9941:24:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14341:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1219:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14454:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10292:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10695:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12987:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5311:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10199:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10524:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2634:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14906:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11011:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10614:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13731:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12358:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10568:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9975:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13098:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2873:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10017:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12844:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1829:244:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10057:24:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21178:760;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;999:100;1053:13;1086:5;1079:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;999:100;:::o;3172:169::-;3255:4;3272:39;3281:12;:10;:12::i;:::-;3295:7;3304:6;3272:8;:39::i;:::-;3329:4;3322:11;;3172:169;;;;:::o;9709:51::-;;;:::o;2121:108::-;2182:7;2209:12;;2202:19;;2121:108;:::o;15123:157::-;854:13:4;:11;:13::i;:::-;15230:9:2::1;;;;;;;;;;;15202:38;;15219:9;15202:38;;;;;;;;;;;;15263:9;15251;;:21;;;;;;;;;;;;;;;;;;15123:157:::0;:::o;10238:47::-;;;;:::o;14192:140::-;14264:4;14287:31;:37;14319:4;14287:37;;;;;;;;;;;;;;;;;;;;;;;;;14280:44;;14192:140;;;:::o;10091:36::-;;;;:::o;10655:33::-;;;;:::o;10729:::-;;;;:::o;13488:234::-;854:13:4;:11;:13::i;:::-;13607:4:2::1;13601;13597:1;13581:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;13580:31;;;;:::i;:::-;13570:6;:41;;13562:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;13707:6;13697;:17;;;;:::i;:::-;13674:20;:40;;;;13488:234:::0;:::o;3824:355::-;3964:4;3981:36;3991:6;3999:9;4010:6;3981:9;:36::i;:::-;4028:121;4037:6;4045:12;:10;:12::i;:::-;4059:89;4097:6;4059:89;;;;;;;;;;;;;;;;;:11;:19;4071:6;4059:19;;;;;;;;;;;;;;;:33;4079:12;:10;:12::i;:::-;4059:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;4028:8;:121::i;:::-;4167:4;4160:11;;3824:355;;;;;:::o;9802:89::-;9848:42;9802:89;:::o;10147:45::-;;;;:::o;10407:32::-;;;;;;;;;;;;;:::o;1963:92::-;2021:5;2046:1;2039:8;;1963:92;:::o;4589:218::-;4677:4;4694:83;4703:12;:10;:12::i;:::-;4717:7;4726:50;4765:10;4726:11;:25;4738:12;:10;:12::i;:::-;4726:25;;;;;;;;;;;;;;;:34;4752:7;4726:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;4694:8;:83::i;:::-;4795:4;4788:11;;4589:218;;;;:::o;9767:28::-;;;;;;;;;;;;;:::o;10446:33::-;;;;;;;;;;;;;:::o;10486:31::-;;;;;;;;;;;;;:::o;13956:228::-;854:13:4;:11;:13::i;:::-;14062:9:2::1;14057:120;14081:6;;:13;;14077:1;:17;14057:120;;;14161:4;14116:31;:42;14148:6;;14155:1;14148:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;14116:42;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;14096:3;;;;;:::i;:::-;;;;14057:120;;;;13956:228:::0;;;:::o;2293:127::-;2367:7;2394:9;:18;2404:7;2394:18;;;;;;;;;;;;;;;;2387:25;;2293:127;;;:::o;1383:148:4:-;854:13;:11;:13::i;:::-;1490:1:::1;1453:40;;1474:6;;;;;;;;;;;1453:40;;;;;;;;;;;;1521:1;1504:6;;:19;;;;;;;;;;;;;;;;;;1383:148::o:0;20202:447:2:-;854:13:4;:11;:13::i;:::-;20356:3:2::1;20333:19;:26;;20325:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;20446:4;20434:8;:16;;:33;;;;;20466:1;20454:8;:13;;20434:33;20426:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;20549:19;20531:15;:37;;;;20598:8;20579:16;:27;;;;20633:8;20617:13;;:24;;;;;;;;;;;;;;;;;;20202:447:::0;;;:::o;12715:120::-;12767:4;854:13:4;:11;:13::i;:::-;12800:5:2::1;12783:14;;:22;;;;;;;;;;;;;;;;;;12823:4;12816:11;;12715:120:::0;:::o;9904:30::-;;;;;;;;;;;;;:::o;12515:191::-;854:13:4;:11;:13::i;:::-;12586:4:2::1;12570:13;;:20;;;;;;;;;;;;;;;;;;12615:4;12601:11;;:18;;;;;;;;;;;;;;;;;;12647:15;12630:14;:32;;;;12686:12;12673:10;:25;;;;12515:191::o:0;649:79:4:-;687:7;714:6;;;;;;;;;;;707:13;;649:79;:::o;9941:24:2:-;;;;;;;;;;;;;:::o;14341:101::-;854:13:4;:11;:13::i;:::-;14427:7:2::1;14413:11;;:21;;;;;;;;;;;;;;;;;;14341:101:::0;:::o;1219:104::-;1275:13;1308:7;1301:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1219:104;:::o;14454:245::-;854:13:4;:11;:13::i;:::-;14561::2::1;;;;;;;;;;;14553:21;;:4;:21;;::::0;14545:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14650:41;14679:4;14685:5;14650:28;:41::i;:::-;14454:245:::0;;:::o;10292:35::-;;;;:::o;10695:27::-;;;;:::o;12987:102::-;854:13:4;:11;:13::i;:::-;13076:5:2::1;13055:18;;:26;;;;;;;;;;;;;;;;;;12987:102:::0;:::o;5311:269::-;5404:4;5421:129;5430:12;:10;:12::i;:::-;5444:7;5453:96;5492:15;5453:96;;;;;;;;;;;;;;;;;:11;:25;5465:12;:10;:12::i;:::-;5453:25;;;;;;;;;;;;;;;:34;5479:7;5453:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;5421:8;:129::i;:::-;5568:4;5561:11;;5311:269;;;;:::o;10199:29::-;;;;:::o;10524:37::-;;;;;;;;;;;;;:::o;2634:175::-;2720:4;2737:42;2747:12;:10;:12::i;:::-;2761:9;2772:6;2737:9;:42::i;:::-;2797:4;2790:11;;2634:175;;;;:::o;14906:208::-;854:13:4;:11;:13::i;:::-;15043:15:2::1;;;;;;;;;;;15000:59;;15023:18;15000:59;;;;;;;;;;;;15088:18;15070:15;;:36;;;;;;;;;;;;;;;;;;14906:208:::0;:::o;11011:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;10614:31::-;;;;;;;;;;;;;:::o;13731:216::-;854:13:4;:11;:13::i;:::-;13854:4:2::1;13848;13843:2;13827:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;13826:32;;;;:::i;:::-;13816:6;:42;;13808:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;13932:6;13922;:17;;;;:::i;:::-;13910:9;:29;;;;13731:216:::0;:::o;12358:149::-;854:13:4;:11;:13::i;:::-;12434:5:2::1;12418:13;;:21;;;;;;;;;;;;;;;;;;12450:49;12479:13;;;;;;;;;;;12494:4;12450:28;:49::i;:::-;12358:149:::0;:::o;10568:39::-;;;;;;;;;;;;;:::o;9975:35::-;;;;:::o;13098:381::-;13179:4;854:13:4;:11;:13::i;:::-;13235:6:2::1;13231:1;13215:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;13202:9;:39;;13194:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;13350:4;13346:1;13330:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;13317:9;:37;;13309:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;13442:9;13421:18;:30;;;;13468:4;13461:11;;13098:381:::0;;;:::o;2873:151::-;2962:7;2989:11;:18;3001:5;2989:18;;;;;;;;;;;;;;;:27;3008:7;2989:27;;;;;;;;;;;;;;;;2982:34;;2873:151;;;;:::o;10017:33::-;;;;:::o;12844:134::-;12904:4;854:13:4;:11;:13::i;:::-;12943:5:2::1;12920:20;;:28;;;;;;;;;;;;;;;;;;12966:4;12959:11;;12844:134:::0;:::o;1829:244:4:-;854:13;:11;:13::i;:::-;1938:1:::1;1918:22;;:8;:22;;::::0;1910:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2028:8;1999:38;;2020:6;;;;;;;;;;;1999:38;;;;;;;;;;;;2057:8;2048:6;;:17;;;;;;;;;;;;;;;;;;1829:244:::0;:::o;10057:24:2:-;;;;:::o;21178:760::-;21262:4;854:13:4;:11;:13::i;:::-;21327:19:2::1;;21304:20;;:42;;;;:::i;:::-;21286:15;:60;21278:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;21414:4;21403:7;:15;;21395:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21499:15;21476:20;:38;;;;21528:28;21559:4;:14;;;21574:13;;;;;;;;;;;21559:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21528:60;;21602:20;21625:44;21663:5;21625:33;21650:7;21625:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;21602:67;;21702:1;21687:12;:16;21683:109;;;21719:61;21735:13;;;;;;;;;;;21758:6;21767:12;21719:15;:61::i;:::-;21683:109;21805:19;21842:13;;;;;;;;;;;21805:51;;21867:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21894:14;;;;;;;;;;21926:4;21919:11;;;;;21178:760:::0;;;:::o;329:182:3:-;387:7;407:9;423:1;419;:5;;;;:::i;:::-;407:17;;448:1;443;:6;;435:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;502:1;495:8;;;329:182;;;;:::o;99:98:0:-;152:7;179:10;172:17;;99:98;:::o;8504:381:2:-;8657:1;8640:19;;:5;:19;;;8632:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8738:1;8719:21;;:7;:21;;;8711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8823:6;8793:11;:18;8805:5;8793:18;;;;;;;;;;;;;;;:27;8812:7;8793:27;;;;;;;;;;;;;;;:36;;;;8861:7;8845:32;;8854:5;8845:32;;;8870:6;8845:32;;;;;;:::i;:::-;;;;;;;;8504:381;;;:::o;1543:127:4:-;1613:12;:10;:12::i;:::-;1602:23;;:7;:5;:7::i;:::-;:23;;;1594:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1543:127::o;15340:2242:2:-;15511:1;15495:18;;:4;:18;;;15487:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15588:1;15574:16;;:2;:16;;;15566:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15655:1;15645:6;:11;15642:92;;15673:28;15689:4;15695:2;15699:1;15673:15;:28::i;:::-;15716:7;;15642:92;15757:14;;;;;;;;;;;15754:811;;;15817:7;:5;:7::i;:::-;15809:15;;:4;:15;;;;:49;;;;;15851:7;:5;:7::i;:::-;15845:13;;:2;:13;;;;15809:49;:86;;;;;15893:1;15879:16;;:2;:16;;;;15809:86;:128;;;;;15930:6;15916:21;;:2;:21;;;;15809:128;:158;;;;;15959:8;;;;;;;;;;;15958:9;15809:158;15787:777;;;16005:13;;;;;;;;;;;16001:140;;16058:9;;;;;;;;;;;16050:17;;:4;:17;;;:44;;;;16079:15;;;;;;;;;;;16071:23;;:4;:23;;;16050:44;16042:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;16001:140;16163:25;:29;16189:2;16163:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;16197:31;:37;16229:4;16197:37;;;;;;;;;;;;;;;;;;;;;;;;;16196:38;16163:71;16159:378;;;16281:20;;16271:6;:30;;16263:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;16159:378;;;16407:31;:37;16439:4;16407:37;;;;;;;;;;;;;;;;;;;;;;;;;16403:134;;16502:9;;16485:13;16495:2;16485:9;:13::i;:::-;16476:6;:22;;;;:::i;:::-;:35;;16468:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16403:134;16159:378;15787:777;15754:811;16583:9;;;;;;;;;;;:22;;;16606:4;16612:2;16616:6;16583:40;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16646:20;;;;;;;;;;;:56;;;;;16671:25;:31;16697:4;16671:31;;;;;;;;;;;;;;;;;;;;;;;;;16670:32;16646:56;16642:345;;;16736:7;:5;:7::i;:::-;16730:13;;:2;:13;;;;:54;;;;;16747:31;:37;16779:4;16747:37;;;;;;;;;;;;;;;;;;;;;;;;;16730:54;16726:242;;;16820:58;16843:28;:34;16872:4;16843:34;;;;;;;;;;;;;;;;16820:22;:58::i;:::-;16812:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;16726:242;16642:345;16991:28;17022:24;17040:4;17022:9;:24::i;:::-;16991:55;;17060:12;17099:18;;17075:20;:42;;17060:57;;17146:7;:33;;;;;17171:8;;;;;;;;;;;17170:9;17146:33;:82;;;;;17197:25;:31;17223:4;17197:31;;;;;;;;;;;;;;;;;;;;;;;;;17196:32;17146:82;17128:216;;;17266:4;17255:8;;:15;;;;;;;;;;;;;;;;;;17288:10;:8;:10::i;:::-;17327:5;17316:8;;:16;;;;;;;;;;;;;;;;;;17128:216;17358:8;;;;;;;;;;;17357:9;:42;;;;;17370:25;:29;17396:2;17370:29;;;;;;;;;;;;;;;;;;;;;;;;;17357:42;:59;;;;;17403:13;;;;;;;;;;;17357:59;:114;;;;;17456:15;;17439:14;;:32;;;;:::i;:::-;17420:15;:51;;17357:114;17354:174;;;17487:29;:27;:29::i;:::-;;17354:174;17541:33;17557:4;17563:2;17567:6;17541:15;:33::i;:::-;15453:2129;;15340:2242;;;;:::o;1235:193:3:-;1321:7;1354:1;1349;:6;;1357:12;1341:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1381:9;1397:1;1393;:5;;;;:::i;:::-;1381:17;;1419:1;1412:8;;;1235:193;;;;;:::o;14708:189:2:-;14825:5;14791:25;:31;14817:4;14791:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14883:5;14849:40;;14877:4;14849:40;;;;;;;;;;;;14708:189;;:::o;1688:473:3:-;1746:7;1996:1;1991;:6;1987:47;;2021:1;2014:8;;;;1987:47;2047:9;2063:1;2059;:5;;;;:::i;:::-;2047:17;;2092:1;2087;2083;:5;;;;:::i;:::-;:10;2075:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2152:1;2145:8;;;1688:473;;;;;:::o;2638:132::-;2696:7;2723:39;2727:1;2730;2723:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2716:46;;2638:132;;;;:::o;6071:572:2:-;6229:1;6211:20;;:6;:20;;;6203:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6313:1;6292:23;;:9;:23;;;6284:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6366:47;6387:6;6395:9;6406:6;6366:20;:47::i;:::-;6447:71;6469:6;6447:71;;;;;;;;;;;;;;;;;:9;:17;6457:6;6447:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;6427:9;:17;6437:6;6427:17;;;;;;;;;;;;;;;:91;;;;6552:32;6577:6;6552:9;:20;6562:9;6552:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;6529:9;:20;6539:9;6529:20;;;;;;;;;;;;;;;:55;;;;6617:9;6600:35;;6609:6;6600:35;;;6628:6;6600:35;;;;;;:::i;:::-;;;;;;;;6071:572;;;:::o;899:135:4:-;942:7;972:14;989:13;:11;:13::i;:::-;972:30;;1020:6;1013:13;;;899:135;:::o;18110:117:2:-;18177:4;18207:12;18200:4;:19;18193:26;;18110:117;;;:::o;18665:1528::-;18704:23;18730:24;18748:4;18730:9;:24::i;:::-;18704:50;;18765:25;18835:12;;18814:18;;18793;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;18765:82;;18858:12;18906:1;18887:15;:20;:46;;;;18932:1;18911:17;:22;18887:46;18884:60;;;18936:7;;;;;18884:60;18999:2;18978:18;;:23;;;;:::i;:::-;18960:15;:41;18957:111;;;19054:2;19033:18;;:23;;;;:::i;:::-;19015:41;;18957:111;19081:23;19166:1;19146:17;19125:18;;19107:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;19081:86;;19178:26;19207:36;19227:15;19207;:19;;:36;;;;:::i;:::-;19178:65;;19257:25;19285:21;19257:49;;19320:36;19337:18;19320:16;:36::i;:::-;19371:18;19392:44;19418:17;19392:21;:25;;:44;;;;:::i;:::-;19371:65;;19450:23;19476:57;19515:17;19476:34;19491:18;;19476:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;19450:83;;19544:17;19564:51;19597:17;19564:28;19579:12;;19564:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;19544:71;;19632:23;19689:9;19671:15;19658:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;19632:66;;19736:1;19715:18;:22;;;;19769:1;19748:18;:22;;;;19796:1;19781:12;:16;;;;19832:9;;;;;;;;;;;19824:23;;19855:9;19824:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19811:58;;;;;19904:1;19886:15;:19;:42;;;;;19927:1;19909:15;:19;19886:42;19883:210;;;19944:46;19957:15;19974;19944:12;:46::i;:::-;20010:71;20025:18;20045:15;20062:18;;20010:71;;;;;;;;:::i;:::-;;;;;;;;19883:210;20130:15;;;;;;;;;;;20122:29;;20159:21;20122:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20109:76;;;;;18693:1500;;;;;;;;;;18665:1528;:::o;20658:511::-;20715:4;20751:15;20734:14;:32;;;;20780:28;20811:4;:14;;;20826:13;;;;;;;;;;;20811:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20780:60;;20854:20;20877:53;20924:5;20877:42;20902:16;;20877:20;:24;;:42;;;;:::i;:::-;:46;;:53;;;;:::i;:::-;20854:76;;20963:1;20948:12;:16;20944:109;;;20980:61;20996:13;;;;;;;;;;;21019:6;21028:12;20980:15;:61::i;:::-;20944:109;21066:19;21103:13;;;;;;;;;;;21066:51;;21128:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21157:4;21150:11;;;;;20658:511;:::o;3267:279:3:-;3353:7;3385:1;3381;:5;3388:12;3373:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3412:9;3428:1;3424;:5;;;;:::i;:::-;3412:17;;3537:1;3530:8;;;3267:279;;;;;:::o;9489:125:2:-;;;;:::o;2081:113:4:-;2126:7;2168:1;2152:18;;:6;;;;;;;;;;;:18;;;:34;;2180:6;;;;;;;;;;;2152:34;;;2173:4;;;;;;;;;;;2152:34;2145:41;;2081:113;:::o;795:136:3:-;853:7;880:43;884:1;887;880:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;873:50;;795:136;;;;:::o;17591:511:2:-;17660:21;17698:1;17684:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17660:40;;17729:4;17711;17716:1;17711:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17755:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17745:4;17750:1;17745:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;17791:62;17808:4;17823:15;17841:11;17791:8;:62::i;:::-;17867:15;:66;;;17948:11;17974:1;18018:4;18045;18065:15;17867:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17646:456;17591:511;:::o;18235:421::-;18316:62;18333:4;18348:15;18366:11;18316:8;:62::i;:::-;18392:15;:31;;;18431:9;18464:4;18484:11;18510:1;18553;9848:42;18622:15;18392:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18235:421;;:::o;7:99:6:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:153::-;3869:9;3902:37;3933:5;3902:37;:::i;:::-;3889:50;;3792:153;;;:::o;3951:185::-;4065:64;4123:5;4065:64;:::i;:::-;4060:3;4053:77;3951:185;;:::o;4142:276::-;4262:4;4300:2;4289:9;4285:18;4277:26;;4313:98;4408:1;4397:9;4393:17;4384:6;4313:98;:::i;:::-;4142:276;;;;:::o;4424:118::-;4511:24;4529:5;4511:24;:::i;:::-;4506:3;4499:37;4424:118;;:::o;4548:222::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:71;4760:1;4749:9;4745:17;4736:6;4692:71;:::i;:::-;4548:222;;;;:::o;4776:329::-;4835:6;4884:2;4872:9;4863:7;4859:23;4855:32;4852:119;;;4890:79;;:::i;:::-;4852:119;5010:1;5035:53;5080:7;5071:6;5060:9;5056:22;5035:53;:::i;:::-;5025:63;;4981:117;4776:329;;;;:::o;5111:::-;5170:6;5219:2;5207:9;5198:7;5194:23;5190:32;5187:119;;;5225:79;;:::i;:::-;5187:119;5345:1;5370:53;5415:7;5406:6;5395:9;5391:22;5370:53;:::i;:::-;5360:63;;5316:117;5111:329;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:118::-;6158:24;6176:5;6158:24;:::i;:::-;6153:3;6146:37;6071:118;;:::o;6195:222::-;6288:4;6326:2;6315:9;6311:18;6303:26;;6339:71;6407:1;6396:9;6392:17;6383:6;6339:71;:::i;:::-;6195:222;;;;:::o;6423:86::-;6458:7;6498:4;6491:5;6487:16;6476:27;;6423:86;;;:::o;6515:112::-;6598:22;6614:5;6598:22;:::i;:::-;6593:3;6586:35;6515:112;;:::o;6633:214::-;6722:4;6760:2;6749:9;6745:18;6737:26;;6773:67;6837:1;6826:9;6822:17;6813:6;6773:67;:::i;:::-;6633:214;;;;:::o;6853:117::-;6962:1;6959;6952:12;6976:117;7085:1;7082;7075:12;7099:117;7208:1;7205;7198:12;7239:568;7312:8;7322:6;7372:3;7365:4;7357:6;7353:17;7349:27;7339:122;;7380:79;;:::i;:::-;7339:122;7493:6;7480:20;7470:30;;7523:18;7515:6;7512:30;7509:117;;;7545:79;;:::i;:::-;7509:117;7659:4;7651:6;7647:17;7635:29;;7713:3;7705:4;7697:6;7693:17;7683:8;7679:32;7676:41;7673:128;;;7720:79;;:::i;:::-;7673:128;7239:568;;;;;:::o;7813:116::-;7883:21;7898:5;7883:21;:::i;:::-;7876:5;7873:32;7863:60;;7919:1;7916;7909:12;7863:60;7813:116;:::o;7935:133::-;7978:5;8016:6;8003:20;7994:29;;8032:30;8056:5;8032:30;:::i;:::-;7935:133;;;;:::o;8074:698::-;8166:6;8174;8182;8231:2;8219:9;8210:7;8206:23;8202:32;8199:119;;;8237:79;;:::i;:::-;8199:119;8385:1;8374:9;8370:17;8357:31;8415:18;8407:6;8404:30;8401:117;;;8437:79;;:::i;:::-;8401:117;8550:80;8622:7;8613:6;8602:9;8598:22;8550:80;:::i;:::-;8532:98;;;;8328:312;8679:2;8705:50;8747:7;8738:6;8727:9;8723:22;8705:50;:::i;:::-;8695:60;;8650:115;8074:698;;;;;:::o;8778:613::-;8852:6;8860;8868;8917:2;8905:9;8896:7;8892:23;8888:32;8885:119;;;8923:79;;:::i;:::-;8885:119;9043:1;9068:53;9113:7;9104:6;9093:9;9089:22;9068:53;:::i;:::-;9058:63;;9014:117;9170:2;9196:53;9241:7;9232:6;9221:9;9217:22;9196:53;:::i;:::-;9186:63;;9141:118;9298:2;9324:50;9366:7;9357:6;9346:9;9342:22;9324:50;:::i;:::-;9314:60;;9269:115;8778:613;;;;;:::o;9397:323::-;9453:6;9502:2;9490:9;9481:7;9477:23;9473:32;9470:119;;;9508:79;;:::i;:::-;9470:119;9628:1;9653:50;9695:7;9686:6;9675:9;9671:22;9653:50;:::i;:::-;9643:60;;9599:114;9397:323;;;;:::o;9726:468::-;9791:6;9799;9848:2;9836:9;9827:7;9823:23;9819:32;9816:119;;;9854:79;;:::i;:::-;9816:119;9974:1;9999:53;10044:7;10035:6;10024:9;10020:22;9999:53;:::i;:::-;9989:63;;9945:117;10101:2;10127:50;10169:7;10160:6;10149:9;10145:22;10127:50;:::i;:::-;10117:60;;10072:115;9726:468;;;;;:::o;10200:474::-;10268:6;10276;10325:2;10313:9;10304:7;10300:23;10296:32;10293:119;;;10331:79;;:::i;:::-;10293:119;10451:1;10476:53;10521:7;10512:6;10501:9;10497:22;10476:53;:::i;:::-;10466:63;;10422:117;10578:2;10604:53;10649:7;10640:6;10629:9;10625:22;10604:53;:::i;:::-;10594:63;;10549:118;10200:474;;;;;:::o;10680:180::-;10728:77;10725:1;10718:88;10825:4;10822:1;10815:15;10849:4;10846:1;10839:15;10866:320;10910:6;10947:1;10941:4;10937:12;10927:22;;10994:1;10988:4;10984:12;11015:18;11005:81;;11071:4;11063:6;11059:17;11049:27;;11005:81;11133:2;11125:6;11122:14;11102:18;11099:38;11096:84;;11152:18;;:::i;:::-;11096:84;10917:269;10866:320;;;:::o;11192:180::-;11240:77;11237:1;11230:88;11337:4;11334:1;11327:15;11361:4;11358:1;11351:15;11378:410;11418:7;11441:20;11459:1;11441:20;:::i;:::-;11436:25;;11475:20;11493:1;11475:20;:::i;:::-;11470:25;;11530:1;11527;11523:9;11552:30;11570:11;11552:30;:::i;:::-;11541:41;;11731:1;11722:7;11718:15;11715:1;11712:22;11692:1;11685:9;11665:83;11642:139;;11761:18;;:::i;:::-;11642:139;11426:362;11378:410;;;;:::o;11794:180::-;11842:77;11839:1;11832:88;11939:4;11936:1;11929:15;11963:4;11960:1;11953:15;11980:185;12020:1;12037:20;12055:1;12037:20;:::i;:::-;12032:25;;12071:20;12089:1;12071:20;:::i;:::-;12066:25;;12110:1;12100:35;;12115:18;;:::i;:::-;12100:35;12157:1;12154;12150:9;12145:14;;11980:185;;;;:::o;12171:234::-;12311:34;12307:1;12299:6;12295:14;12288:58;12380:17;12375:2;12367:6;12363:15;12356:42;12171:234;:::o;12411:366::-;12553:3;12574:67;12638:2;12633:3;12574:67;:::i;:::-;12567:74;;12650:93;12739:3;12650:93;:::i;:::-;12768:2;12763:3;12759:12;12752:19;;12411:366;;;:::o;12783:419::-;12949:4;12987:2;12976:9;12972:18;12964:26;;13036:9;13030:4;13026:20;13022:1;13011:9;13007:17;13000:47;13064:131;13190:4;13064:131;:::i;:::-;13056:139;;12783:419;;;:::o;13208:180::-;13256:77;13253:1;13246:88;13353:4;13350:1;13343:15;13377:4;13374:1;13367:15;13394:233;13433:3;13456:24;13474:5;13456:24;:::i;:::-;13447:33;;13502:66;13495:5;13492:77;13489:103;;13572:18;;:::i;:::-;13489:103;13619:1;13612:5;13608:13;13601:20;;13394:233;;;:::o;13633:238::-;13773:34;13769:1;13761:6;13757:14;13750:58;13842:21;13837:2;13829:6;13825:15;13818:46;13633:238;:::o;13877:366::-;14019:3;14040:67;14104:2;14099:3;14040:67;:::i;:::-;14033:74;;14116:93;14205:3;14116:93;:::i;:::-;14234:2;14229:3;14225:12;14218:19;;13877:366;;;:::o;14249:419::-;14415:4;14453:2;14442:9;14438:18;14430:26;;14502:9;14496:4;14492:20;14488:1;14477:9;14473:17;14466:47;14530:131;14656:4;14530:131;:::i;:::-;14522:139;;14249:419;;;:::o;14674:235::-;14814:34;14810:1;14802:6;14798:14;14791:58;14883:18;14878:2;14870:6;14866:15;14859:43;14674:235;:::o;14915:366::-;15057:3;15078:67;15142:2;15137:3;15078:67;:::i;:::-;15071:74;;15154:93;15243:3;15154:93;:::i;:::-;15272:2;15267:3;15263:12;15256:19;;14915:366;;;:::o;15287:419::-;15453:4;15491:2;15480:9;15476:18;15468:26;;15540:9;15534:4;15530:20;15526:1;15515:9;15511:17;15504:47;15568:131;15694:4;15568:131;:::i;:::-;15560:139;;15287:419;;;:::o;15712:244::-;15852:34;15848:1;15840:6;15836:14;15829:58;15921:27;15916:2;15908:6;15904:15;15897:52;15712:244;:::o;15962:366::-;16104:3;16125:67;16189:2;16184:3;16125:67;:::i;:::-;16118:74;;16201:93;16290:3;16201:93;:::i;:::-;16319:2;16314:3;16310:12;16303:19;;15962:366;;;:::o;16334:419::-;16500:4;16538:2;16527:9;16523:18;16515:26;;16587:9;16581:4;16577:20;16573:1;16562:9;16558:17;16551:47;16615:131;16741:4;16615:131;:::i;:::-;16607:139;;16334:419;;;:::o;16759:223::-;16899:34;16895:1;16887:6;16883:14;16876:58;16968:6;16963:2;16955:6;16951:15;16944:31;16759:223;:::o;16988:366::-;17130:3;17151:67;17215:2;17210:3;17151:67;:::i;:::-;17144:74;;17227:93;17316:3;17227:93;:::i;:::-;17345:2;17340:3;17336:12;17329:19;;16988:366;;;:::o;17360:419::-;17526:4;17564:2;17553:9;17549:18;17541:26;;17613:9;17607:4;17603:20;17599:1;17588:9;17584:17;17577:47;17641:131;17767:4;17641:131;:::i;:::-;17633:139;;17360:419;;;:::o;17785:240::-;17925:34;17921:1;17913:6;17909:14;17902:58;17994:23;17989:2;17981:6;17977:15;17970:48;17785:240;:::o;18031:366::-;18173:3;18194:67;18258:2;18253:3;18194:67;:::i;:::-;18187:74;;18270:93;18359:3;18270:93;:::i;:::-;18388:2;18383:3;18379:12;18372:19;;18031:366;;;:::o;18403:419::-;18569:4;18607:2;18596:9;18592:18;18584:26;;18656:9;18650:4;18646:20;18642:1;18631:9;18627:17;18620:47;18684:131;18810:4;18684:131;:::i;:::-;18676:139;;18403:419;;;:::o;18828:239::-;18968:34;18964:1;18956:6;18952:14;18945:58;19037:22;19032:2;19024:6;19020:15;19013:47;18828:239;:::o;19073:366::-;19215:3;19236:67;19300:2;19295:3;19236:67;:::i;:::-;19229:74;;19312:93;19401:3;19312:93;:::i;:::-;19430:2;19425:3;19421:12;19414:19;;19073:366;;;:::o;19445:419::-;19611:4;19649:2;19638:9;19634:18;19626:26;;19698:9;19692:4;19688:20;19684:1;19673:9;19669:17;19662:47;19726:131;19852:4;19726:131;:::i;:::-;19718:139;;19445:419;;;:::o;19870:225::-;20010:34;20006:1;19998:6;19994:14;19987:58;20079:8;20074:2;20066:6;20062:15;20055:33;19870:225;:::o;20101:366::-;20243:3;20264:67;20328:2;20323:3;20264:67;:::i;:::-;20257:74;;20340:93;20429:3;20340:93;:::i;:::-;20458:2;20453:3;20449:12;20442:19;;20101:366;;;:::o;20473:419::-;20639:4;20677:2;20666:9;20662:18;20654:26;;20726:9;20720:4;20716:20;20712:1;20701:9;20697:17;20690:47;20754:131;20880:4;20754:131;:::i;:::-;20746:139;;20473:419;;;:::o;20898:191::-;20938:3;20957:20;20975:1;20957:20;:::i;:::-;20952:25;;20991:20;21009:1;20991:20;:::i;:::-;20986:25;;21034:1;21031;21027:9;21020:16;;21055:3;21052:1;21049:10;21046:36;;;21062:18;;:::i;:::-;21046:36;20898:191;;;;:::o;21095:182::-;21235:34;21231:1;21223:6;21219:14;21212:58;21095:182;:::o;21283:366::-;21425:3;21446:67;21510:2;21505:3;21446:67;:::i;:::-;21439:74;;21522:93;21611:3;21522:93;:::i;:::-;21640:2;21635:3;21631:12;21624:19;;21283:366;;;:::o;21655:419::-;21821:4;21859:2;21848:9;21844:18;21836:26;;21908:9;21902:4;21898:20;21894:1;21883:9;21879:17;21872:47;21936:131;22062:4;21936:131;:::i;:::-;21928:139;;21655:419;;;:::o;22080:229::-;22220:34;22216:1;22208:6;22204:14;22197:58;22289:12;22284:2;22276:6;22272:15;22265:37;22080:229;:::o;22315:366::-;22457:3;22478:67;22542:2;22537:3;22478:67;:::i;:::-;22471:74;;22554:93;22643:3;22554:93;:::i;:::-;22672:2;22667:3;22663:12;22656:19;;22315:366;;;:::o;22687:419::-;22853:4;22891:2;22880:9;22876:18;22868:26;;22940:9;22934:4;22930:20;22926:1;22915:9;22911:17;22904:47;22968:131;23094:4;22968:131;:::i;:::-;22960:139;;22687:419;;;:::o;23112:143::-;23169:5;23200:6;23194:13;23185:22;;23216:33;23243:5;23216:33;:::i;:::-;23112:143;;;;:::o;23261:351::-;23331:6;23380:2;23368:9;23359:7;23355:23;23351:32;23348:119;;;23386:79;;:::i;:::-;23348:119;23506:1;23531:64;23587:7;23578:6;23567:9;23563:22;23531:64;:::i;:::-;23521:74;;23477:128;23261:351;;;;:::o;23618:177::-;23758:29;23754:1;23746:6;23742:14;23735:53;23618:177;:::o;23801:366::-;23943:3;23964:67;24028:2;24023:3;23964:67;:::i;:::-;23957:74;;24040:93;24129:3;24040:93;:::i;:::-;24158:2;24153:3;24149:12;24142:19;;23801:366;;;:::o;24173:419::-;24339:4;24377:2;24366:9;24362:18;24354:26;;24426:9;24420:4;24416:20;24412:1;24401:9;24397:17;24390:47;24454:131;24580:4;24454:131;:::i;:::-;24446:139;;24173:419;;;:::o;24598:223::-;24738:34;24734:1;24726:6;24722:14;24715:58;24807:6;24802:2;24794:6;24790:15;24783:31;24598:223;:::o;24827:366::-;24969:3;24990:67;25054:2;25049:3;24990:67;:::i;:::-;24983:74;;25066:93;25155:3;25066:93;:::i;:::-;25184:2;25179:3;25175:12;25168:19;;24827:366;;;:::o;25199:419::-;25365:4;25403:2;25392:9;25388:18;25380:26;;25452:9;25446:4;25442:20;25438:1;25427:9;25423:17;25416:47;25480:131;25606:4;25480:131;:::i;:::-;25472:139;;25199:419;;;:::o;25624:221::-;25764:34;25760:1;25752:6;25748:14;25741:58;25833:4;25828:2;25820:6;25816:15;25809:29;25624:221;:::o;25851:366::-;25993:3;26014:67;26078:2;26073:3;26014:67;:::i;:::-;26007:74;;26090:93;26179:3;26090:93;:::i;:::-;26208:2;26203:3;26199:12;26192:19;;25851:366;;;:::o;26223:419::-;26389:4;26427:2;26416:9;26412:18;26404:26;;26476:9;26470:4;26466:20;26462:1;26451:9;26447:17;26440:47;26504:131;26630:4;26504:131;:::i;:::-;26496:139;;26223:419;;;:::o;26648:182::-;26788:34;26784:1;26776:6;26772:14;26765:58;26648:182;:::o;26836:366::-;26978:3;26999:67;27063:2;27058:3;26999:67;:::i;:::-;26992:74;;27075:93;27164:3;27075:93;:::i;:::-;27193:2;27188:3;27184:12;27177:19;;26836:366;;;:::o;27208:419::-;27374:4;27412:2;27401:9;27397:18;27389:26;;27461:9;27455:4;27451:20;27447:1;27436:9;27432:17;27425:47;27489:131;27615:4;27489:131;:::i;:::-;27481:139;;27208:419;;;:::o;27633:224::-;27773:34;27769:1;27761:6;27757:14;27750:58;27842:7;27837:2;27829:6;27825:15;27818:32;27633:224;:::o;27863:366::-;28005:3;28026:67;28090:2;28085:3;28026:67;:::i;:::-;28019:74;;28102:93;28191:3;28102:93;:::i;:::-;28220:2;28215:3;28211:12;28204:19;;27863:366;;;:::o;28235:419::-;28401:4;28439:2;28428:9;28424:18;28416:26;;28488:9;28482:4;28478:20;28474:1;28463:9;28459:17;28452:47;28516:131;28642:4;28516:131;:::i;:::-;28508:139;;28235:419;;;:::o;28660:222::-;28800:34;28796:1;28788:6;28784:14;28777:58;28869:5;28864:2;28856:6;28852:15;28845:30;28660:222;:::o;28888:366::-;29030:3;29051:67;29115:2;29110:3;29051:67;:::i;:::-;29044:74;;29127:93;29216:3;29127:93;:::i;:::-;29245:2;29240:3;29236:12;29229:19;;28888:366;;;:::o;29260:419::-;29426:4;29464:2;29453:9;29449:18;29441:26;;29513:9;29507:4;29503:20;29499:1;29488:9;29484:17;29477:47;29541:131;29667:4;29541:131;:::i;:::-;29533:139;;29260:419;;;:::o;29685:172::-;29825:24;29821:1;29813:6;29809:14;29802:48;29685:172;:::o;29863:366::-;30005:3;30026:67;30090:2;30085:3;30026:67;:::i;:::-;30019:74;;30102:93;30191:3;30102:93;:::i;:::-;30220:2;30215:3;30211:12;30204:19;;29863:366;;;:::o;30235:419::-;30401:4;30439:2;30428:9;30424:18;30416:26;;30488:9;30482:4;30478:20;30474:1;30463:9;30459:17;30452:47;30516:131;30642:4;30516:131;:::i;:::-;30508:139;;30235:419;;;:::o;30660:241::-;30800:34;30796:1;30788:6;30784:14;30777:58;30869:24;30864:2;30856:6;30852:15;30845:49;30660:241;:::o;30907:366::-;31049:3;31070:67;31134:2;31129:3;31070:67;:::i;:::-;31063:74;;31146:93;31235:3;31146:93;:::i;:::-;31264:2;31259:3;31255:12;31248:19;;30907:366;;;:::o;31279:419::-;31445:4;31483:2;31472:9;31468:18;31460:26;;31532:9;31526:4;31522:20;31518:1;31507:9;31503:17;31496:47;31560:131;31686:4;31560:131;:::i;:::-;31552:139;;31279:419;;;:::o;31704:169::-;31844:21;31840:1;31832:6;31828:14;31821:45;31704:169;:::o;31879:366::-;32021:3;32042:67;32106:2;32101:3;32042:67;:::i;:::-;32035:74;;32118:93;32207:3;32118:93;:::i;:::-;32236:2;32231:3;32227:12;32220:19;;31879:366;;;:::o;32251:419::-;32417:4;32455:2;32444:9;32440:18;32432:26;;32504:9;32498:4;32494:20;32490:1;32479:9;32475:17;32468:47;32532:131;32658:4;32532:131;:::i;:::-;32524:139;;32251:419;;;:::o;32676:442::-;32825:4;32863:2;32852:9;32848:18;32840:26;;32876:71;32944:1;32933:9;32929:17;32920:6;32876:71;:::i;:::-;32957:72;33025:2;33014:9;33010:18;33001:6;32957:72;:::i;:::-;33039;33107:2;33096:9;33092:18;33083:6;33039:72;:::i;:::-;32676:442;;;;;;:::o;33124:137::-;33178:5;33209:6;33203:13;33194:22;;33225:30;33249:5;33225:30;:::i;:::-;33124:137;;;;:::o;33267:345::-;33334:6;33383:2;33371:9;33362:7;33358:23;33354:32;33351:119;;;33389:79;;:::i;:::-;33351:119;33509:1;33534:61;33587:7;33578:6;33567:9;33563:22;33534:61;:::i;:::-;33524:71;;33480:125;33267:345;;;;:::o;33618:248::-;33758:34;33754:1;33746:6;33742:14;33735:58;33827:31;33822:2;33814:6;33810:15;33803:56;33618:248;:::o;33872:366::-;34014:3;34035:67;34099:2;34094:3;34035:67;:::i;:::-;34028:74;;34111:93;34200:3;34111:93;:::i;:::-;34229:2;34224:3;34220:12;34213:19;;33872:366;;;:::o;34244:419::-;34410:4;34448:2;34437:9;34433:18;34425:26;;34497:9;34491:4;34487:20;34483:1;34472:9;34468:17;34461:47;34525:131;34651:4;34525:131;:::i;:::-;34517:139;;34244:419;;;:::o;34669:194::-;34709:4;34729:20;34747:1;34729:20;:::i;:::-;34724:25;;34763:20;34781:1;34763:20;:::i;:::-;34758:25;;34807:1;34804;34800:9;34792:17;;34831:1;34825:4;34822:11;34819:37;;;34836:18;;:::i;:::-;34819:37;34669:194;;;;:::o;34869:220::-;35009:34;35005:1;34997:6;34993:14;34986:58;35078:3;35073:2;35065:6;35061:15;35054:28;34869:220;:::o;35095:366::-;35237:3;35258:67;35322:2;35317:3;35258:67;:::i;:::-;35251:74;;35334:93;35423:3;35334:93;:::i;:::-;35452:2;35447:3;35443:12;35436:19;;35095:366;;;:::o;35467:419::-;35633:4;35671:2;35660:9;35656:18;35648:26;;35720:9;35714:4;35710:20;35706:1;35695:9;35691:17;35684:47;35748:131;35874:4;35748:131;:::i;:::-;35740:139;;35467:419;;;:::o;35892:147::-;35993:11;36030:3;36015:18;;35892:147;;;;:::o;36045:114::-;;:::o;36165:398::-;36324:3;36345:83;36426:1;36421:3;36345:83;:::i;:::-;36338:90;;36437:93;36526:3;36437:93;:::i;:::-;36555:1;36550:3;36546:11;36539:18;;36165:398;;;:::o;36569:379::-;36753:3;36775:147;36918:3;36775:147;:::i;:::-;36768:154;;36939:3;36932:10;;36569:379;;;:::o;36954:442::-;37103:4;37141:2;37130:9;37126:18;37118:26;;37154:71;37222:1;37211:9;37207:17;37198:6;37154:71;:::i;:::-;37235:72;37303:2;37292:9;37288:18;37279:6;37235:72;:::i;:::-;37317;37385:2;37374:9;37370:18;37361:6;37317:72;:::i;:::-;36954:442;;;;;;:::o;37402:180::-;37450:77;37447:1;37440:88;37547:4;37544:1;37537:15;37571:4;37568:1;37561:15;37588:143;37645:5;37676:6;37670:13;37661:22;;37692:33;37719:5;37692:33;:::i;:::-;37588:143;;;;:::o;37737:351::-;37807:6;37856:2;37844:9;37835:7;37831:23;37827:32;37824:119;;;37862:79;;:::i;:::-;37824:119;37982:1;38007:64;38063:7;38054:6;38043:9;38039:22;38007:64;:::i;:::-;37997:74;;37953:128;37737:351;;;;:::o;38094:85::-;38139:7;38168:5;38157:16;;38094:85;;;:::o;38185:158::-;38243:9;38276:61;38294:42;38303:32;38329:5;38303:32;:::i;:::-;38294:42;:::i;:::-;38276:61;:::i;:::-;38263:74;;38185:158;;;:::o;38349:147::-;38444:45;38483:5;38444:45;:::i;:::-;38439:3;38432:58;38349:147;;:::o;38502:114::-;38569:6;38603:5;38597:12;38587:22;;38502:114;;;:::o;38622:184::-;38721:11;38755:6;38750:3;38743:19;38795:4;38790:3;38786:14;38771:29;;38622:184;;;;:::o;38812:132::-;38879:4;38902:3;38894:11;;38932:4;38927:3;38923:14;38915:22;;38812:132;;;:::o;38950:108::-;39027:24;39045:5;39027:24;:::i;:::-;39022:3;39015:37;38950:108;;:::o;39064:179::-;39133:10;39154:46;39196:3;39188:6;39154:46;:::i;:::-;39232:4;39227:3;39223:14;39209:28;;39064:179;;;;:::o;39249:113::-;39319:4;39351;39346:3;39342:14;39334:22;;39249:113;;;:::o;39398:732::-;39517:3;39546:54;39594:5;39546:54;:::i;:::-;39616:86;39695:6;39690:3;39616:86;:::i;:::-;39609:93;;39726:56;39776:5;39726:56;:::i;:::-;39805:7;39836:1;39821:284;39846:6;39843:1;39840:13;39821:284;;;39922:6;39916:13;39949:63;40008:3;39993:13;39949:63;:::i;:::-;39942:70;;40035:60;40088:6;40035:60;:::i;:::-;40025:70;;39881:224;39868:1;39865;39861:9;39856:14;;39821:284;;;39825:14;40121:3;40114:10;;39522:608;;;39398:732;;;;:::o;40136:831::-;40399:4;40437:3;40426:9;40422:19;40414:27;;40451:71;40519:1;40508:9;40504:17;40495:6;40451:71;:::i;:::-;40532:80;40608:2;40597:9;40593:18;40584:6;40532:80;:::i;:::-;40659:9;40653:4;40649:20;40644:2;40633:9;40629:18;40622:48;40687:108;40790:4;40781:6;40687:108;:::i;:::-;40679:116;;40805:72;40873:2;40862:9;40858:18;40849:6;40805:72;:::i;:::-;40887:73;40955:3;40944:9;40940:19;40931:6;40887:73;:::i;:::-;40136:831;;;;;;;;:::o;40973:807::-;41222:4;41260:3;41249:9;41245:19;41237:27;;41274:71;41342:1;41331:9;41327:17;41318:6;41274:71;:::i;:::-;41355:72;41423:2;41412:9;41408:18;41399:6;41355:72;:::i;:::-;41437:80;41513:2;41502:9;41498:18;41489:6;41437:80;:::i;:::-;41527;41603:2;41592:9;41588:18;41579:6;41527:80;:::i;:::-;41617:73;41685:3;41674:9;41670:19;41661:6;41617:73;:::i;:::-;41700;41768:3;41757:9;41753:19;41744:6;41700:73;:::i;:::-;40973:807;;;;;;;;;:::o;41786:663::-;41874:6;41882;41890;41939:2;41927:9;41918:7;41914:23;41910:32;41907:119;;;41945:79;;:::i;:::-;41907:119;42065:1;42090:64;42146:7;42137:6;42126:9;42122:22;42090:64;:::i;:::-;42080:74;;42036:128;42203:2;42229:64;42285:7;42276:6;42265:9;42261:22;42229:64;:::i;:::-;42219:74;;42174:129;42342:2;42368:64;42424:7;42415:6;42404:9;42400:22;42368:64;:::i;:::-;42358:74;;42313:129;41786:663;;;;;:::o
Swarm Source
ipfs://cf69a0a6da39db4be7e9331934f852e0525a27e11b739e11d22ff482eee3f9ac
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.