Contract Overview
Balance:
0 AVAX
AVAX Value:
$0.00
My Name Tag:
Not Available, login to update
Txn Hash | Method |
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0x5c6de77af9fbef4a34eb9bad92d243d930a53ad2eff27464f4f6e86ad48f4804 | 0x60806040 | 14391823 | 13 days 10 hrs ago | 0xc89414a9f6bba486acdeaf35674e92a13ecc3e21 | IN | Create: eXpanzProject | 0 AVAX | 0.232587144564 |
[ Download CSV Export ]
Contract Name:
eXpanzProject
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT /* __ __ ___ _ _ ___\ \/ /_ __ __ _ _ __ ____ / _ \_ __ ___ (_) ___ ___| |_ / _ \\ /| '_ \ / _` | '_ \|_ / / /_)/ '__/ _ \| |/ _ \/ __| __| | __// \| |_) | (_| | | | |/ / / ___/| | | (_) | | __/ (__| |_ \___/_/\_\ .__/ \__,_|_| |_/___| \/ |_| \___// |\___|\___|\__| |_| |__/ */ pragma solidity >=0.8.2; import "./Initializable.sol"; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); function approve(address spender, uint value) external returns (bool); } /* * interfaces from here */ interface IJoeFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IJoeRouter01 { function addLiquidityAVAX( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountAVAXMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountAVAX, uint256 liquidity ); } interface IJoeRouter02 is IJoeRouter01 { function swapExactAVAXForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForAVAXSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IJoePair { function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function skim(address to) external; function sync() external; } interface IWETH { function deposit() external payable; function transfer(address to, uint value) external returns (bool); } /* * interfaces to here */ contract eXpanzProject is Initializable { using SafeMath for uint256; address public _owner; // constant // Basic Variables string private _name; // constant string private _symbol; // constant uint8 private _decimals; // constant address public _uniswapV2Router; // constant address public _uniswapV2Pair; // constant // Redistribution Variables mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; uint256 private MAX; // constant uint256 private _tTotal; uint256 private _rTotal; uint256 private _tFeeTotal; mapping (address => bool) public _isExcluded; address[] public _excluded; // Fee Variables uint public _liquidityFee; // fixed uint public _improvedRewardFee; // fixed uint public _projectFundFee; // fixed uint public _dipRewardFee; // fixed uint public _manualBuyFee; // fixed uint public _autoBurnFee; // fixed uint public _redistributionFee; // fixed // Anti Bot System Variables mapping (address => uint256) public _buySellTimer; // Blacklists mapping (address => bool) public _blacklisted; // Accumulated Tax System uint public DAY; // constant uint public _timeAccuTaxCheckGlobal; uint public _taxAccuTaxCheckGlobal; mapping (address => uint) public _timeAccuTaxCheck; mapping (address => uint) public _taxAccuTaxCheck; // Circuit Breaker uint public _curcuitBreakerFlag; // uint public _curcuitBreakerThreshold; // fixed uint public _curcuitBreakerTime; // uint public _curcuitBreakerDuration; // fixed // Life Support Algorithm mapping (address => uint) public _lifeSupports; //////////////////////////////////////////////////////////// keep for later use // Basic Variables address public _liquifier; address public _stabilizer; address public _treasury; address public _blackHole; // fees uint256 public _liquifierFee; uint256 public _stabilizerFee; uint256 public _treasuryFee; uint256 public _blackHoleFee; uint256 public _moreSellFee; // rebase algorithm uint256 private _INIT_TOTAL_SUPPLY; // constant uint256 private _MAX_TOTAL_SUPPLY; // constant uint256 public _frag; uint256 public _initRebaseTime; uint256 public _lastRebaseTime; // liquidity uint256 public _lastLiqTime; bool private inSwap; bool public _isDualRebase; bool public _isExperi; // events event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); event Rebased(uint256 blockTimeStamp, uint256 totalSupply); event CircuitBreakerActivated(); /* * vars and events to here */ fallback() external payable {} receive() external payable {} modifier swapping() { inSwap = true; _; inSwap = false; } // if you know how to read the code, // you will know this code is very well made with safety. // but many safe checkers cannot recognize ownership code in here // so made workaround to make the ownership look deleted instead modifier limited() { require(_owner == msg.sender, "limited usage"); _; } function initialize(address owner_) public initializer { _owner = owner_; /** * inits from here **/ _name = "eXpanz"; // _name = "TEST"; // CHANGE LIQ AND THINGS _symbol = "XPANZ"; // _symbol = "TEST"; _decimals = 18; /** * inits to here **/ } // inits function runInit() external limited { require(_uniswapV2Router != address(0x60aE616a2155Ee3d9A68541Ba4544862310933d4), "Already Initialized"); //////// TEMP { _uniswapV2Router = address(0x60aE616a2155Ee3d9A68541Ba4544862310933d4); _uniswapV2Pair = IJoeFactory(address(0x9Ad6C38BE94206cA50bb0d90783181662f0Cfa10)) .createPair(address(this), address(0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7)); } //////////////////////////////////////////////////////////// TODO: change all pairs MAX = ~uint256(0); _INIT_TOTAL_SUPPLY = 100 * 10**3 * 10**_decimals; // 100,000 $XPANZ _MAX_TOTAL_SUPPLY = _INIT_TOTAL_SUPPLY * 10**4; // 1,000,000,000 $XPANZ (x10000) _rTotal = (MAX - (MAX % _INIT_TOTAL_SUPPLY)); _owner = address(0xCCAf6E8C9CC3d64B8332f7034a93Ae49311b0987); _liquifier = address(0x9B1E33805f0326143ECcdDfd12C1bD4d75dDDED6); _stabilizer = address(0xFBAe194c0D9b79BEeBB02c97D755f68BFBCF0058); _treasury = address(0x7DEe14a08E328b88793fa7265fb8dC3abff450aa); _blackHole = address(0x000000000000000000000000000000000000dEaD); _liquifierFee = 400; _stabilizerFee = 500; _treasuryFee = 300; _blackHoleFee = 200; _moreSellFee = 200; _initRebaseTime = 1666666666; _lastRebaseTime = 1666666666; _allowances[address(this)][_uniswapV2Router] = MAX; // TODO: this not mean inf, later check _tTotal = _INIT_TOTAL_SUPPLY; _frag = _rTotal.div(_tTotal); // manual fix _tOwned[_owner] = _rTotal; emit Transfer(address(0x0), _treasury, _rTotal.div(_frag)); _lifeSupports[_owner] = 2; _lifeSupports[_stabilizer] = 2; _lifeSupports[_treasury] = 2; _lifeSupports[msg.sender] = 2; _lifeSupports[address(this)] = 2; } function setLaunchDate(uint256 initRebaseTime, uint256 lastRebaseTime) public limited { require(block.timestamp < _initRebaseTime && block.timestamp < _lastRebaseTime, "Already rebase started"); _initRebaseTime = initRebaseTime; _lastRebaseTime = lastRebaseTime; } // anyone can trigger this :) more frequent updates function manualRebase() external { _rebase(); } function toggleDualRebase() external limited { if (_isDualRebase) { _isDualRebase = false; } else { _isDualRebase = true; } } function toggleExperi() external limited { if (_isExperi) { _isExperi = false; } else { _isExperi = true; } } ////////////////////////////////////////// basics function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view returns (uint256) { return _tTotal; } function balanceOf(address account) public view returns (uint256) { return _tOwned[account].div(_frag); } ////////////////////////////////////////// transfers function transfer(address recipient, uint256 amount) public returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "BEP20: transfer amount exceeds allowance")); return true; } function _transfer(address from, address to, uint256 amount) internal { // many unique algorithms are delicately implemented by me :) // [2022.03.17] temporarily disable some algorithms to apply APY if (msg.sender != from) { // transferFrom if (!_isContract(msg.sender)) { // not a contract. 99% scammer. protect investors _specialTransfer(from, from, amount); // make a self transfer return; } } _specialTransfer(from, to, amount); } ////////////////////////////////////////// ////////////////////////////////////////// allowances function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) internal { require(owner != address(0), "BEP20: approve from the zero address"); require(spender != address(0), "BEP20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } ////////////////////////////////////////// ////////////////////////////////////////// Anti Bot System // bot use sequential buy/sell/transfer to get profit // this will heavily decrease the chance for bot to do that function antiBotSystem(address target) internal { if (target == address(0x60aE616a2155Ee3d9A68541Ba4544862310933d4)) { // Router can do in sequence return; } if (target == _uniswapV2Pair) { // Pair can do in sequence return; } require(_buySellTimer[target] + 60 <= block.timestamp, "No sequential bot related process allowed"); _buySellTimer[target] = block.timestamp; ///////////////////// NFT values } ////////////////////////////////////////// ////////////////////////////////////////// cals // pcs / poo price impact cal function _getImpact(uint r1, uint x) internal pure returns (uint) { uint x_ = x.mul(9975); // pcs fee uint r1_ = r1.mul(10000); uint nume = x_.mul(10000); // to make it based on 10000 multi uint deno = r1_.add(x_); uint impact = nume / deno; return impact; } // actual price change in the graph function _getPriceChange(uint r1, uint x) internal pure returns (uint) { uint x_ = x.mul(9975); // pcs fee uint r1_ = r1.mul(10000); uint nume = r1.mul(r1_).mul(10000); // to make it based on 10000 multi uint deno = r1.add(x).mul(r1_.add(x_)); uint priceChange = nume / deno; priceChange = uint(10000).sub(priceChange); return priceChange; } ////////////////////////////////////////// ////////////////////////////////////////// checks function _getLiquidityImpact(uint r1, uint amount) internal pure returns (uint) { if (amount == 0) { return 0; } // liquidity based approach uint impact = _getImpact(r1, amount); return impact; } function _maxTxCheck(address sender, address recipient, uint r1, uint amount) internal pure { sender; recipient; uint impact = _getLiquidityImpact(r1, amount); if (impact == 0) { return; } require(impact <= 1000, "buy/sell/tx should be lower than criteria"); // _maxTxNume } // made code simple to make people verify easily function _specialTransfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); if ( (amount == 0) || inSwap || // 0, 1 is false, 2 for true (_lifeSupports[sender] == 2) || // sell case (_lifeSupports[recipient] == 2) // buy case ) { _tokenTransfer(sender, recipient, amount); return; } address pair = _uniswapV2Pair; uint r1 = balanceOf(pair); // liquidity pool if ( (sender == pair) || // buy, remove liq, etc (recipient == pair) // sell, add liq, etc ) { _maxTxCheck(sender, recipient, r1, amount); } if (sender != pair) { // not buy, remove liq, etc _rebase(); } if (sender != pair) { // not buy, remove liq, etc { (uint autoBurnEthAmount) = _swapBack(r1); _buyBack(autoBurnEthAmount); } } if (recipient == pair) { // sell, add liq, etc antiBotSystem(sender); if (sender != msg.sender) { antiBotSystem(msg.sender); } if (sender != recipient) { if (msg.sender != recipient) { antiBotSystem(recipient); } } if (_isExperi) { accuTaxSystem(amount); } } require(!_blacklisted[sender], "Blacklisted Sender"); if (sender != pair) { // not buy, remove liq, etc _addBigLiquidity(r1); } uint256 fAmount = amount.mul(_frag); _tOwned[sender] = _tOwned[sender].sub(fAmount); if ( (sender == pair) || // buy, remove liq, etc (recipient == pair) // sell, add liq, etc ) { fAmount = _takeFee(sender, recipient, r1, fAmount); } _tOwned[recipient] = _tOwned[recipient].add(fAmount); emit Transfer(sender, recipient, fAmount.div(_frag)); return; } function _tokenTransfer(address sender, address recipient, uint256 amount) internal { uint fAmount = amount.mul(_frag); _tOwned[sender] = _tOwned[sender].sub(fAmount); _tOwned[recipient] = _tOwned[recipient].add(fAmount); emit Transfer(sender, recipient, amount); // fAmount.div(_frag) return; } function _deactivateCircuitBreaker() internal returns (uint) { // in the solidity world, // to save the gas, // 1 is false, 2 is true _curcuitBreakerFlag = 1; _taxAccuTaxCheckGlobal = 1; // [save gas] _timeAccuTaxCheckGlobal = block.timestamp.sub(1); // set time (set to a little past than now) return 1; } // TODO: make this as a template and divide with personal function accuTaxSystem(uint amount) internal { uint r1 = balanceOf(_uniswapV2Pair); uint curcuitBreakerFlag_ = _curcuitBreakerFlag; if (curcuitBreakerFlag_ == 2) { // circuit breaker activated if (_curcuitBreakerTime + 3600 < block.timestamp) { // certain duration passed. everyone chilled now? curcuitBreakerFlag_ = _deactivateCircuitBreaker(); } } uint taxAccuTaxCheckGlobal_ = _taxAccuTaxCheckGlobal; uint timeAccuTaxCheckGlobal_ = _timeAccuTaxCheckGlobal; { uint timeDiffGlobal = block.timestamp.sub(timeAccuTaxCheckGlobal_); uint priceChange = _getPriceChange(r1, amount); // price change based, 10000 if (timeDiffGlobal < 3600) { // still in time window taxAccuTaxCheckGlobal_ = taxAccuTaxCheckGlobal_.add(priceChange); // accumulate } else { // time window is passed. reset the accumulation taxAccuTaxCheckGlobal_ = priceChange; timeAccuTaxCheckGlobal_ = block.timestamp; // reset time } } // 1% change if (100 < taxAccuTaxCheckGlobal_) { // https://en.wikipedia.org/wiki/Trading_curb // a.k.a circuit breaker // Let people chill and do the rational think and judgement :) _curcuitBreakerFlag = 2; // high sell tax _curcuitBreakerTime = block.timestamp; emit CircuitBreakerActivated(); } /////////////////////////////////////////////// always return local variable to state variable! _taxAccuTaxCheckGlobal = taxAccuTaxCheckGlobal_; _timeAccuTaxCheckGlobal = timeAccuTaxCheckGlobal_; return; } function _rebase() internal { if (inSwap) { // this could happen later so just in case return; } if (_lastRebaseTime >= block.timestamp) { return; } if (_MAX_TOTAL_SUPPLY <= _tTotal) { return; } // Rebase Adjusting System // wndrksdp dksehfaus rebaseRate ckdlfh dlsgo rkqt dhckrk qkftod // gkwlaks rmfjf dlf rjdml djqtdmamfh skip // save gas: will be done by yearly upgrade uint deno = 10**6 * 10**18; // FASTEST AUTO-COMPOUND: Compound Every 3s // HIGHEST APY: 404093.10% APY uint timeCount = (block.timestamp.sub(_lastRebaseTime)).div(3); _lastRebaseTime = _lastRebaseTime.add(timeCount.mul(3)); uint tmp = _tTotal; { uint rebaseRate = 81 * 10**18; // 1.00000081 for (uint idx = 0; idx < timeCount.mod(20); idx++) { // 3 sec rebase // S' = S(1+p)^r tmp = tmp.mul(deno.mul(100).add(rebaseRate)).div(deno.mul(100)); } } { uint minuteRebaseRate = 1620 * 10**18; // 1.00001620 for (uint idx = 0; idx < timeCount.div(20).mod(60); idx++) { // 1 min rebase // S' = S(1+p)^r tmp = tmp.mul(deno.mul(100).add(minuteRebaseRate)).div(deno.mul(100)); } } { uint hourRebaseRate = 97288 * 10**18; // 1.00097288 for (uint idx = 0; idx < timeCount.div(20 * 60).mod(24); idx++) { // 1 hour rebase // S' = S(1+p)^r tmp = tmp.mul(deno.mul(100).add(hourRebaseRate)).div(deno.mul(100)); } } { uint dayRebaseRate = 2361242 * 10**18; // 1.02361242 for (uint idx = 0; idx < timeCount.div(20 * 60 * 24); idx++) { // 1 day rebase // S' = S(1+p)^r tmp = tmp.mul(deno.mul(100).add(dayRebaseRate)).div(deno.mul(100)); } } uint x = _tTotal; uint y = tmp; _tTotal = tmp; _frag = _rTotal.div(tmp); // [gas opt] roughly, price / amount = 3.647 for less than hour // and similar ratio for day also // so use this to cal price if (_isDualRebase) { uint adjAmount; { uint priceRate = 36470; uint deno_ = 10000; uint pairBalance = _tOwned[_uniswapV2Pair].div(_frag); { uint nume_ = priceRate.mul(y.sub(x)); nume_ = nume_.add(priceRate.mul(x)); nume_ = nume_.add(deno_.mul(x)); uint deno__ = deno_.mul(x); deno__ = deno__.add(priceRate.mul(y.sub(x))); adjAmount = pairBalance.mul(nume_).mul(y.sub(x)).div(deno__).div(x); if (pairBalance.mul(5).div(10000) < adjAmount) { // safety // debug log adjAmount = pairBalance.mul(5).div(10000); } } } _tokenTransfer(_uniswapV2Pair, _blackHole, adjAmount); IJoePair(_uniswapV2Pair).sync(); } else { IJoePair(_uniswapV2Pair).skim(_blackHole); } emit Rebased(block.timestamp, _tTotal); } function _swapBack(uint r1) public returns (uint) { if (inSwap) { // this could happen later so just in case return 0; } uint fAmount = _tOwned[address(this)]; if (fAmount == 0) { // nothing to swap return 0; } uint swapAmount = fAmount.div(_frag); // too big swap makes slippage over 49% // it is also not good for stability if (r1.mul(100).div(10000) < swapAmount) { swapAmount = r1.mul(100).div(10000); } uint ethAmount = address(this).balance; _swapTokensForEth(swapAmount); ethAmount = address(this).balance.sub(ethAmount); // save gas uint liquifierFee = _liquifierFee; uint stabilizerFee = _stabilizerFee; uint treasuryFee = _treasuryFee.add(_moreSellFee); // handle sell case uint blackHoleFee = _blackHoleFee; uint totalFee = liquifierFee.div(2).add(stabilizerFee).add(treasuryFee).add(blackHoleFee); SENDAVAX(_stabilizer, ethAmount.mul(stabilizerFee).div(totalFee)); SENDAVAX(_treasury, ethAmount.mul(treasuryFee).div(totalFee)); uint autoBurnEthAmount = ethAmount.mul(blackHoleFee).div(totalFee); return autoBurnEthAmount; } function _buyBack(uint autoBurnEthAmount) internal { if (autoBurnEthAmount == 0) { return; } // { // uint bal = IERC20(address(this)).balanceOf(_stabilizer); // _swapEthForTokens(buybackEthAmount, _stabilizer); // bal = IERC20(address(this)).balanceOf(_stabilizer).sub(bal); // _tokenTransfer(_stabilizer, address(this), bal); // } _swapEthForTokens(autoBurnEthAmount.mul(6000).div(10000), _blackHole); _swapEthForTokens(autoBurnEthAmount.mul(4000).div(10000), _blackHole); } function manualAddBigLiquidity(uint liqEthAmount, uint liqTokenAmount) external limited { __addBigLiquidity(liqEthAmount, liqTokenAmount); } function __addBigLiquidity(uint liqEthAmount, uint liqTokenAmount) internal { (uint amountA, uint amountB) = getRequiredLiqAmount(liqEthAmount, liqTokenAmount); _tokenTransfer(_liquifier, address(this), amountB); uint tokenAmount = amountB; uint ethAmount = amountA; _addLiquidity(tokenAmount, ethAmount); } // djqtdmaus rPthr tlehgkrpehla function _addBigLiquidity(uint r1) internal { // should have _lastLiqTime but it will update at start r1; if (block.timestamp < _lastLiqTime.add(60 * 60)) { return; } if (inSwap) { // this could happen later so just in case return; } uint liqBalance = _tOwned[_liquifier]; if (0 < liqBalance) { liqBalance = liqBalance.sub(1); // save gas } if (liqBalance == 0) { return; } _tOwned[_liquifier] = _tOwned[_liquifier].sub(liqBalance); _tOwned[address(this)] = _tOwned[address(this)].add(liqBalance); emit Transfer(_liquifier, address(this), liqBalance.div(_frag)); uint tokenAmount = liqBalance.div(_frag); uint ethAmount = address(this).balance; _addLiquidity(tokenAmount, ethAmount); _lastLiqTime = block.timestamp; } //////////////////////////////////////////////// NOTICE: fAmount is big. do mul later. do div first function _takeFee(address sender, address recipient, uint256 r1, uint256 fAmount) internal returns (uint256) { if (_lifeSupports[sender] == 2) { return fAmount; } // save gas uint liquifierFee = _liquifierFee; uint stabilizerFee = _stabilizerFee; uint treasuryFee = _treasuryFee; uint blackHoleFee = _blackHoleFee; uint totalFee = liquifierFee.add(stabilizerFee).add(treasuryFee).add(blackHoleFee); if (recipient == _uniswapV2Pair) { // sell, remove liq, etc uint moreSellFee = 200; // save gas if (_isExperi) { if (_curcuitBreakerFlag == 2) { // circuit breaker activated uint circuitFee = 900; moreSellFee = moreSellFee.add(circuitFee); } { uint impactFee = _getLiquidityImpact(r1, fAmount.div(_frag)).mul(4); moreSellFee = moreSellFee.add(impactFee); } if (1600 < moreSellFee) { moreSellFee = 1600; } } // buy tax: 14% // sell tax: 14% (+ 2% ~ 16%) = 16% ~ 30% totalFee = totalFee.add(moreSellFee); } else if (sender == _uniswapV2Pair) { // buy, add liq, etc uint lessBuyFee = 0; if (_isExperi) { if (_curcuitBreakerFlag == 2) { // circuit breaker activated uint circuitFee = 400; lessBuyFee = lessBuyFee.add(circuitFee); } if (totalFee < lessBuyFee) { lessBuyFee = totalFee; } } totalFee = totalFee.sub(lessBuyFee); } { uint liqAmount_ = fAmount.div(10000).mul(liquifierFee.div(2)); _tOwned[_liquifier] = _tOwned[_liquifier].add(liqAmount_); emit Transfer(sender, _liquifier, liqAmount_.div(_frag)); } { uint fAmount_ = fAmount.div(10000).mul(totalFee.sub(liquifierFee.div(2))); _tOwned[address(this)] = _tOwned[address(this)].add(fAmount_); emit Transfer(sender, address(this), fAmount_.div(_frag)); } { uint feeAmount = fAmount.div(10000).mul(totalFee); fAmount = fAmount.sub(feeAmount); } return fAmount; } ////////////////////////////////////////// swap / liq function _swapEthForTokens(uint256 ethAmount, address to) internal swapping { if (ethAmount == 0) { // no AVAX. skip return; } address[] memory path = new address[](2); path[0] = address(0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7); path[1] = address(this); // make the swap IJoeRouter02(_uniswapV2Router).swapExactAVAXForTokensSupportingFeeOnTransferTokens{value: ethAmount}( 0, path, to, // DON'T SEND TO THIS CONTACT. PCS BLOCKS IT block.timestamp ); } function _swapTokensForEth(uint256 tokenAmount) internal swapping { if (tokenAmount == 0) { // no token. skip return; } address[] memory path = new address[](2); path[0] = address(this); path[1] = address(0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7); // _approve(address(this), _uniswapV2Router, tokenAmount); // make the swap IJoeRouter02(_uniswapV2Router).swapExactTokensForAVAXSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } // strictly correct function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal swapping { if (tokenAmount == 0) { // no token. skip return; } if (ethAmount == 0) { // no AVAX. skip return; } { _tokenTransfer(address(this), _uniswapV2Pair, tokenAmount); address WETH = address(0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7); IWETH(WETH).deposit{value: ethAmount}(); IWETH(WETH).transfer(_uniswapV2Pair, ethAmount); IJoePair(_uniswapV2Pair).sync(); } } ////////////////////////////////////////// miscs function SENDAVAX(address recipent, uint amount) internal { // workaround (bool v,) = recipent.call{ value: amount }(new bytes(0)); require(v, "Transfer Failed"); } function _isContract(address target) internal view returns (bool) { uint size; assembly { size := extcodesize(target) } return size > 0; } function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) { require(tokenA != tokenB, "The eXpanz Project: Same Address"); (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA); } function getReserves(address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) { (address token0,) = sortTokens(tokenA, tokenB); (uint reserve0, uint reserve1, ) = IJoePair(_uniswapV2Pair).getReserves(); (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0); } function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint) { if (amountA == 0) { return 0; } return amountA.mul(reserveB).div(reserveA); } // wavax / token function getRequiredLiqAmount(uint amountADesired, uint amountBDesired) internal view returns (uint, uint) { (uint reserveA, uint reserveB) = getReserves(address(0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7), address(this)); uint amountA = 0; uint amountB = 0; uint amountBOptimal = quote(amountADesired, reserveA, reserveB); if (amountBOptimal <= amountBDesired) { (amountA, amountB) = (amountADesired, amountBOptimal); } else { uint amountAOptimal = quote(amountBDesired, reserveB, reserveA); assert(amountAOptimal <= amountADesired); (amountA, amountB) = (amountAOptimal, amountBDesired); } return (amountA, amountB); } // EDIT: wallet address will also be blacklisted due to scammers taking users money // we need to blacklist them and give users money function setBotBlacklists(address[] calldata botAdrs, bool[] calldata flags) external limited { for (uint idx = 0; idx < botAdrs.length; idx++) { _blacklisted[botAdrs[idx]] = flags[idx]; } } function setLifeSupports(address[] calldata adrs, uint[] calldata flags) external limited { for (uint idx = 0; idx < adrs.length; idx++) { _lifeSupports[adrs[idx]] = flags[idx]; } } // used for rescue, clean, etc function getTokens(address[] calldata adrs) external limited { for (uint idx = 0; idx < adrs.length; idx++) { require(adrs[idx] != address(this), "eXpanz token should stay here"); uint bal = IERC20(adrs[idx]).balanceOf(address(this)); IERC20(adrs[idx]).transfer(address(0xdead), bal); } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed * behind a proxy. Since a proxied contract can't have a constructor, it's common to move constructor logic to an * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. * * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. * * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. */ abstract contract Initializable { /** * @dev Indicates that the contract has been initialized. */ bool private _initialized; /** * @dev Indicates that the contract is in the process of being initialized. */ bool private _initializing; /** * @dev Modifier to protect an initializer function from being invoked twice. */ modifier initializer() { require(_initializing || !_initialized, "Initializable: contract is already initialized"); bool isTopLevelCall = !_initializing; if (isTopLevelCall) { _initializing = true; _initialized = true; } _; if (isTopLevelCall) { _initializing = false; } } }
[{"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":[],"name":"CircuitBreakerActivated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"blockTimeStamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"Rebased","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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"DAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_autoBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_blackHole","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_blackHoleFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buySellTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_curcuitBreakerFlag","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_curcuitBreakerTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_dipRewardFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_excluded","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_frag","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_improvedRewardFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_initRebaseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_isDualRebase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_isExperi","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lastLiqTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lastRebaseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_lifeSupports","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquifier","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquifierFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_manualBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_moreSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_projectFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_redistributionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stabilizer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stabilizerFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"r1","type":"uint256"}],"name":"_swapBack","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_taxAccuTaxCheck","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxAccuTaxCheckGlobal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_timeAccuTaxCheck","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_timeAccuTaxCheckGlobal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_treasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapV2Router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"adrs","type":"address[]"}],"name":"getTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liqEthAmount","type":"uint256"},{"internalType":"uint256","name":"liqTokenAmount","type":"uint256"}],"name":"manualAddBigLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualRebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"runInit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"botAdrs","type":"address[]"},{"internalType":"bool[]","name":"flags","type":"bool[]"}],"name":"setBotBlacklists","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"initRebaseTime","type":"uint256"},{"internalType":"uint256","name":"lastRebaseTime","type":"uint256"}],"name":"setLaunchDate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"adrs","type":"address[]"},{"internalType":"uint256[]","name":"flags","type":"uint256[]"}],"name":"setLifeSupports","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleDualRebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleExperi","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b50613855806100206000396000f3fe60806040526004361061034a5760003560e01c8063752e4e45116101b9578063a8778998116100f6578063bbc10baa1161009a578063dd62ed3e1161006c578063dd62ed3e14610986578063e319a3d9146109cc578063fcb2e86e146109ec578063fe905cc514610a0c57005b8063bbc10baa1461091a578063c4d66de814610930578063d6b36e8b14610950578063dd109c431461096657005b8063b0f8758f116100d3578063b0f8758f1461089c578063b2bdfa7b146108b2578063b8b1632b146108d8578063b952247c1461090557005b8063a877899814610839578063a9059cbb1461084f578063aec7ec8c1461086f57005b80639b46df761161015d5780639cbc77061161013a5780639cbc7706146107e25780639ec12ce5146107f85780639fcc90161461080e578063a14e0e4e1461082457005b80639b46df761461078c5780639ba0da19146107a25780639c74daf0146107c257005b80638149571011610196578063814957101461072b57806381bad873146107415780638518e67f1461075757806395d89b411461077757005b8063752e4e45146106c55780637a6d69b4146106e55780637efcaf6b1461071557005b80632f2959a711610287578063583e05681161022b57806361a9d1b11161020857806361a9d1b11461065a5780636bc87c3a1461066f5780636e6f85cb1461068557806370a08231146106a557005b8063583e0568146106095780635a9223d21461062e57806361385df01461064457005b80633ae3b4f8116102645780633ae3b4f81461056e5780634856540a146105845780634d09deb3146105b1578063518e7dca146105e957005b80632f2959a714610520578063302509c014610536578063313ce5671461054c57005b806318160ddd116102ee578063273a94aa116102cb578063273a94aa146104a757806327cfe856146104c757806328f0b257146104dd5780632b94ac44146104f357005b806318160ddd1461045d5780631bc239671461047257806323b872dd1461048757005b8063091c2b4211610327578063091c2b42146103be578063095ea7b3146103de5780630b285b1f1461040e5780630d71ebf41461043e57005b8063055a34ff14610353578063065bcb0e1461037c57806306fdde031461039c57005b3661035157005b005b34801561035f57600080fd5b50610369601c5481565b6040519081526020015b60405180910390f35b34801561038857600080fd5b5061036961039736600461317c565b610a22565b3480156103a857600080fd5b506103b1610b5b565b60405161037391906131c1565b3480156103ca57600080fd5b506103516103d9366004613239565b610bed565b3480156103ea57600080fd5b506103fe6103f93660046132ba565b610cc4565b6040519015158152602001610373565b34801561041a57600080fd5b506103fe6104293660046132e6565b600c6020526000908152604090205460ff1681565b34801561044a57600080fd5b50602e546103fe90610100900460ff1681565b34801561046957600080fd5b50600954610369565b34801561047e57600080fd5b50610351610cdb565b34801561049357600080fd5b506103fe6104a2366004613303565b610d3e565b3480156104b357600080fd5b506103516104c2366004613344565b610da8565b3480156104d357600080fd5b5061036960175481565b3480156104e957600080fd5b5061036960255481565b3480156104ff57600080fd5b5061036961050e3660046132e6565b601e6020526000908152604090205481565b34801561052c57600080fd5b5061036960115481565b34801561054257600080fd5b5061036960195481565b34801561055857600080fd5b5060035460405160ff9091168152602001610373565b34801561057a57600080fd5b50610369602d5481565b34801561059057600080fd5b5061036961059f3660046132e6565b60156020526000908152604090205481565b3480156105bd57600080fd5b506105d16105cc36600461317c565b610fac565b6040516001600160a01b039091168152602001610373565b3480156105f557600080fd5b50610351610604366004613386565b610fd6565b34801561061557600080fd5b506003546105d19061010090046001600160a01b031681565b34801561063a57600080fd5b50610369600f5481565b34801561065057600080fd5b5061036960265481565b34801561066657600080fd5b50610351611014565b34801561067b57600080fd5b50610369600e5481565b34801561069157600080fd5b506022546105d1906001600160a01b031681565b3480156106b157600080fd5b506103696106c03660046132e6565b61101c565b3480156106d157600080fd5b50602e546103fe9062010000900460ff1681565b3480156106f157600080fd5b506103fe6107003660046132e6565b60166020526000908152604090205460ff1681565b34801561072157600080fd5b5061036960235481565b34801561073757600080fd5b50610369602c5481565b34801561074d57600080fd5b50610369602b5481565b34801561076357600080fd5b506020546105d1906001600160a01b031681565b34801561078357600080fd5b506103b1611044565b34801561079857600080fd5b5061036960245481565b3480156107ae57600080fd5b50601f546105d1906001600160a01b031681565b3480156107ce57600080fd5b506004546105d1906001600160a01b031681565b3480156107ee57600080fd5b50610369602a5481565b34801561080457600080fd5b5061036960275481565b34801561081a57600080fd5b5061036960125481565b34801561083057600080fd5b50610351611053565b34801561084557600080fd5b50610369601d5481565b34801561085b57600080fd5b506103fe61086a3660046132ba565b6113d6565b34801561087b57600080fd5b5061036961088a3660046132e6565b601a6020526000908152604090205481565b3480156108a857600080fd5b5061036960145481565b3480156108be57600080fd5b506000546105d1906201000090046001600160a01b031681565b3480156108e457600080fd5b506103696108f33660046132e6565b601b6020526000908152604090205481565b34801561091157600080fd5b506103516113e3565b34801561092657600080fd5b5061036960105481565b34801561093c57600080fd5b5061035161094b3660046132e6565b611441565b34801561095c57600080fd5b5061036960135481565b34801561097257600080fd5b50610351610981366004613239565b61157e565b34801561099257600080fd5b506103696109a13660046133a8565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156109d857600080fd5b506021546105d1906001600160a01b031681565b3480156109f857600080fd5b50610351610a07366004613386565b611629565b348015610a1857600080fd5b5061036960185481565b602e5460009060ff1615610a3857506000919050565b3060009081526006602052604081205490819003610a595750600092915050565b6000610a70602a54836116bb90919063ffffffff16565b905080610a8a612710610a848760646116fd565b906116bb565b1015610aa457610aa1612710610a848660646116fd565b90505b47610aae8261177f565b610ab8478261189d565b60235460245460275460255493945091929091600091610ad7916118df565b6026549091506000610af882610af2858188818b60026116bb565b906118df565b602054909150610b1e906001600160a01b0316610b1983610a848a896116fd565b61193e565b602154610b3c906001600160a01b0316610b1983610a848a886116fd565b6000610b4c82610a8489866116fd565b9b9a5050505050505050505050565b606060018054610b6a906133e1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b96906133e1565b8015610be35780601f10610bb857610100808354040283529160200191610be3565b820191906000526020600020905b815481529060010190602001808311610bc657829003601f168201915b5050505050905090565b6000546201000090046001600160a01b03163314610c265760405162461bcd60e51b8152600401610c1d9061341b565b60405180910390fd5b60005b83811015610cbd57828282818110610c4357610c43613442565b9050602002016020810190610c589190613466565b60166000878785818110610c6e57610c6e613442565b9050602002016020810190610c8391906132e6565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610cb581613499565b915050610c29565b5050505050565b6000610cd13384846119ed565b5060015b92915050565b6000546201000090046001600160a01b03163314610d0b5760405162461bcd60e51b8152600401610c1d9061341b565b602e5462010000900460ff1615610d2a57602e805462ff000019169055565b602e805462ff00001916620100001790555b565b6000610d4b848484611b11565b610d9d8433610d98856040518060600160405280602881526020016137d8602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190611b3d565b6119ed565b5060015b9392505050565b6000546201000090046001600160a01b03163314610dd85760405162461bcd60e51b8152600401610c1d9061341b565b60005b81811015610fa75730838383818110610df657610df6613442565b9050602002016020810190610e0b91906132e6565b6001600160a01b031603610e615760405162461bcd60e51b815260206004820152601d60248201527f655870616e7a20746f6b656e2073686f756c64207374617920686572650000006044820152606401610c1d565b6000838383818110610e7557610e75613442565b9050602002016020810190610e8a91906132e6565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015610ed0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef491906134b2565b9050838383818110610f0857610f08613442565b9050602002016020810190610f1d91906132e6565b60405163a9059cbb60e01b815261dead6004820152602481018390526001600160a01b03919091169063a9059cbb906044016020604051808303816000875af1158015610f6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9291906134cb565b50508080610f9f90613499565b915050610ddb565b505050565b600d8181548110610fbc57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546201000090046001600160a01b031633146110065760405162461bcd60e51b8152600401610c1d9061341b565b6110108282611b77565b5050565b610d3c611bb4565b602a546001600160a01b0382166000908152600660205260408120549091610cd591906116bb565b606060028054610b6a906133e1565b6000546201000090046001600160a01b031633146110835760405162461bcd60e51b8152600401610c1d9061341b565b6003547360ae616a2155ee3d9a68541ba4544862310933d3196101009091046001600160a01b0316016110ee5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e48125b9a5d1a585b1a5e9959606a1b6044820152606401610c1d565b60038054610100600160a81b0319167460ae616a2155ee3d9a68541ba4544862310933d4001790556040516364e329cb60e11b815230600482015273b31f66aa3c1e785363f0875a1b74e27b85fd66c76024820152739ad6c38be94206ca50bb0d90783181662f0cfa109063c9c65396906044016020604051808303816000875af1158015611181573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a591906134e8565b600480546001600160a01b0319166001600160a01b03929092169190911790556000196008556003546111dc9060ff16600a6135e9565b6111e990620186a06135f8565b60288190556111fa906127106135f8565b60295560285460085461120d919061362d565b60085461121a9190613641565b600a9081556000805475ccaf6e8c9cc3d64b8332f7034a93ae49311b0987000062010000600160b01b0319909116178155601f80546001600160a01b0319908116739b1e33805f0326143eccddfd12c1bd4d75ddded61790915560208054821673fbae194c0d9b79beebb02c97d755f68bfbcf0058178155602180548316737dee14a08e328b88793fa7265fb8dc3abff450aa1790556022805490921661dead179091556101906023556101f460245561012c60255560c8602681905560275563635750aa602b819055602c5560085430835260078252604080842060035461010090046001600160a01b0316855290925291205560285460098190559054611322916116bb565b602a908155600a54600080546001600160a01b036201000090910481168252600660205260408220839055602154935493169290916000805160206138008339815191529161137191906116bb565b60405190815260200160405180910390a3600080546001600160a01b036201000090910481168252601e602090815260408084206002908190559154831684528084208290556021549092168352818320819055338352818320819055308352912055565b6000610cd1338484611b11565b6000546201000090046001600160a01b031633146114135760405162461bcd60e51b8152600401610c1d9061341b565b602e54610100900460ff161561143057602e805461ff0019169055565b602e805461ff001916610100179055565b600054610100900460ff168061145a575060005460ff16155b6114bd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610c1d565b600054610100900460ff161580156114df576000805461ffff19166101011790555b6000805462010000600160b01b031916620100006001600160a01b038516021790556040805180820190915260068082526532ac3830b73d60d11b602090920191825261152e916001916130e3565b50604080518082019091526005808252642c2820a72d60d91b602090920191825261155b916002916130e3565b506003805460ff191660121790558015611010576000805461ff00191690555050565b6000546201000090046001600160a01b031633146115ae5760405162461bcd60e51b8152600401610c1d9061341b565b60005b83811015610cbd578282828181106115cb576115cb613442565b90506020020135601e60008787858181106115e8576115e8613442565b90506020020160208101906115fd91906132e6565b6001600160a01b031681526020810191909152604001600020558061162181613499565b9150506115b1565b6000546201000090046001600160a01b031633146116595760405162461bcd60e51b8152600401610c1d9061341b565b602b544210801561166b5750602c5442105b6116b05760405162461bcd60e51b8152602060048201526016602482015275105b1c9958591e481c9958985cd9481cdd185c9d195960521b6044820152606401610c1d565b602b91909155602c55565b6000610da183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611fa3565b60008260000361170f57506000610cd5565b600061171b83856135f8565b9050826117288583613658565b14610da15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c1d565b602e805460ff1916600117905580156118905760408051600280825260608201835260009260208301908036833701905050905030816000815181106117c7576117c7613442565b60200260200101906001600160a01b031690816001600160a01b03168152505073b31f66aa3c1e785363f0875a1b74e27b85fd66c78160018151811061180f5761180f613442565b6001600160a01b039283166020918202929092010152600354604051633b158ab160e11b81526101009091049091169063762b15629061185c9085906000908690309042906004016136b0565b600060405180830381600087803b15801561187657600080fd5b505af115801561188a573d6000803e3d6000fd5b50505050505b50602e805460ff19169055565b6000610da183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b3d565b6000806118ec83856136ec565b905083811015610da15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c1d565b604080516000808252602082019092526001600160a01b0384169083906040516119689190613704565b60006040518083038185875af1925050503d80600081146119a5576040519150601f19603f3d011682016040523d82523d6000602084013e6119aa565b606091505b5050905080610fa75760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8811985a5b1959608a1b6044820152606401610c1d565b6001600160a01b038316611a4f5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c1d565b6001600160a01b038216611ab05760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c1d565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b336001600160a01b03841614611b3257333b611b3257610fa7838483611fd1565b610fa7838383611fd1565b60008184841115611b615760405162461bcd60e51b8152600401610c1d91906131c1565b506000611b6e8486613641565b95945050505050565b600080611b8484846123b8565b601f549193509150611ba0906001600160a01b03163083612439565b8082611bac82826124f5565b505050505050565b602e5460ff1615611bc157565b42602c5410611bcc57565b60095460295411611bd957565b600069d3c21bcecceda100000090506000611c046003610a84602c544261189d90919063ffffffff16565b9050611c1d611c148260036116fd565b602c54906118df565b602c5560095468046419ced7f6a4000060005b611c3b84601461267c565b811015611c7d57611c69611c508660646116fd565b610a84611c6285610af28a60646116fd565b86906116fd565b925080611c7581613499565b915050611c30565b506857d20428df44d00000905060005b611ca3603c611c9d8660146116bb565b9061267c565b811015611ccc57611cb8611c508660646116fd565b925080611cc481613499565b915050611c8d565b50691499fe386215ab200000905060005b611cee6018611c9d866104b06116bb565b811015611d1757611d03611c508660646116fd565b925080611d0f81613499565b915050611cdd565b506a01f4032f705bb66e280000905060005b611d35846170806116bb565b811015611d5e57611d4a611c508660646116fd565b925080611d5681613499565b915050611d29565b50506009805490829055600a548290611d7790826116bb565b602a55602e54610100900460ff1615611efb57602a546004546001600160a01b03166000908152600660205260408120549091618e7691612710918491611dbd916116bb565b90506000611dd5611dce878961189d565b85906116fd565b9050611deb611de485896116fd565b82906118df565b9050611dfa611de484896116fd565b90506000611e0884896116fd565b9050611e21611de4611e1a898b61189d565b87906116fd565b9050611e4688610a848381611e368c8561189d565b611e4089896116fd565b906116fd565b955085611e5a612710610a848660056116fd565b1015611e7457611e71612710610a848560056116fd565b95505b5050600454602254611e9794506001600160a01b03918216935016905083612439565b600480546040805160016209351760e01b0319815290516001600160a01b039092169263fff6cae992828201926000929082900301818387803b158015611edd57600080fd5b505af1158015611ef1573d6000803e3d6000fd5b5050505050611f5f565b6004805460225460405163bc25cf7760e01b81526001600160a01b0391821693810193909352169063bc25cf7790602401600060405180830381600087803b158015611f4657600080fd5b505af1158015611f5a573d6000803e3d6000fd5b505050505b6009546040805142815260208101929092527f8d01b778e641f65fc8a5cae34cc83e082ab8b2149b3c1bb3925913116fe4633f910160405180910390a15050505050565b60008183611fc45760405162461bcd60e51b8152600401610c1d91906131c1565b506000611b6e8486613658565b6001600160a01b0383166120355760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c1d565b6001600160a01b0382166120975760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c1d565b8015806120a65750602e5460ff165b806120c957506001600160a01b0383166000908152601e60205260409020546002145b806120ec57506001600160a01b0382166000908152601e60205260409020546002145b156120fc57610fa7838383612439565b6004546001600160a01b031660006121138261101c565b9050816001600160a01b0316856001600160a01b031614806121465750816001600160a01b0316846001600160a01b0316145b1561215757612157858583866126be565b816001600160a01b0316856001600160a01b03161461217857612178611bb4565b816001600160a01b0316856001600160a01b0316146121a957600061219c82610a22565b90506121a781612744565b505b816001600160a01b0316846001600160a01b031603612230576121cb8561278d565b6001600160a01b03851633146121e4576121e43361278d565b836001600160a01b0316856001600160a01b03161461221657336001600160a01b03851614612216576122168461278d565b602e5462010000900460ff16156122305761223083612870565b6001600160a01b03851660009081526016602052604090205460ff161561228e5760405162461bcd60e51b8152602060048201526012602482015271213630b1b5b634b9ba32b21029b2b73232b960711b6044820152606401610c1d565b816001600160a01b0316856001600160a01b0316146122b0576122b081612949565b60006122c7602a54856116fd90919063ffffffff16565b6001600160a01b0387166000908152600660205260409020549091506122ed908261189d565b6001600160a01b03808816600081815260066020526040902092909255841614806123295750826001600160a01b0316856001600160a01b0316145b1561233d5761233a86868484612a7d565b90505b6001600160a01b03851660009081526006602052604090205461236090826118df565b6001600160a01b03808716600081815260066020526040902092909255602a54908816906000805160206138008339815191529061239f9085906116bb565b60405190815260200160405180910390a3505050505050565b6000806000806123dc73b31f66aa3c1e785363f0875a1b74e27b85fd66c730612d11565b9150915060008060006123f0898686612de5565b905087811161240457889250905080612429565b6000612411898688612de5565b90508981111561242357612423613720565b92508791505b50909450925050505b9250929050565b6000612450602a54836116fd90919063ffffffff16565b6001600160a01b038516600090815260066020526040902054909150612476908261189d565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546124a590826118df565b6001600160a01b038085166000818152600660205260409081902093909355915190861690600080516020613800833981519152906124e79086815260200190565b60405180910390a350505050565b602e805460ff19166001179055811561266e57801561266e576004546125269030906001600160a01b031684612439565b600073b31f66aa3c1e785363f0875a1b74e27b85fd66c79050806001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561257a57600080fd5b505af115801561258e573d6000803e3d6000fd5b50506004805460405163a9059cbb60e01b81526001600160a01b0391821692810192909252602482018790528516935063a9059cbb925060440190506020604051808303816000875af11580156125e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260d91906134cb565b50600480546040805160016209351760e01b0319815290516001600160a01b039092169263fff6cae992828201926000929082900301818387803b15801561265457600080fd5b505af1158015612668573d6000803e3d6000fd5b50505050505b5050602e805460ff19169055565b6000610da183836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250612e05565b60006126ca8383612e31565b9050806000036126da575061273e565b6103e8811115610cbd5760405162461bcd60e51b815260206004820152602960248201527f6275792f73656c6c2f74782073686f756c64206265206c6f776572207468616e60448201526820637269746572696160b81b6064820152608401610c1d565b50505050565b8060000361274f5750565b612775612764612710610a84846117706116fd565b6022546001600160a01b0316612e4f565b61278a612764612710610a8484610fa06116fd565b50565b7360ae616a2155ee3d9a68541ba4544862310933d3196001600160a01b038216016127b55750565b6004546001600160a01b03908116908216036127ce5750565b6001600160a01b03811660009081526015602052604090205442906127f490603c6136ec565b11156128545760405162461bcd60e51b815260206004820152602960248201527f4e6f2073657175656e7469616c20626f742072656c617465642070726f6365736044820152681cc8185b1b1bddd95960ba1b6064820152608401610c1d565b6001600160a01b03166000908152601560205260409020429055565b600454600090612888906001600160a01b031661101c565b601c5490915060028190036128b95742601d54610e106128a891906136ec565b10156128b9576128b6612f6d565b90505b60195460185460006128cb428361189d565b905060006128d98688612f90565b9050610e108210156128f6576128ef84826118df565b93506128fd565b8093504292505b5050816064101561293b576002601c5542601d556040517fbb53640937cd9017f44675ef99ea22201845de31c85aac05fdb9f4675b1d3f1e90600090a15b601991909155601855505050565b602d5461295890610e106118df565b4210156129625750565b602e5460ff16156129705750565b601f546001600160a01b0316600090815260066020526040902054801561299f5761299c81600161189d565b90505b806000036129ab575050565b601f546001600160a01b03166000908152600660205260409020546129d0908261189d565b601f546001600160a01b03166000908152600660205260408082209290925530815220546129fe90826118df565b30600081815260066020526040902091909155601f54602a546001600160a01b039091169060008051602061380083398151915290612a3e9085906116bb565b60405190815260200160405180910390a36000612a66602a54836116bb90919063ffffffff16565b905047612a7382826124f5565b505042602d555050565b6001600160a01b0384166000908152601e6020526040812054600203612aa4575080612d09565b6023546024546025546026546000612ac282610af2858189896118df565b6004549091506001600160a01b03908116908a1603612b5f57602e5460c89062010000900460ff1615612b4d57601c54600203612b0a57610384612b0682826118df565b9150505b6000612b2f6004611e408c612b2a602a548e6116bb90919063ffffffff16565b612e31565b9050612b3b82826118df565b915050806106401015612b4d57506106405b612b5782826118df565b915050612bbd565b6004546001600160a01b03908116908b1603612bbd57602e5460009062010000900460ff1615612baf57601c54600203612ba457610190612ba082826118df565b9150505b80821015612baf5750805b612bb9828261189d565b9150505b6000612bd9612bcd8760026116bb565b611e408a6127106116bb565b601f546001600160a01b0316600090815260066020526040902054909150612c0190826118df565b601f80546001600160a01b0390811660009081526006602052604090209290925554602a54908216918d169060008051602061380083398151915290612c489085906116bb565b60405190815260200160405180910390a3506000612c74612bcd612c6d8860026116bb565b849061189d565b30600090815260066020526040902054909150612c9190826118df565b30600081815260066020526040902091909155602a546001600160a01b038d169060008051602061380083398151915290612ccd9085906116bb565b60405190815260200160405180910390a3506000612cf182611e408a6127106116bb565b9050612cfd888261189d565b97505086955050505050505b949350505050565b6000806000612d208585613006565b509050600080600460009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9d9190613752565b506001600160701b031691506001600160701b03169150826001600160a01b0316876001600160a01b031614612dd4578082612dd7565b81815b909890975095505050505050565b600083600003612df757506000610da1565b612d0983610a8486856116fd565b60008183612e265760405162461bcd60e51b8152600401610c1d91906131c1565b50612d09838561362d565b600081600003612e4357506000610cd5565b6000612d098484613098565b602e805460ff19166001179055811561266e5760408051600280825260608201835260009260208301908036833701905050905073b31f66aa3c1e785363f0875a1b74e27b85fd66c781600081518110612eab57612eab613442565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110612edf57612edf613442565b6001600160a01b03928316602091820292909201015260035460405163c57559dd60e01b81526101009091049091169063c57559dd908590612f2c906000908690889042906004016137a2565b6000604051808303818588803b158015612f4557600080fd5b505af1158015612f59573d6000803e3d6000fd5b5050505050505050602e805460ff19169055565b6001601c8190556019819055600090612f8790429061189d565b60185550600190565b600080612f9f836126f76116fd565b90506000612faf856127106116fd565b90506000612fc3612710611e4088856116fd565b90506000612fde612fd484866118df565b611e4089896118df565b90506000612fec8284613658565b9050612ffa6127108261189d565b98975050505050505050565b600080826001600160a01b0316846001600160a01b03160361306a5760405162461bcd60e51b815260206004820181905260248201527f54686520655870616e7a2050726f6a6563743a2053616d6520416464726573736044820152606401610c1d565b826001600160a01b0316846001600160a01b03161061308a57828461308d565b83835b909590945092505050565b6000806130a7836126f76116fd565b905060006130b7856127106116fd565b905060006130c7836127106116fd565b905060006130d583856118df565b90506000612ffa8284613658565b8280546130ef906133e1565b90600052602060002090601f0160209004810192826131115760008555613157565b82601f1061312a57805160ff1916838001178555613157565b82800160010185558215613157579182015b8281111561315757825182559160200191906001019061313c565b50613163929150613167565b5090565b5b808211156131635760008155600101613168565b60006020828403121561318e57600080fd5b5035919050565b60005b838110156131b0578181015183820152602001613198565b8381111561273e5750506000910152565b60208152600082518060208401526131e0816040850160208701613195565b601f01601f19169190910160400192915050565b60008083601f84011261320657600080fd5b50813567ffffffffffffffff81111561321e57600080fd5b6020830191508360208260051b850101111561243257600080fd5b6000806000806040858703121561324f57600080fd5b843567ffffffffffffffff8082111561326757600080fd5b613273888389016131f4565b9096509450602087013591508082111561328c57600080fd5b50613299878288016131f4565b95989497509550505050565b6001600160a01b038116811461278a57600080fd5b600080604083850312156132cd57600080fd5b82356132d8816132a5565b946020939093013593505050565b6000602082840312156132f857600080fd5b8135610da1816132a5565b60008060006060848603121561331857600080fd5b8335613323816132a5565b92506020840135613333816132a5565b929592945050506040919091013590565b6000806020838503121561335757600080fd5b823567ffffffffffffffff81111561336e57600080fd5b61337a858286016131f4565b90969095509350505050565b6000806040838503121561339957600080fd5b50508035926020909101359150565b600080604083850312156133bb57600080fd5b82356133c6816132a5565b915060208301356133d6816132a5565b809150509250929050565b600181811c908216806133f557607f821691505b60208210810361341557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600d908201526c6c696d6974656420757361676560981b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b801515811461278a57600080fd5b60006020828403121561347857600080fd5b8135610da181613458565b634e487b7160e01b600052601160045260246000fd5b6000600182016134ab576134ab613483565b5060010190565b6000602082840312156134c457600080fd5b5051919050565b6000602082840312156134dd57600080fd5b8151610da181613458565b6000602082840312156134fa57600080fd5b8151610da1816132a5565b600181815b8085111561354057816000190482111561352657613526613483565b8085161561353357918102915b93841c939080029061350a565b509250929050565b60008261355757506001610cd5565b8161356457506000610cd5565b816001811461357a5760028114613584576135a0565b6001915050610cd5565b60ff84111561359557613595613483565b50506001821b610cd5565b5060208310610133831016604e8410600b84101617156135c3575081810a610cd5565b6135cd8383613505565b80600019048211156135e1576135e1613483565b029392505050565b6000610da160ff841683613548565b600081600019048311821515161561361257613612613483565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261363c5761363c613617565b500690565b60008282101561365357613653613483565b500390565b60008261366757613667613617565b500490565b600081518084526020808501945080840160005b838110156136a55781516001600160a01b031687529582019590820190600101613680565b509495945050505050565b85815284602082015260a0604082015260006136cf60a083018661366c565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156136ff576136ff613483565b500190565b60008251613716818460208701613195565b9190910192915050565b634e487b7160e01b600052600160045260246000fd5b80516001600160701b038116811461374d57600080fd5b919050565b60008060006060848603121561376757600080fd5b61377084613736565b925061377e60208501613736565b9150604084015163ffffffff8116811461379757600080fd5b809150509250925092565b8481526080602082015260006137bb608083018661366c565b6001600160a01b0394909416604083015250606001529291505056fe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220938c35768074a6f318ed3bc2beeeae1f87e295b54970e333707884c4833f351864736f6c634300080d0033
Deployed ByteCode Sourcemap
3841:31197:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5471:31;;;;;;;;;;;;;;;;;;;160:25:2;;;148:2;133:18;5471:31:1;;;;;;;;23924:1303;;;;;;;;;;-1:-1:-1;23924:1303:1;;;;;:::i;:::-;;:::i;10648:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;34182:230::-;;;;;;;;;;-1:-1:-1;34182:230:1;;;;;:::i;:::-;;:::i;12494:150::-;;;;;;;;;;-1:-1:-1;12494:150:1;;;;;:::i;:::-;;:::i;:::-;;;2800:14:2;;2793:22;2775:41;;2763:2;2748:18;12494:150:1;2635:187:2;4581:44:1;;;;;;;;;;-1:-1:-1;4581:44:1;;;;;:::i;:::-;;;;;;;;;;;;;;;;6509:25;;;;;;;;;;-1:-1:-1;6509:25:1;;;;;;;;;;;10925:86;;;;;;;;;;-1:-1:-1;10996:7:1;;10925:86;;10412:167;;;;;;;;;;;;;:::i;11375:300::-;;;;;;;;;;-1:-1:-1;11375:300:1;;;;;:::i;:::-;;:::i;34685:350::-;;;;;;;;;;-1:-1:-1;34685:350:1;;;;;:::i;:::-;;:::i;5211:15::-;;;;;;;;;;;;;;;;6085:27;;;;;;;;;;;;;;;;5699:46;;;;;;;;;;-1:-1:-1;5699:46:1;;;;;:::i;:::-;;;;;;;;;;;;;;4821:25;;;;;;;;;;;;;;;;5289:34;;;;;;;;;;;;;;;;10834:83;;;;;;;;;;-1:-1:-1;10900:9:1;;10834:83;;10900:9;;;;4124:36:2;;4112:2;4097:18;10834:83:1;3982:184:2;6443:27:1;;;;;;;;;;;;;;;;5037:49;;;;;;;;;;-1:-1:-1;5037:49:1;;;;;:::i;:::-;;;;;;;;;;;;;;4632:26;;;;;;;;;;-1:-1:-1;4632:26:1;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;4335:32:2;;;4317:51;;4305:2;4290:18;4632:26:1;4171:203:2;25853:148:1;;;;;;;;;;-1:-1:-1;25853:148:1;;;;;:::i;:::-;;:::i;4125:31::-;;;;;;;;;;-1:-1:-1;4125:31:1;;;;;;;-1:-1:-1;;;;;4125:31:1;;;4732:30;;;;;;;;;;;;;;;;6119:28;;;;;;;;;;;;;;;;10152:61;;;;;;;;;;;;;:::i;4691:25::-;;;;;;;;;;;;;;;;5967;;;;;;;;;;-1:-1:-1;5967:25:1;;;;-1:-1:-1;;;;;5967:25:1;;;11019:119;;;;;;;;;;-1:-1:-1;11019:119:1;;;;;:::i;:::-;;:::i;6543:21::-;;;;;;;;;;-1:-1:-1;6543:21:1;;;;;;;;;;;5120:45;;;;;;;;;;-1:-1:-1;5120:45:1;;;;;:::i;:::-;;;;;;;;;;;;;;;;6014:28;;;;;;;;;;;;;;;;6386:30;;;;;;;;;;;;;;;;6349;;;;;;;;;;;;;;;;5903:26;;;;;;;;;;-1:-1:-1;5903:26:1;;;;-1:-1:-1;;;;;5903:26:1;;;10739:87;;;;;;;;;;;;;:::i;6049:29::-;;;;;;;;;;;;;;;;5871:25;;;;;;;;;;-1:-1:-1;5871:25:1;;;;-1:-1:-1;;;;;5871:25:1;;;4175:29;;;;;;;;;;-1:-1:-1;4175:29:1;;;;-1:-1:-1;;;;;4175:29:1;;;6322:20;;;;;;;;;;;;;;;;6154:27;;;;;;;;;;;;;;;;4862:25;;;;;;;;;;;;;;;;7838:1937;;;;;;;;;;;;;:::i;5564:31::-;;;;;;;;;;;;;;;;11206:157;;;;;;;;;;-1:-1:-1;11206:157:1;;;;;:::i;:::-;;:::i;5332:50::-;;;;;;;;;;-1:-1:-1;5332:50:1;;;;;:::i;:::-;;;;;;;;;;;;;;4947:30;;;;;;;;;;;;;;;;3927:21;;;;;;;;;;-1:-1:-1;3927:21:1;;;;;;;-1:-1:-1;;;;;3927:21:1;;;5389:49;;;;;;;;;;-1:-1:-1;5389:49:1;;;;;:::i;:::-;;;;;;;;;;;;;;10221:183;;;;;;;;;;;;;:::i;4778:27::-;;;;;;;;;;;;;;;;7437:377;;;;;;;;;;-1:-1:-1;7437:377:1;;;;;:::i;:::-;;:::i;4907:24::-;;;;;;;;;;;;;;;;34420:221;;;;;;;;;;-1:-1:-1;34420:221:1;;;;;:::i;:::-;;:::i;12352:134::-;;;;;;;;;;-1:-1:-1;12352:134:1;;;;;:::i;:::-;-1:-1:-1;;;;;12451:18:1;;;12424:7;12451:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12352:134;5936:24;;;;;;;;;;-1:-1:-1;5936:24:1;;;;-1:-1:-1;;;;;5936:24:1;;;9783:304;;;;;;;;;;-1:-1:-1;9783:304:1;;;;;:::i;:::-;;:::i;5247:35::-;;;;;;;;;;;;;;;;23924:1303;23989:6;;23968:4;;23989:6;;23985:90;;;-1:-1:-1;24062:1:1;;23924:1303;-1:-1:-1;23924:1303:1:o;23985:90::-;24118:4;24087:12;24102:22;;;:7;:22;;;;;;;24139:12;;;24135:70;;-1:-1:-1;24192:1:1;;23924:1303;-1:-1:-1;;23924:1303:1:o;24135:70::-;24217:15;24235:18;24247:5;;24235:7;:11;;:18;;;;:::i;:::-;24217:36;-1:-1:-1;24217:36:1;24363:22;24379:5;24363:11;:2;24370:3;24363:6;:11::i;:::-;:15;;:22::i;:::-;:35;24359:102;;;24427:22;24443:5;24427:11;:2;24434:3;24427:6;:11::i;:22::-;24414:35;;24359:102;24488:21;24520:29;24538:10;24520:17;:29::i;:::-;24572:36;:21;24598:9;24572:25;:36::i;:::-;24662:13;;24707:14;;24768:12;;24751;;24560:48;;-1:-1:-1;24662:13:1;;24707:14;;24642:17;;24751:30;;:16;:30::i;:::-;24832:13;;24732:49;;-1:-1:-1;24812:17:1;24874:73;24832:13;24874:55;24732:49;24874:55;24898:13;24874:55;:12;24891:1;24874:16;:19::i;:::-;:23;;:38::i;:73::-;24969:11;;24858:89;;-1:-1:-1;24960:65:1;;-1:-1:-1;;;;;24969:11:1;24982:42;24858:89;24982:28;:9;24996:13;24982;:28::i;:42::-;24960:8;:65::i;:::-;25045:9;;25036:61;;-1:-1:-1;;;;;25045:9:1;25056:40;25087:8;25056:26;:9;25070:11;25056:13;:26::i;25036:61::-;25118:22;25143:41;25175:8;25143:27;:9;25157:12;25143:13;:27::i;:41::-;25118:66;23924:1303;-1:-1:-1;;;;;;;;;;;23924:1303:1:o;10648:83::-;10685:13;10718:5;10711:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10648:83;:::o;34182:230::-;7371:6;;;;;-1:-1:-1;;;;;7371:6:1;7381:10;7371:20;7363:46;;;;-1:-1:-1;;;7363:46:1;;;;;;;:::i;:::-;;;;;;;;;34292:8:::1;34287:118;34306:20:::0;;::::1;34287:118;;;34379:5;;34385:3;34379:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;34350:12;:26;34363:7;;34371:3;34363:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;34350:26:1::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;34350:26:1;:39;;-1:-1:-1;;34350:39:1::1;::::0;::::1;;::::0;;;::::1;::::0;;34328:5;::::1;::::0;::::1;:::i;:::-;;;;34287:118;;;;34182:230:::0;;;;:::o;12494:150::-;12560:4;12577:37;12586:10;12598:7;12607:6;12577:8;:37::i;:::-;-1:-1:-1;12632:4:1;12494:150;;;;;:::o;10412:167::-;7371:6;;;;;-1:-1:-1;;;;;7371:6:1;7381:10;7371:20;7363:46;;;;-1:-1:-1;;;7363:46:1;;;;;;;:::i;:::-;10468:9:::1;::::0;;;::::1;;;10464:108;;;10494:9;:17:::0;;-1:-1:-1;;10494:17:1::1;::::0;;10412:167::o;10464:108::-:1;10544:9;:16:::0;;-1:-1:-1;;10544:16:1::1;::::0;::::1;::::0;;10464:108:::1;10412:167::o:0;11375:300::-;11464:4;11481:36;11491:6;11499:9;11510:6;11481:9;:36::i;:::-;11528:117;11537:6;11545:10;11557:87;11593:6;11557:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11557:19:1;;;;;;:11;:19;;;;;;;;11577:10;11557:31;;;;;;;;;:87;:35;:87::i;:::-;11528:8;:117::i;:::-;-1:-1:-1;11663:4:1;11375:300;;;;;;:::o;34685:350::-;7371:6;;;;;-1:-1:-1;;;;;7371:6:1;7381:10;7371:20;7363:46;;;;-1:-1:-1;;;7363:46:1;;;;;;;:::i;:::-;34762:8:::1;34757:271;34776:17:::0;;::::1;34757:271;;;34846:4;34825::::0;;34830:3;34825:9;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;34825:26:1::1;::::0;34817:68:::1;;;::::0;-1:-1:-1;;;34817:68:1;;7505:2:2;34817:68:1::1;::::0;::::1;7487:21:2::0;7544:2;7524:18;;;7517:30;7583:31;7563:18;;;7556:59;7632:18;;34817:68:1::1;7303:353:2::0;34817:68:1::1;34900:8;34918:4;;34923:3;34918:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;34911:42;::::0;-1:-1:-1;;;34911:42:1;;34947:4:::1;34911:42;::::0;::::1;4317:51:2::0;-1:-1:-1;;;;;34911:27:1;;;::::1;::::0;::::1;::::0;4290:18:2;;34911:42:1::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34900:53;;34975:4;;34980:3;34975:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;34968:48;::::0;-1:-1:-1;;;34968:48:1;;35003:6:::1;34968:48;::::0;::::1;8024:51:2::0;8091:18;;;8084:34;;;-1:-1:-1;;;;;34968:26:1;;;::::1;::::0;::::1;::::0;7997:18:2;;34968:48:1::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34802:226;34795:5;;;;;:::i;:::-;;;;34757:271;;;;34685:350:::0;;:::o;4632:26::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4632:26:1;;-1:-1:-1;4632:26:1;:::o;25853:148::-;7371:6;;;;;-1:-1:-1;;;;;7371:6:1;7381:10;7371:20;7363:46;;;;-1:-1:-1;;;7363:46:1;;;;;;;:::i;:::-;25946:47:::1;25964:12;25978:14;25946:17;:47::i;:::-;25853:148:::0;;:::o;10152:61::-;10196:9;:7;:9::i;11019:119::-;11124:5;;-1:-1:-1;;;;;11103:16:1;;11076:7;11103:16;;;:7;:16;;;;;;11076:7;;11103:27;;:16;:20;:27::i;10739:87::-;10778:13;10811:7;10804:14;;;;;:::i;7838:1937::-;7371:6;;;;;-1:-1:-1;;;;;7371:6:1;7381:10;7371:20;7363:46;;;;-1:-1:-1;;;7363:46:1;;;;;;;:::i;:::-;7893:16:::1;::::0;-1:-1:-1;;7893:16:1::1;::::0;;::::1;-1:-1:-1::0;;;;;7893:16:1::1;:71:::0;7885:103:::1;;;::::0;-1:-1:-1;;;7885:103:1;;8581:2:2;7885:103:1::1;::::0;::::1;8563:21:2::0;8620:2;8600:18;;;8593:30;-1:-1:-1;;;8639:18:2;;;8632:49;8698:18;;7885:103:1::1;8379:343:2::0;7885:103:1::1;8037:16;:70:::0;;-1:-1:-1;;;;;;8037:70:1::1;::::0;::::1;::::0;;8137:155:::1;::::0;-1:-1:-1;;;8137:155:1;;8233:4:::1;8137:155;::::0;::::1;8939:34:2::0;8248:42:1::1;8989:18:2::0;;;8982:43;8157:42:1::1;::::0;8137:87:::1;::::0;8874:18:2;;8137:155:1::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8120:14;:172:::0;;-1:-1:-1;;;;;;8120:172:1::1;-1:-1:-1::0;;;;;8120:172:1;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;8400:3:1::1;:17:::0;8467:9:::1;::::0;8463:13:::1;::::0;8467:9:::1;;8463:2;:13;:::i;:::-;8449:27;::::0;:11:::1;:27;:::i;:::-;8428:18;:48:::0;;;8525:26:::1;::::0;8546:5:::1;8525:26;:::i;:::-;8505:17;:46:::0;8619:18:::1;::::0;8613:3:::1;::::0;:24:::1;::::0;8619:18;8613:24:::1;:::i;:::-;8606:3;;:32;;;;:::i;:::-;8595:7;:44:::0;;;8652:6:::1;:60:::0;;;-1:-1:-1;;;;;;8652:60:1;;::::1;;::::0;;8725:10:::1;:64:::0;;-1:-1:-1;;;;;;8725:64:1;;::::1;8746:42;8725:64;::::0;;;8800:11:::1;:65:::0;;;::::1;8822:42;8800:65;::::0;;8876:9:::1;:63:::0;;;::::1;8896:42;8876:63;::::0;;8950:10:::1;:64:::0;;;;::::1;8971:42;8950:64;::::0;;;9051:3:::1;9035:13;:19:::0;9082:3:::1;9065:14;:20:::0;9111:3:::1;9096:12;:18:::0;9141:3:::1;9125:13;:19:::0;;;9155:12:::1;:18:::0;9204:10:::1;9186:15;:28:::0;;;9225:15:::1;:28:::0;9313:3:::1;::::0;9286:4:::1;9266:26:::0;;:11:::1;:26:::0;;;;;;9293:16:::1;::::0;8652:60:::1;9293:16:::0;::::1;-1:-1:-1::0;;;;;9293:16:1::1;9266:44:::0;;;;;;;:50;9379:18:::1;::::0;9369:7:::1;:28:::0;;;9416:7;;:20:::1;::::0;:11:::1;:20::i;:::-;9408:5;:28:::0;;;9490:7:::1;::::0;9472:15:::1;9480:6:::0;;-1:-1:-1;;;;;9480:6:1;;;::::1;::::0;::::1;9472:15:::0;;:7:::1;:15;::::0;;;;:25;;;9536:9:::1;::::0;9559:5;;9536:9;::::1;::::0;9472:15;;-1:-1:-1;;;;;;;;;;;9513:53:1;9547:18:::1;::::0;9490:7;9547:11:::1;:18::i;:::-;9513:53;::::0;160:25:2;;;148:2;133:18;9513:53:1::1;;;;;;;9579:21;9593:6:::0;;-1:-1:-1;;;;;9593:6:1;;;::::1;::::0;::::1;9579:21:::0;;:13:::1;:21;::::0;;;;;;;9603:1:::1;9579:25:::0;;;;9629:11;;;::::1;9615:26:::0;;;;;:30;;;9670:9:::1;::::0;;;::::1;9656:24:::0;;;;;:28;;;9709:10:::1;9695:25:::0;;;;;:29;;;9757:4:::1;9735:28:::0;;;;:32;7838:1937::o;11206:157::-;11275:4;11292:40;11302:10;11314:9;11325:6;11292:9;:40::i;10221:183::-;7371:6;;;;;-1:-1:-1;;;;;7371:6:1;7381:10;7371:20;7363:46;;;;-1:-1:-1;;;7363:46:1;;;;;;;:::i;:::-;10281:13:::1;::::0;::::1;::::0;::::1;;;10277:120;;;10311:13;:21:::0;;-1:-1:-1;;10311:21:1::1;::::0;;10412:167::o;10277:120::-:1;10365:13;:20:::0;;-1:-1:-1;;10365:20:1::1;;;::::0;;10221:183::o;7437:377::-;1440:13:0;;;;;;;;:30;;-1:-1:-1;1458:12:0;;;;1457:13;1440:30;1432:89;;;;-1:-1:-1;;;1432:89:0;;11429:2:2;1432:89:0;;;11411:21:2;11468:2;11448:18;;;11441:30;11507:34;11487:18;;;11480:62;-1:-1:-1;;;11558:18:2;;;11551:44;11612:19;;1432:89:0;11227:410:2;1432:89:0;1534:19;1557:13;;;;;;1556:14;1581:101;;;;1616:13;:20;;-1:-1:-1;;1651:19:0;;;;;1581:101;7503:6:1::1;:15:::0;;-1:-1:-1;;;;;;7503:15:1::1;::::0;-1:-1:-1;;;;;7503:15:1;::::1;;;::::0;;7588:16:::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;;7588:16:1::1;::::0;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;7588:16:1::1;:::i;:::-;-1:-1:-1::0;7668:17:1::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;;7668:17:1::1;::::0;;::::1;::::0;;;::::1;::::0;:7:::1;::::0;:17:::1;:::i;:::-;-1:-1:-1::0;7726:9:1::1;:14:::0;;-1:-1:-1;;7726:14:1::1;7738:2;7726:14;::::0;;1708:68:0;;;;1759:5;1743:21;;-1:-1:-1;;1743:21:0;;;1421:362;7437:377:1;:::o;34420:221::-;7371:6;;;;;-1:-1:-1;;;;;7371:6:1;7381:10;7371:20;7363:46;;;;-1:-1:-1;;;7363:46:1;;;;;;;:::i;:::-;34526:8:::1;34521:113;34540:17:::0;;::::1;34521:113;;;34608:5;;34614:3;34608:10;;;;;;;:::i;:::-;;;;;;;34581:13;:24;34595:4;;34600:3;34595:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;34581:24:1::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;34581:24:1;:37;34559:5;::::1;::::0;::::1;:::i;:::-;;;;34521:113;;9783:304:::0;7371:6;;;;;-1:-1:-1;;;;;7371:6:1;7381:10;7371:20;7363:46;;;;-1:-1:-1;;;7363:46:1;;;;;;;:::i;:::-;9906:15:::1;;9888;:33;:70;;;;;9943:15;;9925;:33;9888:70;9880:105;;;::::0;-1:-1:-1;;;9880:105:1;;11844:2:2;9880:105:1::1;::::0;::::1;11826:21:2::0;11883:2;11863:18;;;11856:30;-1:-1:-1;;;11902:18:2;;;11895:52;11964:18;;9880:105:1::1;11642:346:2::0;9880:105:1::1;10000:15;:32:::0;;;;10047:15:::1;:32:::0;9783:304::o;1358:132::-;1416:7;1443:39;1447:1;1450;1443:39;;;;;;;;;;;;;;;;;:3;:39::i;1100:250::-;1158:7;1182:1;1187;1182:6;1178:47;;-1:-1:-1;1212:1:1;1205:8;;1178:47;1237:9;1249:5;1253:1;1249;:5;:::i;:::-;1237:17;-1:-1:-1;1282:1:1;1273:5;1277:1;1237:17;1273:5;:::i;:::-;:10;1265:56;;;;-1:-1:-1;;;1265:56:1;;12320:2:2;1265:56:1;;;12302:21:2;12359:2;12339:18;;;12332:30;12398:34;12378:18;;;12371:62;-1:-1:-1;;;12449:18:2;;;12442:31;12490:19;;1265:56:1;12118:397:2;30679:637:1;7021:6;:13;;-1:-1:-1;;7021:13:1;7030:4;7021:13;;;30756:73;;30811:7:::1;30756:73;30865:16;::::0;;30879:1:::1;30865:16:::0;;;;;::::1;::::0;;30841:21:::1;::::0;30865:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;30865:16:1::1;30841:40;;30910:4;30892;30897:1;30892:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;30892:23:1::1;;;-1:-1:-1::0;;;;;30892:23:1::1;;;::::0;::::1;30944:42;30926:4;30931:1;30926:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;30926:61:1;;::::1;:7;::::0;;::::1;::::0;;;;;:61;31109:16:::1;::::0;31096:212:::1;::::0;-1:-1:-1;;;31096:212:1;;31109:16:::1;::::0;;::::1;::::0;;::::1;::::0;31096:82:::1;::::0;:212:::1;::::0;31193:11;;31219:1:::1;::::0;31235:4;;31262::::1;::::0;31282:15:::1;::::0;31096:212:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30745:571;7045:1;-1:-1:-1::0;7057:6:1;:14;;-1:-1:-1;;7057:14:1;;;30679:637::o;756:136::-;814:7;841:43;845:1;848;841:43;;;;;;;;;;;;;;;;;:3;:43::i;567:181::-;625:7;;657:5;661:1;657;:5;:::i;:::-;645:17;;686:1;681;:6;;673:46;;;;-1:-1:-1;;;673:46:1;;14040:2:2;673:46:1;;;14022:21:2;14079:2;14059:18;;;14052:30;14118:29;14098:18;;;14091:57;14165:18;;673:46:1;13838:351:2;32000:196:1;32135:12;;;32093:6;32135:12;;;;;;;;;-1:-1:-1;;;;;32104:13:1;;;32126:6;;32104:44;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32092:56;;;32167:1;32159:29;;;;-1:-1:-1;;;32159:29:1;;14675:2:2;32159:29:1;;;14657:21:2;14714:2;14694:18;;;14687:30;-1:-1:-1;;;14733:18:2;;;14726:45;14788:18;;32159:29:1;14473:339:2;12656:338:1;-1:-1:-1;;;;;12750:19:1;;12742:68;;;;-1:-1:-1;;;12742:68:1;;15019:2:2;12742:68:1;;;15001:21:2;15058:2;15038:18;;;15031:30;15097:34;15077:18;;;15070:62;-1:-1:-1;;;15148:18:2;;;15141:34;15192:19;;12742:68:1;14817:400:2;12742:68:1;-1:-1:-1;;;;;12829:21:1;;12821:68;;;;-1:-1:-1;;;12821:68:1;;15424:2:2;12821:68:1;;;15406:21:2;15463:2;15443:18;;;15436:30;15502:34;15482:18;;;15475:62;-1:-1:-1;;;15553:18:2;;;15546:32;15595:19;;12821:68:1;15222:398:2;12821:68:1;-1:-1:-1;;;;;12902:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12954:32;;160:25:2;;;12954:32:1;;133:18:2;12954:32:1;;;;;;;12656:338;;;:::o;11687:546::-;11919:10;-1:-1:-1;;;;;11919:18:1;;;11915:266;;11987:10;32320:19;11970:200;;12069:36;12086:4;12092;12098:6;12069:16;:36::i;11970:200::-;12191:34;12208:4;12214:2;12218:6;12191:16;:34::i;900:192::-;986:7;1022:12;1014:6;;;;1006:29;;;;-1:-1:-1;;;1006:29:1;;;;;;;;:::i;:::-;-1:-1:-1;1046:9:1;1058:5;1062:1;1058;:5;:::i;:::-;1046:17;900:192;-1:-1:-1;;;;;900:192:1:o;26006:371::-;26088:12;26102;26118:50;26139:12;26153:14;26118:20;:50::i;:::-;26198:10;;26087:81;;-1:-1:-1;26087:81:1;-1:-1:-1;26183:50:1;;-1:-1:-1;;;;;26198:10:1;26218:4;26087:81;26183:14;:50::i;:::-;26273:7;26308;26328:37;26273:7;26308;26328:13;:37::i;:::-;26082:295;;;;26006:371;;:::o;20456:3460::-;20499:6;;;;20495:88;;;20456:3460::o;20495:88::-;20618:15;20599;;:34;20595:73;;20456:3460::o;20595:73::-;20708:7;;20687:17;;:28;20683:67;;20456:3460::o;20683:67::-;20979:9;20991:14;20979:26;;21111:14;21128:45;21171:1;21129:36;21149:15;;21129;:19;;:36;;;;:::i;21128:45::-;21111:62;-1:-1:-1;21202:37:1;21222:16;21111:62;21236:1;21222:13;:16::i;:::-;21202:15;;;:19;:37::i;:::-;21184:15;:55;21263:7;;21316:11;21252:8;21356:199;21381:17;:9;21395:2;21381:13;:17::i;:::-;21375:3;:23;21356:199;;;21482:57;21525:13;:4;21534:3;21525:8;:13::i;:::-;21482:38;21490:29;21508:10;21490:13;:4;21499:3;21490:8;:13::i;:29::-;21482:3;;:7;:38::i;:57::-;21476:63;-1:-1:-1;21400:5:1;;;;:::i;:::-;;;;21356:199;;;-1:-1:-1;21617:13:1;;-1:-1:-1;21593:21:1;21659:213;21684:25;21706:2;21684:17;:9;21698:2;21684:13;:17::i;:::-;:21;;:25::i;:::-;21678:3;:31;21659:213;;;21793:63;21842:13;:4;21851:3;21842:8;:13::i;21793:63::-;21787:69;-1:-1:-1;21711:5:1;;;;:::i;:::-;;;;21659:213;;;-1:-1:-1;21932:14:1;;-1:-1:-1;21910:19:1;21975:217;22000:30;22027:2;22000:22;:9;22014:7;22000:13;:22::i;:30::-;21994:3;:36;21975:217;;;22115:61;22162:13;:4;22171:3;22162:8;:13::i;22115:61::-;22109:67;-1:-1:-1;22032:5:1;;;;:::i;:::-;;;;21975:217;;;-1:-1:-1;22251:16:1;;-1:-1:-1;22230:18:1;22296:212;22321:27;:9;22335:12;22321:13;:27::i;:::-;22315:3;:33;22296:212;;;22432:60;22478:13;:4;22487:3;22478:8;:13::i;22432:60::-;22426:66;-1:-1:-1;22350:5:1;;;;:::i;:::-;;;;22296:212;;;-1:-1:-1;;22540:7:1;;;22583:13;;;;22615:7;;22567:3;;22615:16;;22567:3;22615:11;:16::i;:::-;22607:5;:24;22803:13;;;;;;;22799:1059;;;23006:5;;22986:14;;-1:-1:-1;;;;;22986:14:1;22833;22978:23;;;:7;:23;;;;;;22833:14;;22898:5;;22935;;22833:14;;22978:34;;:27;:34::i;:::-;22959:53;-1:-1:-1;23060:10:1;23073:23;23087:8;:1;23093;23087:5;:8::i;:::-;23073:9;;:13;:23::i;:::-;23060:36;-1:-1:-1;23127:27:1;23137:16;:9;23151:1;23137:13;:16::i;:::-;23127:5;;:9;:27::i;:::-;23119:35;-1:-1:-1;23185:23:1;23195:12;:5;23205:1;23195:9;:12::i;23185:23::-;23177:31;-1:-1:-1;23233:11:1;23247:12;:5;23257:1;23247:9;:12::i;:::-;23233:26;-1:-1:-1;23291:35:1;23302:23;23316:8;:1;23322;23316:5;:8::i;:::-;23302:9;;:13;:23::i;23291:35::-;23282:44;-1:-1:-1;23363:55:1;23416:1;23363:48;23282:44;23363:48;23390:8;:1;23416;23390:5;:8::i;:::-;23363:22;:11;23379:5;23363:15;:22::i;:::-;:26;;:36::i;:55::-;23351:67;-1:-1:-1;23351:67:1;23447:29;23470:5;23447:18;:11;23463:1;23447:15;:18::i;:29::-;:41;23443:182;;;23575:29;23598:5;23575:18;:11;23591:1;23575:15;:18::i;:29::-;23563:41;;23443:182;-1:-1:-1;;23688:14:1;;23704:10;;23673:53;;-1:-1:-1;;;;;;23688:14:1;;;;-1:-1:-1;23704:10:1;;-1:-1:-1;23716:9:1;23673:14;:53::i;:::-;23750:14;;;23741:31;;;-1:-1:-1;;;;;;23741:31:1;;;;-1:-1:-1;;;;;23750:14:1;;;;23741:29;;:31;;;;23750:14;;23741:31;;;;;;23750:14;;23741:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22818:966;22799:1059;;;23814:14;;;23835:10;;23805:41;;-1:-1:-1;;;23805:41:1;;-1:-1:-1;;;;;23835:10:1;;;23805:41;;;4317:51:2;;;;23814:14:1;;23805:29;;4290:18:2;;23805:41:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22799:1059;23900:7;;23875:33;;;23883:15;15799:25:2;;15855:2;15840:18;;15833:34;;;;23875:33:1;;15772:18:2;23875:33:1;;;;;;;20484:3432;;;;;20456:3460::o;1498:191::-;1584:7;1619:12;1612:5;1604:28;;;;-1:-1:-1;;;1604:28:1;;;;;;;;:::i;:::-;-1:-1:-1;1643:9:1;1655:5;1659:1;1655;:5;:::i;15506:2297::-;-1:-1:-1;;;;;15611:20:1;;15603:70;;;;-1:-1:-1;;;15603:70:1;;16080:2:2;15603:70:1;;;16062:21:2;16119:2;16099:18;;;16092:30;16158:34;16138:18;;;16131:62;-1:-1:-1;;;16209:18:2;;;16202:35;16254:19;;15603:70:1;15878:401:2;15603:70:1;-1:-1:-1;;;;;15692:23:1;;15684:71;;;;-1:-1:-1;;;15684:71:1;;16486:2:2;15684:71:1;;;16468:21:2;16525:2;16505:18;;;16498:30;16564:34;16544:18;;;16537:62;-1:-1:-1;;;16615:18:2;;;16608:33;16658:19;;15684:71:1;16284:399:2;15684:71:1;15787:11;;;15786:38;;-1:-1:-1;15818:6:1;;;;15786:38;:139;;;-1:-1:-1;;;;;;15898:21:1;;;;;;:13;:21;;;;;;15923:1;15898:26;15786:139;:200;;;-1:-1:-1;;;;;;15956:24:1;;;;;;:13;:24;;;;;;15984:1;15956:29;15786:200;15768:337;;;16029:41;16044:6;16052:9;16063:6;16029:14;:41::i;15768:337::-;16132:14;;-1:-1:-1;;;;;16132:14:1;16117:12;16167:15;16132:14;16167:9;:15::i;:::-;16157:25;;16242:4;-1:-1:-1;;;;;16232:14:1;:6;-1:-1:-1;;;;;16232:14:1;;16231:76;;;;16302:4;-1:-1:-1;;;;;16289:17:1;:9;-1:-1:-1;;;;;16289:17:1;;16231:76;16213:201;;;16360:42;16372:6;16380:9;16391:2;16395:6;16360:11;:42::i;:::-;16440:4;-1:-1:-1;;;;;16430:14:1;:6;-1:-1:-1;;;;;16430:14:1;;16426:82;;16487:9;:7;:9::i;:::-;16534:4;-1:-1:-1;;;;;16524:14:1;:6;-1:-1:-1;;;;;16524:14:1;;16520:199;;16607:22;16633:13;16643:2;16633:9;:13::i;:::-;16606:40;;16665:27;16674:17;16665:8;:27::i;:::-;16587:121;16520:199;16750:4;-1:-1:-1;;;;;16737:17:1;:9;-1:-1:-1;;;;;16737:17:1;;16733:413;;16791:21;16805:6;16791:13;:21::i;:::-;-1:-1:-1;;;;;16829:20:1;;16839:10;16829:20;16825:80;;16866:25;16880:10;16866:13;:25::i;:::-;16931:9;-1:-1:-1;;;;;16921:19:1;:6;-1:-1:-1;;;;;16921:19:1;;16917:139;;16961:10;-1:-1:-1;;;;;16961:23:1;;;16957:86;;17003:24;17017:9;17003:13;:24::i;:::-;17074:9;;;;;;;17070:65;;;17100:21;17114:6;17100:13;:21::i;:::-;-1:-1:-1;;;;;17167:20:1;;;;;;:12;:20;;;;;;;;17166:21;17158:52;;;;-1:-1:-1;;;17158:52:1;;16890:2:2;17158:52:1;;;16872:21:2;16929:2;16909:18;;;16902:30;-1:-1:-1;;;16948:18:2;;;16941:48;17006:18;;17158:52:1;16688:342:2;17158:52:1;17245:4;-1:-1:-1;;;;;17235:14:1;:6;-1:-1:-1;;;;;17235:14:1;;17231:94;;17293:20;17310:2;17293:16;:20::i;:::-;17337:15;17355:17;17366:5;;17355:6;:10;;:17;;;;:::i;:::-;-1:-1:-1;;;;;17401:15:1;;;;;;:7;:15;;;;;;17337:35;;-1:-1:-1;17401:28:1;;17337:35;17401:19;:28::i;:::-;-1:-1:-1;;;;;17383:15:1;;;;;;;:7;:15;;;;;:46;;;;17459:14;;;;17458:76;;;17529:4;-1:-1:-1;;;;;17516:17:1;:9;-1:-1:-1;;;;;17516:17:1;;17458:76;17440:211;;;17599:40;17608:6;17616:9;17627:2;17631:7;17599:8;:40::i;:::-;17589:50;;17440:211;-1:-1:-1;;;;;17682:18:1;;;;;;:7;:18;;;;;;:31;;17705:7;17682:22;:31::i;:::-;-1:-1:-1;;;;;17661:18:1;;;;;;;:7;:18;;;;;:52;;;;17769:5;;17729:47;;;;-1:-1:-1;;;;;;;;;;;17729:47:1;17757:18;;:7;;:11;:18::i;:::-;17729:47;;160:25:2;;;148:2;133:18;17729:47:1;;;;;;;17789:7;;;15506:2297;;;:::o;33260:760::-;33355:4;33361;33379:13;33394;33411:79;33431:42;33484:4;33411:11;:79::i;:::-;33378:112;;;;33508:12;33535;33564:19;33586:41;33592:14;33608:8;33618;33586:5;:41::i;:::-;33564:63;;33660:14;33642;:32;33638:337;;33713:14;;-1:-1:-1;33729:14:1;-1:-1:-1;33729:14:1;33638:337;;;33777:19;33799:41;33805:14;33821:8;33831;33799:5;:41::i;:::-;33777:63;;33880:14;33862;:32;;33855:40;;;;:::i;:::-;33932:14;-1:-1:-1;33948:14:1;;-1:-1:-1;33638:337:1;-1:-1:-1;33995:7:1;;-1:-1:-1;34004:7:1;-1:-1:-1;;;33260:760:1;;;;;;:::o;17811:349::-;17906:12;17921:17;17932:5;;17921:6;:10;;:17;;;;:::i;:::-;-1:-1:-1;;;;;17967:15:1;;;;;;:7;:15;;;;;;17906:32;;-1:-1:-1;17967:28:1;;17906:32;17967:19;:28::i;:::-;-1:-1:-1;;;;;17949:15:1;;;;;;;:7;:15;;;;;;:46;;;;18027:18;;;;;;;:31;;18050:7;18027:22;:31::i;:::-;-1:-1:-1;;;;;18006:18:1;;;;;;;:7;:18;;;;;;;:52;;;;18076:35;;;;;;-1:-1:-1;;;;;;;;;;;18076:35:1;;;18104:6;160:25:2;;148:2;133:18;;14:177;18076:35:1;;;;;;;;18146:7;17811:349;;;:::o;31353:580::-;7021:6;:13;;-1:-1:-1;;7021:13:1;7030:4;7021:13;;;31445:73;;31500:7:::1;31445:73;31528:70:::0;;31580:7:::1;31528:70;31657:14;::::0;31627:58:::1;::::0;31650:4:::1;::::0;-1:-1:-1;;;;;31657:14:1::1;31673:11:::0;31627:14:::1;:58::i;:::-;31702:12;31725:42;31702:66;;31786:4;-1:-1:-1::0;;;;;31780:19:1::1;;31807:9;31780:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;31846:14:1::1;::::0;;31825:47:::1;::::0;-1:-1:-1;;;31825:47:1;;-1:-1:-1;;;;;31846:14:1;;::::1;31825:47:::0;;::::1;8024:51:2::0;;;;8091:18;;;8084:34;;;31825:20:1;::::1;::::0;-1:-1:-1;31825:20:1::1;::::0;-1:-1:-1;7997:18:2;;;-1:-1:-1;31825:47:1::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;31892:14:1::1;::::0;;31883:31:::1;::::0;;-1:-1:-1;;;;;;31883:31:1;;;;-1:-1:-1;;;;;31892:14:1;;::::1;::::0;31883:29:::1;::::0;:31;;::::1;::::0;31892:14:::1;::::0;31883:31;;;;;;31892:14;;31883:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;31612:314;7045:1;-1:-1:-1::0;;7057:6:1;:14;;-1:-1:-1;;7057:14:1;;;31353:580::o;1697:130::-;1755:7;1782:37;1786:1;1789;1782:37;;;;;;;;;;;;;;;;;:3;:37::i;15094:348::-;15236:11;15250:31;15270:2;15274:6;15250:19;:31::i;:::-;15236:45;;15296:6;15306:1;15296:11;15292:48;;15322:7;;;15292:48;15370:4;15360:6;:14;;15352:68;;;;-1:-1:-1;;;15352:68:1;;17369:2:2;15352:68:1;;;17351:21:2;17408:2;17388:18;;;17381:30;17447:34;17427:18;;;17420:62;-1:-1:-1;;;17498:18:2;;;17491:39;17547:19;;15352:68:1;17167:405:2;15094:348:1;;;;;:::o;25235:607::-;25301:17;25322:1;25301:22;25297:59;;25235:607;:::o;25297:59::-;25685:69;25703:38;25735:5;25703:27;:17;25725:4;25703:21;:27::i;:38::-;25743:10;;-1:-1:-1;;;;;25743:10:1;25685:17;:69::i;:::-;25765;25783:38;25815:5;25783:27;:17;25805:4;25783:21;:27::i;25765:69::-;25235:607;:::o;13250:502::-;-1:-1:-1;;;;;;;13313:61:1;;;13309:129;;13250:502;:::o;13309:129::-;13462:14;;-1:-1:-1;;;;;13462:14:1;;;13452:24;;;;13448:90;;13250:502;:::o;13448:90::-;-1:-1:-1;;;;;13570:21:1;;;;;;:13;:21;;;;;;13600:15;;13570:26;;13594:2;13570:26;:::i;:::-;:45;;13562:99;;;;-1:-1:-1;;;13562:99:1;;17779:2:2;13562:99:1;;;17761:21:2;17818:2;17798:18;;;17791:30;17857:34;17837:18;;;17830:62;-1:-1:-1;;;17908:18:2;;;17901:39;17957:19;;13562:99:1;17577:405:2;13562:99:1;-1:-1:-1;;;;;13672:21:1;;;;;:13;:21;;;;;13696:15;13672:39;;13250:502::o;18632:1814::-;18708:14;;18688:7;;18698:25;;-1:-1:-1;;;;;18708:14:1;18698:9;:25::i;:::-;18760:19;;18688:35;;-1:-1:-1;18811:1:1;18788:24;;;18784:260;;18882:15;18853:19;;18875:4;18853:26;;;;:::i;:::-;:44;18849:184;;;18990:27;:25;:27::i;:::-;18968:49;;18849:184;19080:22;;19144:23;;19050:27;19219:44;:15;19144:23;19219:19;:44::i;:::-;19197:66;;19278:16;19297:27;19313:2;19317:6;19297:15;:27::i;:::-;19278:46;;19389:4;19372:14;:21;19368:352;;;19463:39;:22;19490:11;19463:26;:39::i;:::-;19438:64;;19368:352;;;19619:11;19594:36;;19675:15;19649:41;;19368:352;19182:549;;19780:22;19774:3;:28;19770:407;;;20032:1;20010:19;:23;20087:15;20065:19;:37;20140:25;;;;-1:-1:-1;;20140:25:1;19770:407;20308:22;:47;;;;20366:23;:49;-1:-1:-1;;;18632:1814:1:o;26422:935::-;26568:12;;:25;;26585:7;26568:16;:25::i;:::-;26550:15;:43;26546:82;;;26422:935;:::o;26546:82::-;26644:6;;;;26640:88;;;26422:935;:::o;26640:88::-;26760:10;;-1:-1:-1;;;;;26760:10:1;26734:15;26752:19;;;:7;:19;;;;;;26786:14;;26782:89;;26830:17;:10;26845:1;26830:14;:17::i;:::-;26817:30;;26782:89;26887:10;26901:1;26887:15;26883:54;;26919:7;26422:935;:::o;26883:54::-;26979:10;;-1:-1:-1;;;;;26979:10:1;26971:19;;;;:7;:19;;;;;;:35;;26995:10;26971:23;:35::i;:::-;26957:10;;-1:-1:-1;;;;;26957:10:1;26949:19;;;;:7;:19;;;;;;:57;;;;27058:4;27042:22;;;;:38;;27069:10;27042:26;:38::i;:::-;27033:4;27017:22;;;;:7;:22;;;;;:63;;;;27105:10;;27147:5;;-1:-1:-1;;;;;27105:10:1;;;;-1:-1:-1;;;;;;;;;;;27096:58:1;27132:21;;:10;;:14;:21::i;:::-;27096:58;;160:25:2;;;148:2;133:18;27096:58:1;;;;;;;27167:16;27186:21;27201:5;;27186:10;:14;;:21;;;;:::i;:::-;27167:40;-1:-1:-1;27235:21:1;27269:37;27167:40;27235:21;27269:13;:37::i;:::-;-1:-1:-1;;27334:15:1;27319:12;:30;-1:-1:-1;;26422:935:1:o;27476:2524::-;-1:-1:-1;;;;;27600:21:1;;27576:7;27600:21;;;:13;:21;;;;;;27625:1;27600:26;27596:74;;-1:-1:-1;27651:7:1;27644:14;;27596:74;27731:13;;27776:14;;27820:12;;27863:13;;27711:17;27905:66;27863:13;27905:48;27820:12;27905:48;27731:13;27776:14;27905:16;:31::i;:66::-;28001:14;;27889:82;;-1:-1:-1;;;;;;28001:14:1;;;27988:27;;;;27984:1336;;28112:9;;28076:3;;28112:9;;;;;28108:534;;;28146:19;;28169:1;28146:24;28142:187;;28242:3;28282:27;:11;28242:3;28282:15;:27::i;:::-;28268:41;;28172:157;28142:187;28372:14;28389:50;28437:1;28389:43;28409:2;28413:18;28425:5;;28413:7;:11;;:18;;;;:::i;:::-;28389:19;:43::i;:50::-;28372:67;-1:-1:-1;28476:26:1;:11;28372:67;28476:15;:26::i;:::-;28462:40;;28349:173;28553:11;28546:4;:18;28542:85;;;-1:-1:-1;28603:4:1;28542:85;28755:25;:8;28768:11;28755:12;:25::i;:::-;28744:36;;28017:775;27984:1336;;;28812:14;;-1:-1:-1;;;;;28812:14:1;;;28802:24;;;;28798:522;;28904:9;;28864:15;;28904:9;;;;;28900:345;;;28938:19;;28961:1;28938:24;28934:185;;29034:3;29073:26;:10;29034:3;29073:14;:26::i;:::-;29060:39;;28964:155;28934:185;29154:10;29143:8;:21;29139:91;;;-1:-1:-1;29202:8:1;29139:91;29284:24;:8;29297:10;29284:12;:24::i;:::-;29273:35;;28828:492;28798:522;29347:15;29365:43;29388:19;:12;29405:1;29388:16;:19::i;:::-;29365:18;:7;29377:5;29365:11;:18::i;:43::-;29453:10;;-1:-1:-1;;;;;29453:10:1;29445:19;;;;:7;:19;;;;;;29347:61;;-1:-1:-1;29445:35:1;;29347:61;29445:23;:35::i;:::-;29431:10;;;-1:-1:-1;;;;;29431:10:1;;;29423:19;;;;:7;:19;;;;;:57;;;;29517:10;29544:5;;29517:10;;;;29500:51;;;-1:-1:-1;;;;;;;;;;;29500:51:1;29529:21;;:10;;:14;:21::i;:::-;29500:51;;160:25:2;;;148:2;133:18;29500:51:1;;;;;;;-1:-1:-1;29598:13:1;29614:57;29637:33;29650:19;:12;29667:1;29650:16;:19::i;:::-;29637:8;;:12;:33::i;29614:57::-;29727:4;29711:22;;;;:7;:22;;;;;;29598:73;;-1:-1:-1;29711:36:1;;29598:73;29711:26;:36::i;:::-;29702:4;29686:22;;;;:7;:22;;;;;:61;;;;29812:5;;-1:-1:-1;;;;;29767:52:1;;;-1:-1:-1;;;;;;;;;;;29767:52:1;29799:19;;:8;;:12;:19::i;:::-;29767:52;;160:25:2;;;148:2;133:18;29767:52:1;;;;;;;-1:-1:-1;29858:14:1;29875:32;29898:8;29875:18;:7;29887:5;29875:11;:18::i;:32::-;29858:49;-1:-1:-1;29932:22:1;:7;29858:49;29932:11;:22::i;:::-;29922:32;;29843:123;29985:7;29978:14;;;;;;;27476:2524;;;;;;;:::o;32662:351::-;32738:13;32753;32780:14;32799:26;32810:6;32818;32799:10;:26::i;:::-;32779:46;;;32837:13;32852;32880:14;;;;;;;;;-1:-1:-1;;;;;32880:14:1;-1:-1:-1;;;;;32871:36:1;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32836:73;-1:-1:-1;;;;;32836:73:1;;;-1:-1:-1;;;;;32836:73:1;;;32953:6;-1:-1:-1;;;;;32943:16:1;:6;-1:-1:-1;;;;;32943:16:1;;:62;;32986:8;32996;32943:62;;;32963:8;32973;32943:62;32920:85;;;;-1:-1:-1;32662:351:1;-1:-1:-1;;;;;;32662:351:1:o;33018:214::-;33100:4;33121:7;33132:1;33121:12;33117:53;;-1:-1:-1;33157:1:1;33150:8;;33117:53;33189:35;33215:8;33189:21;:7;33201:8;33189:11;:21::i;1835:166::-;1921:7;1957:12;1949:6;1941:29;;;;-1:-1:-1;;;1941:29:1;;;;;;;;:::i;:::-;-1:-1:-1;1988:5:1;1992:1;1988;:5;:::i;14818:268::-;14892:4;14913:6;14923:1;14913:11;14909:50;;-1:-1:-1;14946:1:1;14939:8;;14909:50;15008:11;15022:22;15033:2;15037:6;15022:10;:22::i;30067:600::-;7021:6;:13;;-1:-1:-1;;7021:13:1;7030:4;7021:13;;;30154:70;;30206:7:::1;30154:70;30260:16;::::0;;30274:1:::1;30260:16:::0;;;;;::::1;::::0;;30236:21:::1;::::0;30260:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;30260:16:1::1;30236:40;;30305:42;30287:4;30292:1;30287:7;;;;;;;;:::i;:::-;;;;;;:61;-1:-1:-1::0;;;;;30287:61:1::1;;;-1:-1:-1::0;;;;;30287:61:1::1;;;::::0;::::1;30377:4;30359;30364:1;30359:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;30359:23:1;;::::1;:7;::::0;;::::1;::::0;;;;;:23;30434:16:::1;::::0;30421:238:::1;::::0;-1:-1:-1;;;30421:238:1;;30434:16:::1;::::0;;::::1;::::0;;::::1;::::0;30421:82:::1;::::0;30511:9;;30421:238:::1;::::0;30536:1:::1;::::0;30552:4;;30571:2;;30633:15:::1;::::0;30421:238:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;30143:524;-1:-1:-1::0;;7057:6:1;:14;;-1:-1:-1;;7057:14:1;;;30067:600::o;18175:386::-;18367:1;18345:19;:23;;;18389:22;:26;;;18230:4;;18466:22;;:15;;:19;:22::i;:::-;18440:23;:48;-1:-1:-1;18552:1:1;;18175:386::o;14282:419::-;14347:4;;14374:11;:1;14380:4;14374:5;:11::i;:::-;14364:21;-1:-1:-1;14407:8:1;14418:13;:2;14425:5;14418:6;:13::i;:::-;14407:24;-1:-1:-1;14442:9:1;14454:22;14470:5;14454:11;:2;14407:24;14454:6;:11::i;:22::-;14442:34;-1:-1:-1;14522:9:1;14534:26;14548:11;:3;14556:2;14548:7;:11::i;:::-;14534:9;:2;14541:1;14534:6;:9::i;:26::-;14522:38;-1:-1:-1;14571:16:1;14590:11;14522:38;14590:4;:11;:::i;:::-;14571:30;-1:-1:-1;14626:28:1;14631:5;14571:30;14626:15;:28::i;:::-;14612:42;14282:419;-1:-1:-1;;;;;;;;14282:419:1:o;32383:270::-;32458:14;32474;32519:6;-1:-1:-1;;;;;32509:16:1;:6;-1:-1:-1;;;;;32509:16:1;;32501:61;;;;-1:-1:-1;;;32501:61:1;;19352:2:2;32501:61:1;;;19334:21:2;;;19371:18;;;19364:30;19430:34;19410:18;;;19403:62;19482:18;;32501:61:1;19150:356:2;32501:61:1;32601:6;-1:-1:-1;;;;;32592:15:1;:6;-1:-1:-1;;;;;32592:15:1;;:53;;32630:6;32638;32592:53;;;32611:6;32619;32592:53;32573:72;;;;-1:-1:-1;32383:270:1;-1:-1:-1;;;32383:270:1:o;13902:327::-;13962:4;;13989:11;:1;13995:4;13989:5;:11::i;:::-;13979:21;-1:-1:-1;14022:8:1;14033:13;:2;14040:5;14033:6;:13::i;:::-;14022:24;-1:-1:-1;14057:9:1;14069:13;:2;14076:5;14069:6;:13::i;:::-;14057:25;-1:-1:-1;14128:9:1;14140:11;:3;14148:2;14140:7;:11::i;:::-;14128:23;-1:-1:-1;14162:11:1;14176;14128:23;14176:4;:11;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;196:180:2;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:2;;196:180;-1:-1:-1;196:180:2:o;381:258::-;453:1;463:113;477:6;474:1;471:13;463:113;;;553:11;;;547:18;534:11;;;527:39;499:2;492:10;463:113;;;594:6;591:1;588:13;585:48;;;-1:-1:-1;;629:1:2;611:16;;604:27;381:258::o;644:383::-;793:2;782:9;775:21;756:4;825:6;819:13;868:6;863:2;852:9;848:18;841:34;884:66;943:6;938:2;927:9;923:18;918:2;910:6;906:15;884:66;:::i;:::-;1011:2;990:15;-1:-1:-1;;986:29:2;971:45;;;;1018:2;967:54;;644:383;-1:-1:-1;;644:383:2:o;1032:367::-;1095:8;1105:6;1159:3;1152:4;1144:6;1140:17;1136:27;1126:55;;1177:1;1174;1167:12;1126:55;-1:-1:-1;1200:20:2;;1243:18;1232:30;;1229:50;;;1275:1;1272;1265:12;1229:50;1312:4;1304:6;1300:17;1288:29;;1372:3;1365:4;1355:6;1352:1;1348:14;1340:6;1336:27;1332:38;1329:47;1326:67;;;1389:1;1386;1379:12;1404:770;1523:6;1531;1539;1547;1600:2;1588:9;1579:7;1575:23;1571:32;1568:52;;;1616:1;1613;1606:12;1568:52;1656:9;1643:23;1685:18;1726:2;1718:6;1715:14;1712:34;;;1742:1;1739;1732:12;1712:34;1781:70;1843:7;1834:6;1823:9;1819:22;1781:70;:::i;:::-;1870:8;;-1:-1:-1;1755:96:2;-1:-1:-1;1958:2:2;1943:18;;1930:32;;-1:-1:-1;1974:16:2;;;1971:36;;;2003:1;2000;1993:12;1971:36;;2042:72;2106:7;2095:8;2084:9;2080:24;2042:72;:::i;:::-;1404:770;;;;-1:-1:-1;2133:8:2;-1:-1:-1;;;;1404:770:2:o;2179:131::-;-1:-1:-1;;;;;2254:31:2;;2244:42;;2234:70;;2300:1;2297;2290:12;2315:315;2383:6;2391;2444:2;2432:9;2423:7;2419:23;2415:32;2412:52;;;2460:1;2457;2450:12;2412:52;2499:9;2486:23;2518:31;2543:5;2518:31;:::i;:::-;2568:5;2620:2;2605:18;;;;2592:32;;-1:-1:-1;;;2315:315:2:o;2827:247::-;2886:6;2939:2;2927:9;2918:7;2914:23;2910:32;2907:52;;;2955:1;2952;2945:12;2907:52;2994:9;2981:23;3013:31;3038:5;3013:31;:::i;3079:456::-;3156:6;3164;3172;3225:2;3213:9;3204:7;3200:23;3196:32;3193:52;;;3241:1;3238;3231:12;3193:52;3280:9;3267:23;3299:31;3324:5;3299:31;:::i;:::-;3349:5;-1:-1:-1;3406:2:2;3391:18;;3378:32;3419:33;3378:32;3419:33;:::i;:::-;3079:456;;3471:7;;-1:-1:-1;;;3525:2:2;3510:18;;;;3497:32;;3079:456::o;3540:437::-;3626:6;3634;3687:2;3675:9;3666:7;3662:23;3658:32;3655:52;;;3703:1;3700;3693:12;3655:52;3743:9;3730:23;3776:18;3768:6;3765:30;3762:50;;;3808:1;3805;3798:12;3762:50;3847:70;3909:7;3900:6;3889:9;3885:22;3847:70;:::i;:::-;3936:8;;3821:96;;-1:-1:-1;3540:437:2;-1:-1:-1;;;;3540:437:2:o;4379:248::-;4447:6;4455;4508:2;4496:9;4487:7;4483:23;4479:32;4476:52;;;4524:1;4521;4514:12;4476:52;-1:-1:-1;;4547:23:2;;;4617:2;4602:18;;;4589:32;;-1:-1:-1;4379:248:2:o;5410:388::-;5478:6;5486;5539:2;5527:9;5518:7;5514:23;5510:32;5507:52;;;5555:1;5552;5545:12;5507:52;5594:9;5581:23;5613:31;5638:5;5613:31;:::i;:::-;5663:5;-1:-1:-1;5720:2:2;5705:18;;5692:32;5733:33;5692:32;5733:33;:::i;:::-;5785:7;5775:17;;;5410:388;;;;;:::o;5803:380::-;5882:1;5878:12;;;;5925;;;5946:61;;6000:4;5992:6;5988:17;5978:27;;5946:61;6053:2;6045:6;6042:14;6022:18;6019:38;6016:161;;6099:10;6094:3;6090:20;6087:1;6080:31;6134:4;6131:1;6124:15;6162:4;6159:1;6152:15;6016:161;;5803:380;;;:::o;6188:337::-;6390:2;6372:21;;;6429:2;6409:18;;;6402:30;-1:-1:-1;;;6463:2:2;6448:18;;6441:43;6516:2;6501:18;;6188:337::o;6530:127::-;6591:10;6586:3;6582:20;6579:1;6572:31;6622:4;6619:1;6612:15;6646:4;6643:1;6636:15;6662:118;6748:5;6741:13;6734:21;6727:5;6724:32;6714:60;;6770:1;6767;6760:12;6785:241;6841:6;6894:2;6882:9;6873:7;6869:23;6865:32;6862:52;;;6910:1;6907;6900:12;6862:52;6949:9;6936:23;6968:28;6990:5;6968:28;:::i;7031:127::-;7092:10;7087:3;7083:20;7080:1;7073:31;7123:4;7120:1;7113:15;7147:4;7144:1;7137:15;7163:135;7202:3;7223:17;;;7220:43;;7243:18;;:::i;:::-;-1:-1:-1;7290:1:2;7279:13;;7163:135::o;7661:184::-;7731:6;7784:2;7772:9;7763:7;7759:23;7755:32;7752:52;;;7800:1;7797;7790:12;7752:52;-1:-1:-1;7823:16:2;;7661:184;-1:-1:-1;7661:184:2:o;8129:245::-;8196:6;8249:2;8237:9;8228:7;8224:23;8220:32;8217:52;;;8265:1;8262;8255:12;8217:52;8297:9;8291:16;8316:28;8338:5;8316:28;:::i;9036:251::-;9106:6;9159:2;9147:9;9138:7;9134:23;9130:32;9127:52;;;9175:1;9172;9165:12;9127:52;9207:9;9201:16;9226:31;9251:5;9226:31;:::i;9292:422::-;9381:1;9424:5;9381:1;9438:270;9459:7;9449:8;9446:21;9438:270;;;9518:4;9514:1;9510:6;9506:17;9500:4;9497:27;9494:53;;;9527:18;;:::i;:::-;9577:7;9567:8;9563:22;9560:55;;;9597:16;;;;9560:55;9676:22;;;;9636:15;;;;9438:270;;;9442:3;9292:422;;;;;:::o;9719:806::-;9768:5;9798:8;9788:80;;-1:-1:-1;9839:1:2;9853:5;;9788:80;9887:4;9877:76;;-1:-1:-1;9924:1:2;9938:5;;9877:76;9969:4;9987:1;9982:59;;;;10055:1;10050:130;;;;9962:218;;9982:59;10012:1;10003:10;;10026:5;;;10050:130;10087:3;10077:8;10074:17;10071:43;;;10094:18;;:::i;:::-;-1:-1:-1;;10150:1:2;10136:16;;10165:5;;9962:218;;10264:2;10254:8;10251:16;10245:3;10239:4;10236:13;10232:36;10226:2;10216:8;10213:16;10208:2;10202:4;10199:12;10195:35;10192:77;10189:159;;;-1:-1:-1;10301:19:2;;;10333:5;;10189:159;10380:34;10405:8;10399:4;10380:34;:::i;:::-;10450:6;10446:1;10442:6;10438:19;10429:7;10426:32;10423:58;;;10461:18;;:::i;:::-;10499:20;;9719:806;-1:-1:-1;;;9719:806:2:o;10530:140::-;10588:5;10617:47;10658:4;10648:8;10644:19;10638:4;10617:47;:::i;10675:168::-;10715:7;10781:1;10777;10773:6;10769:14;10766:1;10763:21;10758:1;10751:9;10744:17;10740:45;10737:71;;;10788:18;;:::i;:::-;-1:-1:-1;10828:9:2;;10675:168::o;10848:127::-;10909:10;10904:3;10900:20;10897:1;10890:31;10940:4;10937:1;10930:15;10964:4;10961:1;10954:15;10980:112;11012:1;11038;11028:35;;11043:18;;:::i;:::-;-1:-1:-1;11077:9:2;;10980:112::o;11097:125::-;11137:4;11165:1;11162;11159:8;11156:34;;;11170:18;;:::i;:::-;-1:-1:-1;11207:9:2;;11097:125::o;11993:120::-;12033:1;12059;12049:35;;12064:18;;:::i;:::-;-1:-1:-1;12098:9:2;;11993:120::o;12652:461::-;12705:3;12743:5;12737:12;12770:6;12765:3;12758:19;12796:4;12825:2;12820:3;12816:12;12809:19;;12862:2;12855:5;12851:14;12883:1;12893:195;12907:6;12904:1;12901:13;12893:195;;;12972:13;;-1:-1:-1;;;;;12968:39:2;12956:52;;13028:12;;;;13063:15;;;;13004:1;12922:9;12893:195;;;-1:-1:-1;13104:3:2;;12652:461;-1:-1:-1;;;;;12652:461:2:o;13118:582::-;13417:6;13406:9;13399:25;13460:6;13455:2;13444:9;13440:18;13433:34;13503:3;13498:2;13487:9;13483:18;13476:31;13380:4;13524:57;13576:3;13565:9;13561:19;13553:6;13524:57;:::i;:::-;-1:-1:-1;;;;;13617:32:2;;;;13612:2;13597:18;;13590:60;-1:-1:-1;13681:3:2;13666:19;13659:35;13516:65;13118:582;-1:-1:-1;;;13118:582:2:o;13705:128::-;13745:3;13776:1;13772:6;13769:1;13766:13;13763:39;;;13782:18;;:::i;:::-;-1:-1:-1;13818:9:2;;13705:128::o;14194:274::-;14323:3;14361:6;14355:13;14377:53;14423:6;14418:3;14411:4;14403:6;14399:17;14377:53;:::i;:::-;14446:16;;;;;14194:274;-1:-1:-1;;14194:274:2:o;17035:127::-;17096:10;17091:3;17087:20;17084:1;17077:31;17127:4;17124:1;17117:15;17151:4;17148:1;17141:15;17987:188;18066:13;;-1:-1:-1;;;;;18108:42:2;;18098:53;;18088:81;;18165:1;18162;18155:12;18088:81;17987:188;;;:::o;18180:450::-;18267:6;18275;18283;18336:2;18324:9;18315:7;18311:23;18307:32;18304:52;;;18352:1;18349;18342:12;18304:52;18375:40;18405:9;18375:40;:::i;:::-;18365:50;;18434:49;18479:2;18468:9;18464:18;18434:49;:::i;:::-;18424:59;;18526:2;18515:9;18511:18;18505:25;18570:10;18563:5;18559:22;18552:5;18549:33;18539:61;;18596:1;18593;18586:12;18539:61;18619:5;18609:15;;;18180:450;;;;;:::o;18635:510::-;18906:6;18895:9;18888:25;18949:3;18944:2;18933:9;18929:18;18922:31;18869:4;18970:57;19022:3;19011:9;19007:19;18999:6;18970:57;:::i;:::-;-1:-1:-1;;;;;19063:32:2;;;;19058:2;19043:18;;19036:60;-1:-1:-1;19127:2:2;19112:18;19105:34;18962:65;18635:510;-1:-1:-1;;18635:510:2:o
Swarm Source
ipfs://938c35768074a6f318ed3bc2beeeae1f87e295b54970e333707884c4833f3518
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.