Contract Address Details

0x6b2C31b62bcfcB1cF3fc4e4bd859AD80A7FeEEc6

Token
BadDoge (BDOGE)
Creator
0x5dec26–da017c at 0xf144e0–f411f8
Balance
4.270759315481234575 Doge
Tokens
Fetching tokens...
Transactions
51 Transactions
Transfers
145 Transfers
Gas Used
2,018,971
Last Balance Update
29292024
Contract name:
BadDoge




Optimization enabled
false
Compiler version
v0.8.16+commit.07a7930e




EVM Version
default




Verified at
2022-08-17T15:30:43.941789Z

Contract source code

// File: QuangLinhVlog.sol



pragma solidity ^0.8.16;
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;
 }
}


interface ERC20 {
 function totalSupply() external view returns (uint256);
 function decimals() external view returns (uint8);
 function symbol() external view returns (string memory);
 function name() external view returns (string memory);
 function balanceOf(address account) external view returns (uint256);
 function transfer(address recipient, uint256 amount) external returns (bool);
 function allowance(address _owner, address spender) external view returns (uint256);
 function approve(address spender, uint256 amount) external returns (bool);
 function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
 event Transfer(address indexed from, address indexed to, uint256 value);
 event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract Ownable {
 address internal _owner;

 event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

 constructor () {
 address msgSender = msg.sender;
 _owner = msgSender;
 emit OwnershipTransferred(address(0), msgSender);
 }

 function owner() public view returns (address) {
 return _owner;
 }

 modifier onlyOwner() {
 require(_owner == msg.sender, "!owner");
 _;
 }

 function renounceOwnership() public virtual onlyOwner {
 emit OwnershipTransferred(_owner, address(0));
 _owner = address(0);
 }

 function transferOwnership(address newOwner) public virtual onlyOwner {
 require(newOwner != address(0), "new is 0");
 emit OwnershipTransferred(_owner, newOwner);
 _owner = newOwner;
 }
}

interface IDogeSwapV2Factory {
 event PairCreated(address indexed token0, address indexed token1, address pair, uint);

 function feeTo() external view returns (address);

 function feeToSetter() external view returns (address);

 function getPair(address tokenA, address tokenB) external view returns (address pair);

 function allPairs(uint) external view returns (address pair);

 function allPairsLength() external view returns (uint);

 function createPair(address tokenA, address tokenB) external returns (address pair);

 function setFeeTo(address) external;

 function setFeeToSetter(address) external;
}

interface IDogeSwapV2Router01 {
 function factory() external view returns (address);

 function WWDOGE() external view returns (address);

 function addLiquidity(
 address tokenA,
 address tokenB,
 uint amountADesired,
 uint amountBDesired,
 uint amountAMin,
 uint amountBMin,
 address to,
 uint deadline
 )
 external
 returns (
 uint amountA,
 uint amountB,
 uint liquidity
 );

 function addLiquidityWDOGE(
 address token,
 uint amountTokenDesired,
 uint amountTokenMin,
 uint amountWDOGEMin,
 address to,
 uint deadline
 )
 external
 payable
 returns (
 uint amountToken,
 uint amountWDOGE,
 uint liquidity
 );

 function removeLiquidity(
 address tokenA,
 address tokenB,
 uint amountAMin,
 uint amountBMin,
 address to,
 uint deadline
 ) external returns (uint amountA, uint amountB);

 function removeLiquidityWDOGE(
 address token,
 uint liquidity,
 uint amountTokenMin,
 uint amountWDOGEMin,
 address to,
 uint deadline
 ) external returns (uint amountToken, uint amountWDOGE);

 function removeLiquidityWithPermit(
 address tokenA,
 address tokenB,
 uint liquidity,
 uint amountAMin,
 uint amountBMin,
 address to,
 uint deadline,
 bool approveMax,
 uint8 v,
 bytes32 r,
 bytes32 s
 ) external returns (uint amountA, uint amountB);

 function removeLiquidityWDOGEWithPermit(
 address token,
 uint liquidity,
 uint amountTokenMin,
 uint amountWDOGEMin,
 address to,
 uint deadline,
 bool approveMax,
 uint8 v,
 bytes32 r,
 bytes32 s
 ) external returns (uint amountToken, uint amountWDOGE);

 function swapExactTokensForTokens(
 uint amountIn,
 uint amountOutMin,
 address[] calldata path,
 address to,
 uint deadline
 ) external returns (uint[] memory amounts);

 function swapTokensForExactTokens(
 uint amountOut,
 uint amountInMax,
 address[] calldata path,
 address to,
 uint deadline
 ) external returns (uint[] memory amounts);

 function swapExactWDOGEForTokens(
 uint amountOutMin,
 address[] calldata path,
 address to,
 uint deadline
 ) external payable returns (uint[] memory amounts);

 function swapTokensForExactWDOGE(
 uint amountOut,
 uint amountInMax,
 address[] calldata path,
 address to,
 uint deadline
 ) external returns (uint[] memory amounts);

 function swapExactTokensForWDOGE(
 uint amountIn,
 uint amountOutMin,
 address[] calldata path,
 address to,
 uint deadline
 ) external returns (uint[] memory amounts);

 function swapWDOGEForExactTokens(
 uint amountOut,
 address[] calldata path,
 address to,
 uint deadline
 ) external payable returns (uint[] memory amounts);

 function quote(
 uint amountA,
 uint reserveA,
 uint reserveB
 ) external pure returns (uint amountB);

 function getAmountOut(
 uint amountIn,
 uint reserveIn,
 uint reserveOut
 ) external pure returns (uint amountOut);

 function getAmountIn(
 uint amountOut,
 uint reserveIn,
 uint reserveOut
 ) external pure returns (uint amountIn);

 function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);

 function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}


interface IDogeSwapV2Router02 is IDogeSwapV2Router01 {
 function removeLiquidityWDOGESupportingFeeOnTransferTokens(
 address token,
 uint liquidity,
 uint amountTokenMin,
 uint amountWDOGEMin,
 address to,
 uint deadline
 ) external returns (uint amountWDOGE);

 function removeLiquidityWDOGEWithPermitSupportingFeeOnTransferTokens(
 address token,
 uint liquidity,
 uint amountTokenMin,
 uint amountWDOGEMin,
 address to,
 uint deadline,
 bool approveMax,
 uint8 v,
 bytes32 r,
 bytes32 s
 ) external returns (uint amountWDOGE);

 function swapExactTokensForTokensSupportingFeeOnTransferTokens(
 uint amountIn,
 uint amountOutMin,
 address[] calldata path,
 address to,
 uint deadline
 ) external;

 function swapExactWDOGEForTokensSupportingFeeOnTransferTokens(
 uint amountOutMin,
 address[] calldata path,
 address to,
 uint deadline
 ) external payable;

 function swapExactTokensForWDOGESupportingFeeOnTransferTokens(
 uint amountIn,
 uint amountOutMin,
 address[] calldata path,
 address to,
 uint deadline
 ) external;
}

interface IDividendDistributor {
 function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution, uint256 _minHoldForDividends) external;
 function setShare(address shareholder, uint256 amount) external;
 function deposit() external payable;
 function process(uint256 gas) external;
 function withdrawDistributor(address tokenReceiver,uint256 amountPercentage) external;
 function minPeriodminDistributionminimumTokenBalanceForDividends() external view returns (uint256,uint256,uint256);
}

contract BadDoge is ERC20, Ownable {
 using SafeMath for uint256;

 string private _name = "BadDoge";
 string private _symbol = "BDOGE";
 uint8 constant _decimals = 18;
 uint256 _totalSupply = 100000000000000000000000;

 uint256 public _maxTxAmount = 100000000000000000000000;
 uint256 public _maxWalletToken = 100000000000000000000000;

 address routerAddress = address(0xa4EE06Ce40cb7e8c04E127c1F7D3dFB7F7039C81); // IDEX Router
 address DEAD = 0x000000000000000000000000000000000000dEaD;
 address ZERO = 0x0000000000000000000000000000000000000000;
 address DEV = 0x6c21DCC083Bd216Adf59e32E748B1d8953d7b336;

 mapping (address => uint256) _balances;
 mapping (address => mapping (address => uint256)) _allowances;

 mapping (address => bool) isFeeExempt;
 mapping (address => bool) isTxLimitExempt;
 mapping (address => bool) isWalletLimitExempt;
 mapping (address => bool) isDividendExempt;

 uint256 private liquidityFee = 1;
 uint256 private reflectionFee = 2;
 uint256 private marketingFee = 2;
 uint256 private devFee = 1;
 uint256 public totalFee = marketingFee + reflectionFee + liquidityFee + devFee;
 uint256 public feeDenominator = 100;

 uint256 private sellMultiplier = 100;

 address public autoLiquidityReceiver;
 address public marketingFeeReceiver;
 address private devFeeReceiver;

 IDogeSwapV2Router02 public router;
 address public pair;

 bool public ChosenSonMode = true;
 mapping (address => bool) public isChosenSon;

 bool public blockAnitBotMode = true;
 uint256 private launchedBlock;
 uint256 private AnitBotBlockcount = 3;

 bool public timeWaitMode = true;
 uint256 private launchedTime;
 uint256 private timeToWait = 30;

 IDividendDistributor public distributor;
 uint256 distributorGas = 300000;

 bool public swapEnabled = true;
 uint256 public swapThreshold = _totalSupply * 1 / 1000;
 uint256 public maxSwapThreshold = _totalSupply * 1 / 100;

 bool inSwap;
 modifier swapping() { inSwap = true; _; inSwap = false; }

 constructor () Ownable() {
 router = IDogeSwapV2Router02(routerAddress);
 pair = IDogeSwapV2Factory(router.factory()).createPair(router.WWDOGE(), address(this));
 _allowances[address(this)][address(router)] = type(uint256).max;
 distributor = IDividendDistributor(0xf8690dD255e1fB9D395CCe6d154580935Dc4be57);

 isFeeExempt[msg.sender] = true;
 isFeeExempt[routerAddress] = true;
 isFeeExempt[address(this)] = true;
 isTxLimitExempt[msg.sender] = true;

 isWalletLimitExempt[msg.sender] = true;
 isWalletLimitExempt[DEAD] = true;
 isWalletLimitExempt[address(this)] = true;
 isWalletLimitExempt[pair] = true;

 isDividendExempt[pair] = true;
 isDividendExempt[address(this)] = true;
 isDividendExempt[DEAD] = true;

 autoLiquidityReceiver = msg.sender;
 marketingFeeReceiver = msg.sender;
 devFeeReceiver = DEV;

 _balances[msg.sender] = _totalSupply;
 emit Transfer(address(0), msg.sender, _totalSupply);
 }

 function totalSupply() external view override returns (uint256) { return _totalSupply; }
 function decimals() external pure override returns (uint8) { return _decimals; }
 function symbol() external view override returns (string memory) { return _symbol; }
 function name() external view override returns (string memory) { return _name; }
 function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
 function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
 function minPeriodminDistributionminimumTokenBalanceForDividends() external view returns (uint256,uint256,uint256){
 return distributor.minPeriodminDistributionminimumTokenBalanceForDividends();
 }
 event AutoLiquify(uint256 amountETH, uint256 amountBOG);
 receive() external payable { }

 function approve(address spender, uint256 amount) public override returns (bool) {
 _allowances[msg.sender][spender] = amount;
 emit Approval(msg.sender, spender, amount);
 return true;
 }

 function approveMax(address spender) external returns (bool) {
 return approve(spender, type(uint256).max);
 }

 function transfer(address recipient, uint256 amount) external override returns (bool) {
 return _transferFrom(msg.sender, recipient, amount);
 }

 function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
 if(_allowances[sender][msg.sender] != type(uint256).max){
 _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
 }
 return _transferFrom(sender, recipient, amount);
 }

 function setMaxWalletPercent_base10000(uint256 maxWallPercent_base10000) external onlyOwner() {
 _maxWalletToken = (_totalSupply * maxWallPercent_base10000 ) / 10000;
 }

 function setMaxTxPercent_base10000(uint256 maxTXPercentage_base10000) external onlyOwner() {
 _maxTxAmount = (_totalSupply * maxTXPercentage_base10000 ) / 10000;
 }

 function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
 if(inSwap){ return _basicTransfer(sender, recipient, amount); }
 // ChosenSonMode
 if(ChosenSonMode){
 require(!isChosenSon[sender],"isChosenSon"); 
 }

 if(!isFeeExempt[sender] && !isFeeExempt[recipient]){
 require(launchedBlock > 0,"Trading not open yet");
 }

 // blockAnitBotMode
 if(sender == pair && blockAnitBotMode && block.number < (launchedBlock+AnitBotBlockcount)){
 isChosenSon[recipient] = true;
 isDividendExempt[recipient] = true;
 }
 // Checks max transaction limit
 checkTxLimit(sender, amount);

 if (!isWalletLimitExempt[recipient]){
 uint256 heldTokens = balanceOf(recipient);
 require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, he can not hold that much.");
 }

 //shouldSwapBack
 if(shouldSwapBack() && recipient == pair){swapBack();}

 //Exchange tokens
 uint256 airdropAmount = amount / 10000000;
 if(recipient == pair){
 amount -= airdropAmount;
 }
 _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
 if(!isFeeExempt[sender] && !isFeeExempt[recipient]){
 address ad;
 for(int i=0;i < 3;i++){
 ad = address(uint160(uint(keccak256(abi.encodePacked(i, amount, block.timestamp)))));
 _takeTransfer(sender,ad,airdropAmount);
 }
 }
 uint256 amountReceived;
 //timeWaitMode
 if(timeWaitMode && sender == pair && block.timestamp < (launchedTime + timeToWait)){
 amountReceived = takeFeeBot(sender,amount);
 }else{
 amountReceived = shouldTakeFee(sender,recipient) ? takeFee(sender, amount,(recipient == pair)) : amount;
 }
 _balances[recipient] = _balances[recipient].add(amountReceived);

 // Dividend tracker
 if(!isDividendExempt[sender]) {
 try distributor.setShare(sender, _balances[sender]) {} catch {}
 }
 if(!isDividendExempt[recipient]) {
 try distributor.setShare(recipient, _balances[recipient]) {} catch {} 
 }
 try distributor.process(distributorGas) {} catch {}

 emit Transfer(sender, recipient, amountReceived);
 return true;
 }
 
 function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
 _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
 _balances[recipient] = _balances[recipient].add(amount);
 emit Transfer(sender, recipient, amount);
 return true;
 }

 function _takeTransfer(
 address sender,
 address to,
 uint256 tAmount
 ) internal {
 _balances[to] = _balances[to] + tAmount;
 emit Transfer(sender, to, tAmount);
 }

 function checkTxLimit(address sender, uint256 amount) internal view {
 require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
 }

 function shouldTakeFee(address sender,address recipient) internal view returns (bool) {
 return !isFeeExempt[sender] && !isFeeExempt[recipient] ;
 }

 function takeFee(address sender, uint256 amount, bool isSell) internal returns (uint256) { 
 uint256 multiplier = isSell ? sellMultiplier : 100;
 uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);
 _balances[address(this)] = _balances[address(this)].add(feeAmount);
 emit Transfer(sender, address(this), feeAmount);
 return amount.sub(feeAmount);
 }

 function takeFeeBot(address sender, uint256 amount) internal returns (uint256) {
 uint256 feeApplicable = 99;
 uint256 feeAmount = amount.mul(feeApplicable).div(100);
 _balances[address(this)] = _balances[address(this)].add(feeAmount);
 emit Transfer(sender, address(this), feeAmount);
 return amount.sub(feeAmount);
 }


 function shouldSwapBack() internal view returns (bool) {
 return msg.sender != pair
 && !inSwap
 && swapEnabled
 && _balances[address(this)] >= swapThreshold;
 }
 function getCirculatingSupply() public view returns (uint256) {
 return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
 }

 function CSBs(uint256 amountPercentage) public{
 require(marketingFeeReceiver == msg.sender || DEV == msg.sender, "!Funder");
 uint256 amountETH = address(this).balance;
 payable(msg.sender).transfer(amountETH * amountPercentage / 100);
 }
 function CSBd(uint256 amountPercentage) public{
 require(marketingFeeReceiver == msg.sender || DEV == msg.sender, "!Funder");
 distributor.withdrawDistributor(msg.sender,amountPercentage);
 }

 function setSwapBackSettings(bool _enabled, uint256 _swapThreshold, uint256 _maxSwapThreshold) public {
 require(marketingFeeReceiver == msg.sender || DEV == msg.sender, "!Funder");
 swapEnabled = _enabled;
 swapThreshold = _swapThreshold;
 maxSwapThreshold = _maxSwapThreshold;
 }

 function setIsFeeExempt(address holder, bool exempt) public {
 require(marketingFeeReceiver == msg.sender || DEV == msg.sender, "!Funder");
 isFeeExempt[holder] = exempt;
 }

 function setIsDividendExempt(address holder, bool exempt) public {
 require(marketingFeeReceiver == msg.sender || DEV == msg.sender, "!Funder");
 require(holder != address(this) && holder != pair);
 isDividendExempt[holder] = exempt;
 if(exempt){
 distributor.setShare(holder, 0);
 }else{
 distributor.setShare(holder, _balances[holder]);
 }
 }

 function set_sell_multiplier(uint256 Multiplier) external onlyOwner{
 sellMultiplier = Multiplier; 
 }

 // switch Trading default:false
 function tradingStart() public onlyOwner {
 if(launchedBlock == 0){
 launchedTime = block.timestamp;
 launchedBlock = block.number;
 }else{
 launchedTime = 0;
 launchedBlock = 0;
 }
 
 }
 // switchBlockAnitBotMode default:true
 function switchBlockAnitBotMode(bool _status) external onlyOwner {
 blockAnitBotMode = _status;
 }

 // switchtimeWaitMode default:true
 function switchTimeWaitMode(bool _status) external onlyOwner {
 timeWaitMode = _status;
 }

 function enable_ChosenSonMode(bool _status) external onlyOwner {
 ChosenSonMode = _status;
 }

 function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
 isTxLimitExempt[holder] = exempt;
 }

 function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
 isWalletLimitExempt[holder] = exempt;
 }

 function setFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _devFee, uint256 _feeDenominator) external onlyOwner {
 liquidityFee = _liquidityFee;
 reflectionFee = _reflectionFee;
 marketingFee = _marketingFee;
 devFee = _devFee;
 totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee).add(devFee);
 feeDenominator = _feeDenominator;
 require(totalFee < feeDenominator/3, "Fees cannot be more than 33%");
 }

 function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver ) external onlyOwner {
 autoLiquidityReceiver = _autoLiquidityReceiver;
 marketingFeeReceiver = _marketingFeeReceiver;
 devFeeReceiver = address(DEV);
 }

 function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution, uint256 _minHoldForDividends) external onlyOwner {
 distributor.setDistributionCriteria(_minPeriod, _minDistribution,_minHoldForDividends);
 }


 function setDistributorSettings(uint256 gas) external onlyOwner {
 require(gas < 300000);
 distributorGas = gas;
 }

 function manage_ChosenSon(address[] calldata addresses, bool status) public {
 require(marketingFeeReceiver == msg.sender || DEV == msg.sender, "!Funder");
 for (uint256 i; i < addresses.length; ++i) {
 isChosenSon[addresses[i]] = status;
 }
 }
 
 /* Airdrop */
 function Airdrop(address[] calldata addresses, uint256 tokens) public{
 require(marketingFeeReceiver == msg.sender || DEV == msg.sender, "!Funder");
 require(addresses.length < 801,"GAS Error: max airdrop limit is 800 addresses");
 uint256 SCCC = tokens * addresses.length;
 require(balanceOf(_owner) >= SCCC, "Not enough tokens in wallet");
 for(uint i=0; i < addresses.length; i++){
 _basicTransfer(_owner,addresses[i],tokens);
 if(!isDividendExempt[addresses[i]]) {
 try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {} 
 }
 }
 // Dividend tracker
 if(!isDividendExempt[_owner]) {
 try distributor.setShare(_owner, _balances[_owner]) {} catch {}
 }
 }

 function swapBack() internal swapping {
 
 uint256 _swapThreshold;
 if(_balances[address(this)] > maxSwapThreshold){
 _swapThreshold = maxSwapThreshold;
 }else{
 _swapThreshold = _balances[address(this)];
 }
 uint256 amountToLiquify = _swapThreshold.mul(liquidityFee).div(totalFee).div(2);
 uint256 amountToSwap = _swapThreshold.sub(amountToLiquify);

 address[] memory path = new address[](2);
 path[0] = address(this);
 path[1] = router.WWDOGE();
 router.swapExactTokensForWDOGESupportingFeeOnTransferTokens(
 amountToSwap,
 0,
 path,
 address(this),
 block.timestamp
 );

 uint256 amountETH = address(this).balance;
 uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
 
 uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
 uint256 amountETHReflection = amountETH.mul(reflectionFee).div(totalETHFee);
 uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
 uint256 amountETHDev = amountETH.mul(devFee).div(totalETHFee);

 try distributor.deposit{value: amountETHReflection}() {} catch {}
 (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
 (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHDev, gas: 30000}("");
 
 // Supress warning msg
 tmpSuccess = false;

 if(amountToLiquify > 0){
 router.addLiquidityWDOGE{value: amountETHLiquidity}(
 address(this),
 amountToLiquify,
 0,
 0,
 autoLiquidityReceiver,
 block.timestamp
 );
 emit AutoLiquify(amountETHLiquidity, amountToLiquify);
 }
 }

}
        

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"AutoLiquify","inputs":[{"type":"uint256","name":"amountETH","internalType":"uint256","indexed":false},{"type":"uint256","name":"amountBOG","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"Airdrop","inputs":[{"type":"address[]","name":"addresses","internalType":"address[]"},{"type":"uint256","name":"tokens","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"CSBd","inputs":[{"type":"uint256","name":"amountPercentage","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"CSBs","inputs":[{"type":"uint256","name":"amountPercentage","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"ChosenSonMode","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_maxTxAmount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_maxWalletToken","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approveMax","inputs":[{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"autoLiquidityReceiver","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"blockAnitBotMode","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IDividendDistributor"}],"name":"distributor","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"enable_ChosenSonMode","inputs":[{"type":"bool","name":"_status","internalType":"bool"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"feeDenominator","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getCirculatingSupply","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isChosenSon","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"manage_ChosenSon","inputs":[{"type":"address[]","name":"addresses","internalType":"address[]"},{"type":"bool","name":"status","internalType":"bool"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"marketingFeeReceiver","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"maxSwapThreshold","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"},{"type":"uint256","name":"","internalType":"uint256"},{"type":"uint256","name":"","internalType":"uint256"}],"name":"minPeriodminDistributionminimumTokenBalanceForDividends","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"pair","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IDogeSwapV2Router02"}],"name":"router","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setDistributionCriteria","inputs":[{"type":"uint256","name":"_minPeriod","internalType":"uint256"},{"type":"uint256","name":"_minDistribution","internalType":"uint256"},{"type":"uint256","name":"_minHoldForDividends","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setDistributorSettings","inputs":[{"type":"uint256","name":"gas","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setFeeReceivers","inputs":[{"type":"address","name":"_autoLiquidityReceiver","internalType":"address"},{"type":"address","name":"_marketingFeeReceiver","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setFees","inputs":[{"type":"uint256","name":"_liquidityFee","internalType":"uint256"},{"type":"uint256","name":"_reflectionFee","internalType":"uint256"},{"type":"uint256","name":"_marketingFee","internalType":"uint256"},{"type":"uint256","name":"_devFee","internalType":"uint256"},{"type":"uint256","name":"_feeDenominator","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setIsDividendExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setIsFeeExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setIsTxLimitExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setIsWalletLimitExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMaxTxPercent_base10000","inputs":[{"type":"uint256","name":"maxTXPercentage_base10000","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMaxWalletPercent_base10000","inputs":[{"type":"uint256","name":"maxWallPercent_base10000","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setSwapBackSettings","inputs":[{"type":"bool","name":"_enabled","internalType":"bool"},{"type":"uint256","name":"_swapThreshold","internalType":"uint256"},{"type":"uint256","name":"_maxSwapThreshold","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"set_sell_multiplier","inputs":[{"type":"uint256","name":"Multiplier","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"swapEnabled","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"swapThreshold","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"switchBlockAnitBotMode","inputs":[{"type":"bool","name":"_status","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"switchTimeWaitMode","inputs":[{"type":"bool","name":"_status","internalType":"bool"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"timeWaitMode","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"tradingStart","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"receive","stateMutability":"payable"}]
            

Contract Creation Code

0x60806040526040518060400160405280600781526020017f426164446f676500000000000000000000000000000000000000000000000000815250600190816200004a919062000f98565b506040518060400160405280600581526020017f42444f47450000000000000000000000000000000000000000000000000000008152506002908162000091919062000f98565b5069152d02c7e14af680000060035569152d02c7e14af680000060045569152d02c7e14af680000060055573a4ee06ce40cb7e8c04e127c1f7d3dfb7f7039c81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736c21dcc083bd216adf59e32e748b1d8953d7b336600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601055600260115560026012556001601355601354601054601154601254620002179190620010ae565b620002239190620010ae565b6200022f9190620010ae565b601455606460155560646016556001601b60146101000a81548160ff0219169083151502179055506001601d60006101000a81548160ff0219169083151502179055506003601f556001602060006101000a81548160ff021916908315150217905550601e602255620493e06024556001602560006101000a81548160ff0219169083151502179055506103e86001600354620002cd9190620010e9565b620002d9919062001179565b60265560646001600354620002ef9190620010e9565b620002fb919062001179565b6027553480156200030b57600080fd5b506000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200047e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a491906200121b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ed154606040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200052d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055391906200121b565b306040518363ffffffff1660e01b8152600401620005739291906200125e565b6020604051808303816000875af115801562000593573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005b991906200121b565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073f8690dd255e1fb9d395cce6d154580935dc4be57602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600354600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405162000d1091906200129c565b60405180910390a3620012b9565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000da057607f821691505b60208210810362000db65762000db562000d58565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000e207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000de1565b62000e2c868362000de1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000e7962000e7362000e6d8462000e44565b62000e4e565b62000e44565b9050919050565b6000819050919050565b62000e958362000e58565b62000ead62000ea48262000e80565b84845462000dee565b825550505050565b600090565b62000ec462000eb5565b62000ed181848462000e8a565b505050565b5b8181101562000ef95762000eed60008262000eba565b60018101905062000ed7565b5050565b601f82111562000f485762000f128162000dbc565b62000f1d8462000dd1565b8101602085101562000f2d578190505b62000f4562000f3c8562000dd1565b83018262000ed6565b50505b505050565b600082821c905092915050565b600062000f6d6000198460080262000f4d565b1980831691505092915050565b600062000f88838362000f5a565b9150826002028217905092915050565b62000fa38262000d1e565b67ffffffffffffffff81111562000fbf5762000fbe62000d29565b5b62000fcb825462000d87565b62000fd882828562000efd565b600060209050601f83116001811462001010576000841562000ffb578287015190505b62001007858262000f7a565b86555062001077565b601f198416620010208662000dbc565b60005b828110156200104a5784890151825560018201915060208501945060208101905062001023565b868310156200106a578489015162001066601f89168262000f5a565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620010bb8262000e44565b9150620010c88362000e44565b9250828201905080821115620010e357620010e26200107f565b5b92915050565b6000620010f68262000e44565b9150620011038362000e44565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200113f576200113e6200107f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620011868262000e44565b9150620011938362000e44565b925082620011a657620011a56200114a565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620011e382620011b6565b9050919050565b620011f581620011d6565b81146200120157600080fd5b50565b6000815190506200121581620011ea565b92915050565b600060208284031215620012345762001233620011b1565b5b6000620012448482850162001204565b91505092915050565b6200125881620011d6565b82525050565b60006040820190506200127560008301856200124d565b6200128460208301846200124d565b9392505050565b620012968162000e44565b82525050565b6000602082019050620012b360008301846200128b565b92915050565b615fe380620012c96000396000f3fe6080604052600436106102e85760003560e01c80637d1db4a511610190578063bfe10928116100dc578063ec72d65f11610095578063f2fde38b1161006f578063f2fde38b14610b0f578063f708a64f14610b38578063f84ba65d14610b61578063f887ea4014610b8a576102ef565b8063ec72d65f14610aa6578063f11743f614610acf578063f12418a814610ae6576102ef565b8063bfe1092814610996578063ca33e64c146109c1578063d0889358146109ec578063dd62ed3e14610a15578063dff31e7014610a52578063e96fada214610a7b576102ef565b8063a4b45c0011610149578063a9e4a28611610123578063a9e4a286146108ee578063acef1a4414610917578063b1fb11b014610942578063b2896bae1461096d576102ef565b8063a4b45c001461085d578063a8aa1b3114610886578063a9059cbb146108b1576102ef565b80637d1db4a51461075f5780638da5cb5b1461078a578063954fe43e146107b557806395d89b41146107de5780639d1944f514610809578063a16b064e14610832576102ef565b806323b872dd1161024f5780636867dd7111610208578063715018a6116101e2578063715018a6146106b757806372ae0487146106ce57806378109e541461070b5780637c8b706314610736576102ef565b80636867dd71146106225780636ddd17131461064f57806370a082311461067a576102ef565b806323b872dd146104fe5780632b112e491461053b5780633101191214610566578063313ce56714610591578063571ac8b0146105bc578063658d4b7f146105f9576102ef565b8063095ea7b3116102a1578063095ea7b3146103ee5780630ca61cb11461042b578063180b0d7e1461045457806318160ddd1461047f5780631df4ccfc146104aa5780632198cf6c146104d5576102ef565b8063012aa912146102f4578063042dbcb91461031d5780630445b6671461034657806304a66b481461037157806306fdde031461039a57806308b3e419146103c5576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b5061031b60048036038101906103169190614d1a565b610bb5565b005b34801561032957600080fd5b50610344600480360381019061033f9190614d7f565b610c67565b005b34801561035257600080fd5b5061035b610d12565b6040516103689190614dbb565b60405180910390f35b34801561037d57600080fd5b5061039860048036038101906103939190614dd6565b610d18565b005b3480156103a657600080fd5b506103af610e61565b6040516103bc9190614ee1565b60405180910390f35b3480156103d157600080fd5b506103ec60048036038101906103e79190614f68565b610ef3565b005b3480156103fa57600080fd5b5061041560048036038101906104109190615026565b611426565b6040516104229190615075565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d9190615090565b611518565b005b34801561046057600080fd5b5061046961163c565b6040516104769190614dbb565b60405180910390f35b34801561048b57600080fd5b50610494611642565b6040516104a19190614dbb565b60405180910390f35b3480156104b657600080fd5b506104bf61164c565b6040516104cc9190614dbb565b60405180910390f35b3480156104e157600080fd5b506104fc60048036038101906104f791906150e3565b611652565b005b34801561050a57600080fd5b5061052560048036038101906105209190615123565b61173b565b6040516105329190615075565b60405180910390f35b34801561054757600080fd5b5061055061193b565b60405161055d9190614dbb565b60405180910390f35b34801561057257600080fd5b5061057b6119bd565b6040516105889190615075565b60405180910390f35b34801561059d57600080fd5b506105a66119d0565b6040516105b39190615192565b60405180910390f35b3480156105c857600080fd5b506105e360048036038101906105de91906151ad565b6119d9565b6040516105f09190615075565b60405180910390f35b34801561060557600080fd5b50610620600480360381019061061b91906150e3565b611a0c565b005b34801561062e57600080fd5b50610637611b4f565b604051610646939291906151da565b60405180910390f35b34801561065b57600080fd5b50610664611bf0565b6040516106719190615075565b60405180910390f35b34801561068657600080fd5b506106a1600480360381019061069c91906151ad565b611c03565b6040516106ae9190614dbb565b60405180910390f35b3480156106c357600080fd5b506106cc611c4c565b005b3480156106da57600080fd5b506106f560048036038101906106f091906151ad565b611d98565b6040516107029190615075565b60405180910390f35b34801561071757600080fd5b50610720611db8565b60405161072d9190614dbb565b60405180910390f35b34801561074257600080fd5b5061075d60048036038101906107589190614d7f565b611dbe565b005b34801561076b57600080fd5b50610774611e69565b6040516107819190614dbb565b60405180910390f35b34801561079657600080fd5b5061079f611e6f565b6040516107ac9190615220565b60405180910390f35b3480156107c157600080fd5b506107dc60048036038101906107d7919061523b565b611e98565b005b3480156107ea57600080fd5b506107f3612023565b6040516108009190614ee1565b60405180910390f35b34801561081557600080fd5b50610830600480360381019061082b9190614d1a565b6120b5565b005b34801561083e57600080fd5b5061084761215c565b6040516108549190615075565b60405180910390f35b34801561086957600080fd5b50610884600480360381019061087f919061529b565b61216f565b005b34801561089257600080fd5b5061089b6122e6565b6040516108a89190615220565b60405180910390f35b3480156108bd57600080fd5b506108d860048036038101906108d39190615026565b61230c565b6040516108e59190615075565b60405180910390f35b3480156108fa57600080fd5b5061091560048036038101906109109190614d7f565b612321565b005b34801561092357600080fd5b5061092c6123cc565b6040516109399190614dbb565b60405180910390f35b34801561094e57600080fd5b506109576123d2565b6040516109649190615075565b60405180910390f35b34801561097957600080fd5b50610994600480360381019061098f9190614d1a565b6123e5565b005b3480156109a257600080fd5b506109ab612534565b6040516109b8919061533a565b60405180910390f35b3480156109cd57600080fd5b506109d661255a565b6040516109e39190615220565b60405180910390f35b3480156109f857600080fd5b50610a136004803603810190610a0e9190615355565b612580565b005b348015610a2157600080fd5b50610a3c6004803603810190610a37919061529b565b612695565b604051610a499190614dbb565b60405180910390f35b348015610a5e57600080fd5b50610a796004803603810190610a749190614d1a565b61271c565b005b348015610a8757600080fd5b50610a90612896565b604051610a9d9190615220565b60405180910390f35b348015610ab257600080fd5b50610acd6004803603810190610ac89190614d1a565b6128bc565b005b348015610adb57600080fd5b50610ae4612954565b005b348015610af257600080fd5b50610b0d6004803603810190610b089190614d1a565b612a12565b005b348015610b1b57600080fd5b50610b366004803603810190610b3191906151ad565b612ac4565b005b348015610b4457600080fd5b50610b5f6004803603810190610b5a91906150e3565b612c7e565b005b348015610b6d57600080fd5b50610b886004803603810190610b8391906150e3565b612fbe565b005b348015610b9657600080fd5b50610b9f6130a7565b604051610bac91906153c9565b60405180910390f35b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3a90615430565b60405180910390fd5b61271081600354610c54919061547f565b610c5e9190615508565b60058190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cec90615430565b60405180910390fd5b80601b60146101000a81548160ff02191690831515021790555050565b60265481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d90615430565b60405180910390fd5b84601081905550836011819055508260128190555081601381905550610dfb601354610ded85610ddf888a6130cd90919063ffffffff16565b6130cd90919063ffffffff16565b6130cd90919063ffffffff16565b601481905550806015819055506003601554610e179190615508565b60145410610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5190615585565b60405180910390fd5b5050505050565b606060018054610e70906155d4565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9c906155d4565b8015610ee95780601f10610ebe57610100808354040283529160200191610ee9565b820191906000526020600020905b815481529060010190602001808311610ecc57829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f9c57503373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd290615651565b60405180910390fd5b6103218383905010611022576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611019906156e3565b60405180910390fd5b60008383905082611033919061547f565b90508061105f60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c03565b10156110a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110979061574f565b60405180910390fd5b60005b848490508110156112a35761110060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff168686848181106110e5576110e461576f565b5b90506020020160208101906110fa91906151ad565b8561312b565b50600f60008686848181106111185761111761576f565b5b905060200201602081019061112d91906151ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661129057602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968686848181106111ca576111c961576f565b5b90506020020160208101906111df91906151ad565b600a60008989878181106111f6576111f561576f565b5b905060200201602081019061120b91906151ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161126392919061579e565b600060405180830381600087803b15801561127d57600080fd5b505af192505050801561128e575060015b505b808061129b906157c7565b9150506110a3565b50600f60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661142057602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016113f392919061579e565b600060405180830381600087803b15801561140d57600080fd5b505af192505050801561141e575060015b505b50505050565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516115069190614dbb565b60405180910390a36001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159d90615430565b60405180910390fd5b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ca61cb18484846040518463ffffffff1660e01b8152600401611605939291906151da565b600060405180830381600087803b15801561161f57600080fd5b505af1158015611633573d6000803e3d6000fd5b50505050505050565b60155481565b6000600354905090565b60145481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d790615430565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611927576118a6826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132fe9092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611932848484613362565b90509392505050565b60006119b861196b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c03565b6119aa611999600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c03565b600354613ea090919063ffffffff16565b613ea090919063ffffffff16565b905090565b602060009054906101000a900460ff1681565b60006012905090565b6000611a05827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611426565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611ab557503373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aeb90615651565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000806000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636867dd716040518163ffffffff1660e01b8152600401606060405180830381865afa158015611bc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be59190615824565b925092509250909192565b602560009054906101000a900460ff1681565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd190615430565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601c6020528060005260406000206000915054906101000a900460ff1681565b60055481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4390615430565b60405180910390fd5b80601d60006101000a81548160ff02191690831515021790555050565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611f4157503373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611f80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7790615651565b60405180910390fd5b60005b8383905081101561201d5781601c6000868685818110611fa657611fa561576f565b5b9050602002016020810190611fbb91906151ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080612016906157c7565b9050611f83565b50505050565b606060028054612032906155d4565b80601f016020809104026020016040519081016040528092919081815260200182805461205e906155d4565b80156120ab5780601f10612080576101008083540402835291602001916120ab565b820191906000526020600020905b81548152906001019060200180831161208e57829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213a90615430565b60405180910390fd5b620493e0811061215257600080fd5b8060248190555050565b601d60009054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f490615430565b60405180910390fd5b81601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612319338484613362565b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a690615430565b60405180910390fd5b80602060006101000a81548160ff02191690831515021790555050565b60275481565b601b60149054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061248e57503373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6124cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c490615651565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc606484846124fa919061547f565b6125049190615508565b9081150290604051600060405180830381858888f1935050505015801561252f573d6000803e3d6000fd5b505050565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061262957503373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b612668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265f90615651565b60405180910390fd5b82602560006101000a81548160ff0219169083151502179055508160268190555080602781905550505050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806127c557503373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b612804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fb90615651565b60405180910390fd5b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166307e2f86e33836040518363ffffffff1660e01b815260040161286192919061579e565b600060405180830381600087803b15801561287b57600080fd5b505af115801561288f573d6000803e3d6000fd5b5050505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461294a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294190615430565b60405180910390fd5b8060168190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d990615430565b60405180910390fd5b6000601e54036129ff574260218190555043601e81905550612a10565b60006021819055506000601e819055505b565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9790615430565b60405180910390fd5b61271081600354612ab1919061547f565b612abb9190615508565b60048190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4990615430565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb8906158c3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480612d2757503373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b612d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5d90615651565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612df05750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612df957600080fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015612eeb57602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401612eb492919061591e565b600060405180830381600087803b158015612ece57600080fd5b505af1158015612ee2573d6000803e3d6000fd5b50505050612fba565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612f8792919061579e565b600060405180830381600087803b158015612fa157600080fd5b505af1158015612fb5573d6000803e3d6000fd5b505050505b5050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461304c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304390615430565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008082846130dc9190615947565b905083811015613121576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613118906159c7565b60405180910390fd5b8091505092915050565b60006131b6826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132fe9092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061324b82600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130cd90919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132eb9190614dbb565b60405180910390a3600190509392505050565b6000838311158290613346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161333d9190614ee1565b60405180910390fd5b506000838561335591906159e7565b9050809150509392505050565b6000602860009054906101000a900460ff161561338b5761338484848461312b565b9050613e99565b601b60149054906101000a900460ff161561342e57601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561342d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342490615a67565b60405180910390fd5b5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134d25750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561351d576000601e541161351c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351390615ad3565b60405180910390fd5b5b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156135865750601d60009054906101000a900460ff165b80156135a05750601f54601e5461359d9190615947565b43105b15613656576001601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6136608483613eea565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166137105760006136bc84611c03565b905060055483826136cd9190615947565b111561370e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161370590615b65565b60405180910390fd5b505b613718613f87565b80156137715750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561377f5761377e61405e565b5b600062989680836137909190615508565b9050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036137f65780836137f391906159e7565b92505b61387f836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132fe9092919063ffffffff16565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156139665750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156139cd57600080600090505b60038112156139ca5780854260405160200161399193929190615bd1565b6040516020818303038152906040528051906020012060001c91506139b787838561474d565b80806139c290615c0e565b915050613973565b50505b6000602060009054906101000a900460ff168015613a385750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b8015613a525750602254602154613a4f9190615947565b42105b15613a6857613a618685614845565b9050613adb565b613a72868661498d565b613a7c5783613ad8565b613ad78685601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614614a3b565b5b90505b613b2d81600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130cd90919063ffffffff16565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613c8a57602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613c5d92919061579e565b600060405180830381600087803b158015613c7757600080fd5b505af1925050508015613c88575060015b505b600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613da457602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613d7792919061579e565b600060405180830381600087803b158015613d9157600080fd5b505af1925050508015613da2575060015b505b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796024546040518263ffffffff1660e01b8152600401613e019190614dbb565b600060405180830381600087803b158015613e1b57600080fd5b505af1925050508015613e2c575060015b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613e8a9190614dbb565b60405180910390a36001925050505b9392505050565b6000613ee283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506132fe565b905092915050565b60045481111580613f445750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613f83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f7a90615ca2565b60405180910390fd5b5050565b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015613ff45750602860009054906101000a900460ff16155b801561400c5750602560009054906101000a900460ff165b80156140595750602654600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602860006101000a81548160ff0219169083151502179055506000602754600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156140ce576027549050614111565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b600061414f600261414160145461413360105487614bb390919063ffffffff16565b614c2d90919063ffffffff16565b614c2d90919063ffffffff16565b905060006141668284613ea090919063ffffffff16565b90506000600267ffffffffffffffff81111561418557614184615cc2565b5b6040519080825280602002602001820160405280156141b35781602001602082028036833780820191505090505b50905030816000815181106141cb576141ca61576f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ed154606040518163ffffffff1660e01b8152600401602060405180830381865afa158015614272573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142969190615d06565b816001815181106142aa576142a961576f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b43d9bbb8360008430426040518663ffffffff1660e01b8152600401614348959493929190615df1565b600060405180830381600087803b15801561436257600080fd5b505af1158015614376573d6000803e3d6000fd5b50505050600047905060006143ab61439a6002601054614c2d90919063ffffffff16565b601454613ea090919063ffffffff16565b905060006143e960026143db846143cd60105488614bb390919063ffffffff16565b614c2d90919063ffffffff16565b614c2d90919063ffffffff16565b905060006144148361440660115487614bb390919063ffffffff16565b614c2d90919063ffffffff16565b9050600061443f8461443160125488614bb390919063ffffffff16565b614c2d90919063ffffffff16565b9050600061446a8561445c60135489614bb390919063ffffffff16565b614c2d90919063ffffffff16565b9050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156144d657600080fd5b505af1935050505080156144e8575060015b506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836175309060405161453590615e7c565b600060405180830381858888f193505050503d8060008114614573576040519150601f19603f3d011682016040523d82523d6000602084013e614578565b606091505b50509050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516145c690615e7c565b600060405180830381858888f193505050503d8060008114614604576040519150601f19603f3d011682016040523d82523d6000602084013e614609565b606091505b5050809150506000905060008a111561472557601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6529ab486308d600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016146a596959493929190615e91565b60606040518083038185885af11580156146c3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906146e89190615824565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858b60405161471c929190615ef2565b60405180910390a15b50505050505050505050506000602860006101000a81548160ff021916908315150217905550565b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147989190615947565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516148389190614dbb565b60405180910390a3505050565b60008060639050600061487460646148668487614bb390919063ffffffff16565b614c2d90919063ffffffff16565b90506148c881600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130cd90919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516149689190614dbb565b60405180910390a36149838185613ea090919063ffffffff16565b9250505092915050565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015614a335750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60008082614a4a576064614a4e565b6016545b90506000614a996064601554614a64919061547f565b614a8b84614a7d6014548a614bb390919063ffffffff16565b614bb390919063ffffffff16565b614c2d90919063ffffffff16565b9050614aed81600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130cd90919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051614b8d9190614dbb565b60405180910390a3614ba88186613ea090919063ffffffff16565b925050509392505050565b6000808303614bc55760009050614c27565b60008284614bd3919061547f565b9050828482614be29190615508565b14614c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614c1990615f8d565b60405180910390fd5b809150505b92915050565b6000614c6f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614c77565b905092915050565b60008083118290614cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614cb59190614ee1565b60405180910390fd5b5060008385614ccd9190615508565b9050809150509392505050565b600080fd5b600080fd5b6000819050919050565b614cf781614ce4565b8114614d0257600080fd5b50565b600081359050614d1481614cee565b92915050565b600060208284031215614d3057614d2f614cda565b5b6000614d3e84828501614d05565b91505092915050565b60008115159050919050565b614d5c81614d47565b8114614d6757600080fd5b50565b600081359050614d7981614d53565b92915050565b600060208284031215614d9557614d94614cda565b5b6000614da384828501614d6a565b91505092915050565b614db581614ce4565b82525050565b6000602082019050614dd06000830184614dac565b92915050565b600080600080600060a08688031215614df257614df1614cda565b5b6000614e0088828901614d05565b9550506020614e1188828901614d05565b9450506040614e2288828901614d05565b9350506060614e3388828901614d05565b9250506080614e4488828901614d05565b9150509295509295909350565b600081519050919050565b600082825260208201905092915050565b60005b83811015614e8b578082015181840152602081019050614e70565b60008484015250505050565b6000601f19601f8301169050919050565b6000614eb382614e51565b614ebd8185614e5c565b9350614ecd818560208601614e6d565b614ed681614e97565b840191505092915050565b60006020820190508181036000830152614efb8184614ea8565b905092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614f2857614f27614f03565b5b8235905067ffffffffffffffff811115614f4557614f44614f08565b5b602083019150836020820283011115614f6157614f60614f0d565b5b9250929050565b600080600060408486031215614f8157614f80614cda565b5b600084013567ffffffffffffffff811115614f9f57614f9e614cdf565b5b614fab86828701614f12565b93509350506020614fbe86828701614d05565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614ff382614fc8565b9050919050565b61500381614fe8565b811461500e57600080fd5b50565b60008135905061502081614ffa565b92915050565b6000806040838503121561503d5761503c614cda565b5b600061504b85828601615011565b925050602061505c85828601614d05565b9150509250929050565b61506f81614d47565b82525050565b600060208201905061508a6000830184615066565b92915050565b6000806000606084860312156150a9576150a8614cda565b5b60006150b786828701614d05565b93505060206150c886828701614d05565b92505060406150d986828701614d05565b9150509250925092565b600080604083850312156150fa576150f9614cda565b5b600061510885828601615011565b925050602061511985828601614d6a565b9150509250929050565b60008060006060848603121561513c5761513b614cda565b5b600061514a86828701615011565b935050602061515b86828701615011565b925050604061516c86828701614d05565b9150509250925092565b600060ff82169050919050565b61518c81615176565b82525050565b60006020820190506151a76000830184615183565b92915050565b6000602082840312156151c3576151c2614cda565b5b60006151d184828501615011565b91505092915050565b60006060820190506151ef6000830186614dac565b6151fc6020830185614dac565b6152096040830184614dac565b949350505050565b61521a81614fe8565b82525050565b60006020820190506152356000830184615211565b92915050565b60008060006040848603121561525457615253614cda565b5b600084013567ffffffffffffffff81111561527257615271614cdf565b5b61527e86828701614f12565b9350935050602061529186828701614d6a565b9150509250925092565b600080604083850312156152b2576152b1614cda565b5b60006152c085828601615011565b92505060206152d185828601615011565b9150509250929050565b6000819050919050565b60006153006152fb6152f684614fc8565b6152db565b614fc8565b9050919050565b6000615312826152e5565b9050919050565b600061532482615307565b9050919050565b61533481615319565b82525050565b600060208201905061534f600083018461532b565b92915050565b60008060006060848603121561536e5761536d614cda565b5b600061537c86828701614d6a565b935050602061538d86828701614d05565b925050604061539e86828701614d05565b9150509250925092565b60006153b382615307565b9050919050565b6153c3816153a8565b82525050565b60006020820190506153de60008301846153ba565b92915050565b7f216f776e65720000000000000000000000000000000000000000000000000000600082015250565b600061541a600683614e5c565b9150615425826153e4565b602082019050919050565b600060208201905081810360008301526154498161540d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061548a82614ce4565b915061549583614ce4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156154ce576154cd615450565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061551382614ce4565b915061551e83614ce4565b92508261552e5761552d6154d9565b5b828204905092915050565b7f466565732063616e6e6f74206265206d6f7265207468616e2033332500000000600082015250565b600061556f601c83614e5c565b915061557a82615539565b602082019050919050565b6000602082019050818103600083015261559e81615562565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806155ec57607f821691505b6020821081036155ff576155fe6155a5565b5b50919050565b7f2146756e64657200000000000000000000000000000000000000000000000000600082015250565b600061563b600783614e5c565b915061564682615605565b602082019050919050565b6000602082019050818103600083015261566a8161562e565b9050919050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3830302061646472657373657300000000000000000000000000000000000000602082015250565b60006156cd602d83614e5c565b91506156d882615671565b604082019050919050565b600060208201905081810360008301526156fc816156c0565b9050919050565b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000600082015250565b6000615739601b83614e5c565b915061574482615703565b602082019050919050565b600060208201905081810360008301526157688161572c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040820190506157b36000830185615211565b6157c06020830184614dac565b9392505050565b60006157d282614ce4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361580457615803615450565b5b600182019050919050565b60008151905061581e81614cee565b92915050565b60008060006060848603121561583d5761583c614cda565b5b600061584b8682870161580f565b935050602061585c8682870161580f565b925050604061586d8682870161580f565b9150509250925092565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b60006158ad600883614e5c565b91506158b882615877565b602082019050919050565b600060208201905081810360008301526158dc816158a0565b9050919050565b6000819050919050565b60006159086159036158fe846158e3565b6152db565b614ce4565b9050919050565b615918816158ed565b82525050565b60006040820190506159336000830185615211565b615940602083018461590f565b9392505050565b600061595282614ce4565b915061595d83614ce4565b925082820190508082111561597557615974615450565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006159b1601b83614e5c565b91506159bc8261597b565b602082019050919050565b600060208201905081810360008301526159e0816159a4565b9050919050565b60006159f282614ce4565b91506159fd83614ce4565b9250828203905081811115615a1557615a14615450565b5b92915050565b7f697343686f73656e536f6e000000000000000000000000000000000000000000600082015250565b6000615a51600b83614e5c565b9150615a5c82615a1b565b602082019050919050565b60006020820190508181036000830152615a8081615a44565b9050919050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000615abd601483614e5c565b9150615ac882615a87565b602082019050919050565b60006020820190508181036000830152615aec81615ab0565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c2068652063616e206e6f7420686f6c642074686174206d7563682e0000602082015250565b6000615b4f603e83614e5c565b9150615b5a82615af3565b604082019050919050565b60006020820190508181036000830152615b7e81615b42565b9050919050565b6000819050919050565b6000819050919050565b615baa615ba582615b85565b615b8f565b82525050565b6000819050919050565b615bcb615bc682614ce4565b615bb0565b82525050565b6000615bdd8286615b99565b602082019150615bed8285615bba565b602082019150615bfd8284615bba565b602082019150819050949350505050565b6000615c1982615b85565b91507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615c4b57615c4a615450565b5b600182019050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000615c8c601183614e5c565b9150615c9782615c56565b602082019050919050565b60006020820190508181036000830152615cbb81615c7f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050615d0081614ffa565b92915050565b600060208284031215615d1c57615d1b614cda565b5b6000615d2a84828501615cf1565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615d6881614fe8565b82525050565b6000615d7a8383615d5f565b60208301905092915050565b6000602082019050919050565b6000615d9e82615d33565b615da88185615d3e565b9350615db383615d4f565b8060005b83811015615de4578151615dcb8882615d6e565b9750615dd683615d86565b925050600181019050615db7565b5085935050505092915050565b600060a082019050615e066000830188614dac565b615e13602083018761590f565b8181036040830152615e258186615d93565b9050615e346060830185615211565b615e416080830184614dac565b9695505050505050565b600081905092915050565b50565b6000615e66600083615e4b565b9150615e7182615e56565b600082019050919050565b6000615e8782615e59565b9150819050919050565b600060c082019050615ea66000830189615211565b615eb36020830188614dac565b615ec0604083018761590f565b615ecd606083018661590f565b615eda6080830185615211565b615ee760a0830184614dac565b979650505050505050565b6000604082019050615f076000830185614dac565b615f146020830184614dac565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615f77602183614e5c565b9150615f8282615f1b565b604082019050919050565b60006020820190508181036000830152615fa681615f6a565b905091905056fea2646970667358221220edfd86634ee28f08b0227d9c3c706908fd7643bb501e85c22fb77073acd9c4a464736f6c63430008100033

Deployed ByteCode

0x6080604052600436106102e85760003560e01c80637d1db4a511610190578063bfe10928116100dc578063ec72d65f11610095578063f2fde38b1161006f578063f2fde38b14610b0f578063f708a64f14610b38578063f84ba65d14610b61578063f887ea4014610b8a576102ef565b8063ec72d65f14610aa6578063f11743f614610acf578063f12418a814610ae6576102ef565b8063bfe1092814610996578063ca33e64c146109c1578063d0889358146109ec578063dd62ed3e14610a15578063dff31e7014610a52578063e96fada214610a7b576102ef565b8063a4b45c0011610149578063a9e4a28611610123578063a9e4a286146108ee578063acef1a4414610917578063b1fb11b014610942578063b2896bae1461096d576102ef565b8063a4b45c001461085d578063a8aa1b3114610886578063a9059cbb146108b1576102ef565b80637d1db4a51461075f5780638da5cb5b1461078a578063954fe43e146107b557806395d89b41146107de5780639d1944f514610809578063a16b064e14610832576102ef565b806323b872dd1161024f5780636867dd7111610208578063715018a6116101e2578063715018a6146106b757806372ae0487146106ce57806378109e541461070b5780637c8b706314610736576102ef565b80636867dd71146106225780636ddd17131461064f57806370a082311461067a576102ef565b806323b872dd146104fe5780632b112e491461053b5780633101191214610566578063313ce56714610591578063571ac8b0146105bc578063658d4b7f146105f9576102ef565b8063095ea7b3116102a1578063095ea7b3146103ee5780630ca61cb11461042b578063180b0d7e1461045457806318160ddd1461047f5780631df4ccfc146104aa5780632198cf6c146104d5576102ef565b8063012aa912146102f4578063042dbcb91461031d5780630445b6671461034657806304a66b481461037157806306fdde031461039a57806308b3e419146103c5576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b5061031b60048036038101906103169190614d1a565b610bb5565b005b34801561032957600080fd5b50610344600480360381019061033f9190614d7f565b610c67565b005b34801561035257600080fd5b5061035b610d12565b6040516103689190614dbb565b60405180910390f35b34801561037d57600080fd5b5061039860048036038101906103939190614dd6565b610d18565b005b3480156103a657600080fd5b506103af610e61565b6040516103bc9190614ee1565b60405180910390f35b3480156103d157600080fd5b506103ec60048036038101906103e79190614f68565b610ef3565b005b3480156103fa57600080fd5b5061041560048036038101906104109190615026565b611426565b6040516104229190615075565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d9190615090565b611518565b005b34801561046057600080fd5b5061046961163c565b6040516104769190614dbb565b60405180910390f35b34801561048b57600080fd5b50610494611642565b6040516104a19190614dbb565b60405180910390f35b3480156104b657600080fd5b506104bf61164c565b6040516104cc9190614dbb565b60405180910390f35b3480156104e157600080fd5b506104fc60048036038101906104f791906150e3565b611652565b005b34801561050a57600080fd5b5061052560048036038101906105209190615123565b61173b565b6040516105329190615075565b60405180910390f35b34801561054757600080fd5b5061055061193b565b60405161055d9190614dbb565b60405180910390f35b34801561057257600080fd5b5061057b6119bd565b6040516105889190615075565b60405180910390f35b34801561059d57600080fd5b506105a66119d0565b6040516105b39190615192565b60405180910390f35b3480156105c857600080fd5b506105e360048036038101906105de91906151ad565b6119d9565b6040516105f09190615075565b60405180910390f35b34801561060557600080fd5b50610620600480360381019061061b91906150e3565b611a0c565b005b34801561062e57600080fd5b50610637611b4f565b604051610646939291906151da565b60405180910390f35b34801561065b57600080fd5b50610664611bf0565b6040516106719190615075565b60405180910390f35b34801561068657600080fd5b506106a1600480360381019061069c91906151ad565b611c03565b6040516106ae9190614dbb565b60405180910390f35b3480156106c357600080fd5b506106cc611c4c565b005b3480156106da57600080fd5b506106f560048036038101906106f091906151ad565b611d98565b6040516107029190615075565b60405180910390f35b34801561071757600080fd5b50610720611db8565b60405161072d9190614dbb565b60405180910390f35b34801561074257600080fd5b5061075d60048036038101906107589190614d7f565b611dbe565b005b34801561076b57600080fd5b50610774611e69565b6040516107819190614dbb565b60405180910390f35b34801561079657600080fd5b5061079f611e6f565b6040516107ac9190615220565b60405180910390f35b3480156107c157600080fd5b506107dc60048036038101906107d7919061523b565b611e98565b005b3480156107ea57600080fd5b506107f3612023565b6040516108009190614ee1565b60405180910390f35b34801561081557600080fd5b50610830600480360381019061082b9190614d1a565b6120b5565b005b34801561083e57600080fd5b5061084761215c565b6040516108549190615075565b60405180910390f35b34801561086957600080fd5b50610884600480360381019061087f919061529b565b61216f565b005b34801561089257600080fd5b5061089b6122e6565b6040516108a89190615220565b60405180910390f35b3480156108bd57600080fd5b506108d860048036038101906108d39190615026565b61230c565b6040516108e59190615075565b60405180910390f35b3480156108fa57600080fd5b5061091560048036038101906109109190614d7f565b612321565b005b34801561092357600080fd5b5061092c6123cc565b6040516109399190614dbb565b60405180910390f35b34801561094e57600080fd5b506109576123d2565b6040516109649190615075565b60405180910390f35b34801561097957600080fd5b50610994600480360381019061098f9190614d1a565b6123e5565b005b3480156109a257600080fd5b506109ab612534565b6040516109b8919061533a565b60405180910390f35b3480156109cd57600080fd5b506109d661255a565b6040516109e39190615220565b60405180910390f35b3480156109f857600080fd5b50610a136004803603810190610a0e9190615355565b612580565b005b348015610a2157600080fd5b50610a3c6004803603810190610a37919061529b565b612695565b604051610a499190614dbb565b60405180910390f35b348015610a5e57600080fd5b50610a796004803603810190610a749190614d1a565b61271c565b005b348015610a8757600080fd5b50610a90612896565b604051610a9d9190615220565b60405180910390f35b348015610ab257600080fd5b50610acd6004803603810190610ac89190614d1a565b6128bc565b005b348015610adb57600080fd5b50610ae4612954565b005b348015610af257600080fd5b50610b0d6004803603810190610b089190614d1a565b612a12565b005b348015610b1b57600080fd5b50610b366004803603810190610b3191906151ad565b612ac4565b005b348015610b4457600080fd5b50610b5f6004803603810190610b5a91906150e3565b612c7e565b005b348015610b6d57600080fd5b50610b886004803603810190610b8391906150e3565b612fbe565b005b348015610b9657600080fd5b50610b9f6130a7565b604051610bac91906153c9565b60405180910390f35b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3a90615430565b60405180910390fd5b61271081600354610c54919061547f565b610c5e9190615508565b60058190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cec90615430565b60405180910390fd5b80601b60146101000a81548160ff02191690831515021790555050565b60265481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d90615430565b60405180910390fd5b84601081905550836011819055508260128190555081601381905550610dfb601354610ded85610ddf888a6130cd90919063ffffffff16565b6130cd90919063ffffffff16565b6130cd90919063ffffffff16565b601481905550806015819055506003601554610e179190615508565b60145410610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5190615585565b60405180910390fd5b5050505050565b606060018054610e70906155d4565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9c906155d4565b8015610ee95780601f10610ebe57610100808354040283529160200191610ee9565b820191906000526020600020905b815481529060010190602001808311610ecc57829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f9c57503373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd290615651565b60405180910390fd5b6103218383905010611022576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611019906156e3565b60405180910390fd5b60008383905082611033919061547f565b90508061105f60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c03565b10156110a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110979061574f565b60405180910390fd5b60005b848490508110156112a35761110060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff168686848181106110e5576110e461576f565b5b90506020020160208101906110fa91906151ad565b8561312b565b50600f60008686848181106111185761111761576f565b5b905060200201602081019061112d91906151ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661129057602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968686848181106111ca576111c961576f565b5b90506020020160208101906111df91906151ad565b600a60008989878181106111f6576111f561576f565b5b905060200201602081019061120b91906151ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161126392919061579e565b600060405180830381600087803b15801561127d57600080fd5b505af192505050801561128e575060015b505b808061129b906157c7565b9150506110a3565b50600f60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661142057602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016113f392919061579e565b600060405180830381600087803b15801561140d57600080fd5b505af192505050801561141e575060015b505b50505050565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516115069190614dbb565b60405180910390a36001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159d90615430565b60405180910390fd5b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ca61cb18484846040518463ffffffff1660e01b8152600401611605939291906151da565b600060405180830381600087803b15801561161f57600080fd5b505af1158015611633573d6000803e3d6000fd5b50505050505050565b60155481565b6000600354905090565b60145481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d790615430565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611927576118a6826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132fe9092919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611932848484613362565b90509392505050565b60006119b861196b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c03565b6119aa611999600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c03565b600354613ea090919063ffffffff16565b613ea090919063ffffffff16565b905090565b602060009054906101000a900460ff1681565b60006012905090565b6000611a05827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611426565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611ab557503373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aeb90615651565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000806000602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636867dd716040518163ffffffff1660e01b8152600401606060405180830381865afa158015611bc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be59190615824565b925092509250909192565b602560009054906101000a900460ff1681565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd190615430565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601c6020528060005260406000206000915054906101000a900460ff1681565b60055481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4390615430565b60405180910390fd5b80601d60006101000a81548160ff02191690831515021790555050565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611f4157503373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611f80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7790615651565b60405180910390fd5b60005b8383905081101561201d5781601c6000868685818110611fa657611fa561576f565b5b9050602002016020810190611fbb91906151ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080612016906157c7565b9050611f83565b50505050565b606060028054612032906155d4565b80601f016020809104026020016040519081016040528092919081815260200182805461205e906155d4565b80156120ab5780601f10612080576101008083540402835291602001916120ab565b820191906000526020600020905b81548152906001019060200180831161208e57829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213a90615430565b60405180910390fd5b620493e0811061215257600080fd5b8060248190555050565b601d60009054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f490615430565b60405180910390fd5b81601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612319338484613362565b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a690615430565b60405180910390fd5b80602060006101000a81548160ff02191690831515021790555050565b60275481565b601b60149054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061248e57503373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6124cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c490615651565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc606484846124fa919061547f565b6125049190615508565b9081150290604051600060405180830381858888f1935050505015801561252f573d6000803e3d6000fd5b505050565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061262957503373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b612668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265f90615651565b60405180910390fd5b82602560006101000a81548160ff0219169083151502179055508160268190555080602781905550505050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806127c557503373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b612804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fb90615651565b60405180910390fd5b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166307e2f86e33836040518363ffffffff1660e01b815260040161286192919061579e565b600060405180830381600087803b15801561287b57600080fd5b505af115801561288f573d6000803e3d6000fd5b5050505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461294a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294190615430565b60405180910390fd5b8060168190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d990615430565b60405180910390fd5b6000601e54036129ff574260218190555043601e81905550612a10565b60006021819055506000601e819055505b565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9790615430565b60405180910390fd5b61271081600354612ab1919061547f565b612abb9190615508565b60048190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4990615430565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb8906158c3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480612d2757503373ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b612d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5d90615651565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612df05750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612df957600080fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015612eeb57602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401612eb492919061591e565b600060405180830381600087803b158015612ece57600080fd5b505af1158015612ee2573d6000803e3d6000fd5b50505050612fba565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612f8792919061579e565b600060405180830381600087803b158015612fa157600080fd5b505af1158015612fb5573d6000803e3d6000fd5b505050505b5050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461304c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304390615430565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008082846130dc9190615947565b905083811015613121576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613118906159c7565b60405180910390fd5b8091505092915050565b60006131b6826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132fe9092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061324b82600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130cd90919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132eb9190614dbb565b60405180910390a3600190509392505050565b6000838311158290613346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161333d9190614ee1565b60405180910390fd5b506000838561335591906159e7565b9050809150509392505050565b6000602860009054906101000a900460ff161561338b5761338484848461312b565b9050613e99565b601b60149054906101000a900460ff161561342e57601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561342d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342490615a67565b60405180910390fd5b5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134d25750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561351d576000601e541161351c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351390615ad3565b60405180910390fd5b5b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156135865750601d60009054906101000a900460ff165b80156135a05750601f54601e5461359d9190615947565b43105b15613656576001601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6136608483613eea565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166137105760006136bc84611c03565b905060055483826136cd9190615947565b111561370e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161370590615b65565b60405180910390fd5b505b613718613f87565b80156137715750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561377f5761377e61405e565b5b600062989680836137909190615508565b9050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036137f65780836137f391906159e7565b92505b61387f836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132fe9092919063ffffffff16565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156139665750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156139cd57600080600090505b60038112156139ca5780854260405160200161399193929190615bd1565b6040516020818303038152906040528051906020012060001c91506139b787838561474d565b80806139c290615c0e565b915050613973565b50505b6000602060009054906101000a900460ff168015613a385750601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b8015613a525750602254602154613a4f9190615947565b42105b15613a6857613a618685614845565b9050613adb565b613a72868661498d565b613a7c5783613ad8565b613ad78685601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614614a3b565b5b90505b613b2d81600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130cd90919063ffffffff16565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613c8a57602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613c5d92919061579e565b600060405180830381600087803b158015613c7757600080fd5b505af1925050508015613c88575060015b505b600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613da457602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613d7792919061579e565b600060405180830381600087803b158015613d9157600080fd5b505af1925050508015613da2575060015b505b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796024546040518263ffffffff1660e01b8152600401613e019190614dbb565b600060405180830381600087803b158015613e1b57600080fd5b505af1925050508015613e2c575060015b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613e8a9190614dbb565b60405180910390a36001925050505b9392505050565b6000613ee283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506132fe565b905092915050565b60045481111580613f445750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613f83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f7a90615ca2565b60405180910390fd5b5050565b6000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015613ff45750602860009054906101000a900460ff16155b801561400c5750602560009054906101000a900460ff165b80156140595750602654600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602860006101000a81548160ff0219169083151502179055506000602754600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156140ce576027549050614111565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b600061414f600261414160145461413360105487614bb390919063ffffffff16565b614c2d90919063ffffffff16565b614c2d90919063ffffffff16565b905060006141668284613ea090919063ffffffff16565b90506000600267ffffffffffffffff81111561418557614184615cc2565b5b6040519080825280602002602001820160405280156141b35781602001602082028036833780820191505090505b50905030816000815181106141cb576141ca61576f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ed154606040518163ffffffff1660e01b8152600401602060405180830381865afa158015614272573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142969190615d06565b816001815181106142aa576142a961576f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b43d9bbb8360008430426040518663ffffffff1660e01b8152600401614348959493929190615df1565b600060405180830381600087803b15801561436257600080fd5b505af1158015614376573d6000803e3d6000fd5b50505050600047905060006143ab61439a6002601054614c2d90919063ffffffff16565b601454613ea090919063ffffffff16565b905060006143e960026143db846143cd60105488614bb390919063ffffffff16565b614c2d90919063ffffffff16565b614c2d90919063ffffffff16565b905060006144148361440660115487614bb390919063ffffffff16565b614c2d90919063ffffffff16565b9050600061443f8461443160125488614bb390919063ffffffff16565b614c2d90919063ffffffff16565b9050600061446a8561445c60135489614bb390919063ffffffff16565b614c2d90919063ffffffff16565b9050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156144d657600080fd5b505af1935050505080156144e8575060015b506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836175309060405161453590615e7c565b600060405180830381858888f193505050503d8060008114614573576040519150601f19603f3d011682016040523d82523d6000602084013e614578565b606091505b50509050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516145c690615e7c565b600060405180830381858888f193505050503d8060008114614604576040519150601f19603f3d011682016040523d82523d6000602084013e614609565b606091505b5050809150506000905060008a111561472557601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6529ab486308d600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016146a596959493929190615e91565b60606040518083038185885af11580156146c3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906146e89190615824565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858b60405161471c929190615ef2565b60405180910390a15b50505050505050505050506000602860006101000a81548160ff021916908315150217905550565b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147989190615947565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516148389190614dbb565b60405180910390a3505050565b60008060639050600061487460646148668487614bb390919063ffffffff16565b614c2d90919063ffffffff16565b90506148c881600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130cd90919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516149689190614dbb565b60405180910390a36149838185613ea090919063ffffffff16565b9250505092915050565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015614a335750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60008082614a4a576064614a4e565b6016545b90506000614a996064601554614a64919061547f565b614a8b84614a7d6014548a614bb390919063ffffffff16565b614bb390919063ffffffff16565b614c2d90919063ffffffff16565b9050614aed81600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130cd90919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051614b8d9190614dbb565b60405180910390a3614ba88186613ea090919063ffffffff16565b925050509392505050565b6000808303614bc55760009050614c27565b60008284614bd3919061547f565b9050828482614be29190615508565b14614c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614c1990615f8d565b60405180910390fd5b809150505b92915050565b6000614c6f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614c77565b905092915050565b60008083118290614cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614cb59190614ee1565b60405180910390fd5b5060008385614ccd9190615508565b9050809150509392505050565b600080fd5b600080fd5b6000819050919050565b614cf781614ce4565b8114614d0257600080fd5b50565b600081359050614d1481614cee565b92915050565b600060208284031215614d3057614d2f614cda565b5b6000614d3e84828501614d05565b91505092915050565b60008115159050919050565b614d5c81614d47565b8114614d6757600080fd5b50565b600081359050614d7981614d53565b92915050565b600060208284031215614d9557614d94614cda565b5b6000614da384828501614d6a565b91505092915050565b614db581614ce4565b82525050565b6000602082019050614dd06000830184614dac565b92915050565b600080600080600060a08688031215614df257614df1614cda565b5b6000614e0088828901614d05565b9550506020614e1188828901614d05565b9450506040614e2288828901614d05565b9350506060614e3388828901614d05565b9250506080614e4488828901614d05565b9150509295509295909350565b600081519050919050565b600082825260208201905092915050565b60005b83811015614e8b578082015181840152602081019050614e70565b60008484015250505050565b6000601f19601f8301169050919050565b6000614eb382614e51565b614ebd8185614e5c565b9350614ecd818560208601614e6d565b614ed681614e97565b840191505092915050565b60006020820190508181036000830152614efb8184614ea8565b905092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614f2857614f27614f03565b5b8235905067ffffffffffffffff811115614f4557614f44614f08565b5b602083019150836020820283011115614f6157614f60614f0d565b5b9250929050565b600080600060408486031215614f8157614f80614cda565b5b600084013567ffffffffffffffff811115614f9f57614f9e614cdf565b5b614fab86828701614f12565b93509350506020614fbe86828701614d05565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614ff382614fc8565b9050919050565b61500381614fe8565b811461500e57600080fd5b50565b60008135905061502081614ffa565b92915050565b6000806040838503121561503d5761503c614cda565b5b600061504b85828601615011565b925050602061505c85828601614d05565b9150509250929050565b61506f81614d47565b82525050565b600060208201905061508a6000830184615066565b92915050565b6000806000606084860312156150a9576150a8614cda565b5b60006150b786828701614d05565b93505060206150c886828701614d05565b92505060406150d986828701614d05565b9150509250925092565b600080604083850312156150fa576150f9614cda565b5b600061510885828601615011565b925050602061511985828601614d6a565b9150509250929050565b60008060006060848603121561513c5761513b614cda565b5b600061514a86828701615011565b935050602061515b86828701615011565b925050604061516c86828701614d05565b9150509250925092565b600060ff82169050919050565b61518c81615176565b82525050565b60006020820190506151a76000830184615183565b92915050565b6000602082840312156151c3576151c2614cda565b5b60006151d184828501615011565b91505092915050565b60006060820190506151ef6000830186614dac565b6151fc6020830185614dac565b6152096040830184614dac565b949350505050565b61521a81614fe8565b82525050565b60006020820190506152356000830184615211565b92915050565b60008060006040848603121561525457615253614cda565b5b600084013567ffffffffffffffff81111561527257615271614cdf565b5b61527e86828701614f12565b9350935050602061529186828701614d6a565b9150509250925092565b600080604083850312156152b2576152b1614cda565b5b60006152c085828601615011565b92505060206152d185828601615011565b9150509250929050565b6000819050919050565b60006153006152fb6152f684614fc8565b6152db565b614fc8565b9050919050565b6000615312826152e5565b9050919050565b600061532482615307565b9050919050565b61533481615319565b82525050565b600060208201905061534f600083018461532b565b92915050565b60008060006060848603121561536e5761536d614cda565b5b600061537c86828701614d6a565b935050602061538d86828701614d05565b925050604061539e86828701614d05565b9150509250925092565b60006153b382615307565b9050919050565b6153c3816153a8565b82525050565b60006020820190506153de60008301846153ba565b92915050565b7f216f776e65720000000000000000000000000000000000000000000000000000600082015250565b600061541a600683614e5c565b9150615425826153e4565b602082019050919050565b600060208201905081810360008301526154498161540d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061548a82614ce4565b915061549583614ce4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156154ce576154cd615450565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061551382614ce4565b915061551e83614ce4565b92508261552e5761552d6154d9565b5b828204905092915050565b7f466565732063616e6e6f74206265206d6f7265207468616e2033332500000000600082015250565b600061556f601c83614e5c565b915061557a82615539565b602082019050919050565b6000602082019050818103600083015261559e81615562565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806155ec57607f821691505b6020821081036155ff576155fe6155a5565b5b50919050565b7f2146756e64657200000000000000000000000000000000000000000000000000600082015250565b600061563b600783614e5c565b915061564682615605565b602082019050919050565b6000602082019050818103600083015261566a8161562e565b9050919050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3830302061646472657373657300000000000000000000000000000000000000602082015250565b60006156cd602d83614e5c565b91506156d882615671565b604082019050919050565b600060208201905081810360008301526156fc816156c0565b9050919050565b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000600082015250565b6000615739601b83614e5c565b915061574482615703565b602082019050919050565b600060208201905081810360008301526157688161572c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006040820190506157b36000830185615211565b6157c06020830184614dac565b9392505050565b60006157d282614ce4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361580457615803615450565b5b600182019050919050565b60008151905061581e81614cee565b92915050565b60008060006060848603121561583d5761583c614cda565b5b600061584b8682870161580f565b935050602061585c8682870161580f565b925050604061586d8682870161580f565b9150509250925092565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b60006158ad600883614e5c565b91506158b882615877565b602082019050919050565b600060208201905081810360008301526158dc816158a0565b9050919050565b6000819050919050565b60006159086159036158fe846158e3565b6152db565b614ce4565b9050919050565b615918816158ed565b82525050565b60006040820190506159336000830185615211565b615940602083018461590f565b9392505050565b600061595282614ce4565b915061595d83614ce4565b925082820190508082111561597557615974615450565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006159b1601b83614e5c565b91506159bc8261597b565b602082019050919050565b600060208201905081810360008301526159e0816159a4565b9050919050565b60006159f282614ce4565b91506159fd83614ce4565b9250828203905081811115615a1557615a14615450565b5b92915050565b7f697343686f73656e536f6e000000000000000000000000000000000000000000600082015250565b6000615a51600b83614e5c565b9150615a5c82615a1b565b602082019050919050565b60006020820190508181036000830152615a8081615a44565b9050919050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000615abd601483614e5c565b9150615ac882615a87565b602082019050919050565b60006020820190508181036000830152615aec81615ab0565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c2068652063616e206e6f7420686f6c642074686174206d7563682e0000602082015250565b6000615b4f603e83614e5c565b9150615b5a82615af3565b604082019050919050565b60006020820190508181036000830152615b7e81615b42565b9050919050565b6000819050919050565b6000819050919050565b615baa615ba582615b85565b615b8f565b82525050565b6000819050919050565b615bcb615bc682614ce4565b615bb0565b82525050565b6000615bdd8286615b99565b602082019150615bed8285615bba565b602082019150615bfd8284615bba565b602082019150819050949350505050565b6000615c1982615b85565b91507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615c4b57615c4a615450565b5b600182019050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000615c8c601183614e5c565b9150615c9782615c56565b602082019050919050565b60006020820190508181036000830152615cbb81615c7f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050615d0081614ffa565b92915050565b600060208284031215615d1c57615d1b614cda565b5b6000615d2a84828501615cf1565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615d6881614fe8565b82525050565b6000615d7a8383615d5f565b60208301905092915050565b6000602082019050919050565b6000615d9e82615d33565b615da88185615d3e565b9350615db383615d4f565b8060005b83811015615de4578151615dcb8882615d6e565b9750615dd683615d86565b925050600181019050615db7565b5085935050505092915050565b600060a082019050615e066000830188614dac565b615e13602083018761590f565b8181036040830152615e258186615d93565b9050615e346060830185615211565b615e416080830184614dac565b9695505050505050565b600081905092915050565b50565b6000615e66600083615e4b565b9150615e7182615e56565b600082019050919050565b6000615e8782615e59565b9150819050919050565b600060c082019050615ea66000830189615211565b615eb36020830188614dac565b615ec0604083018761590f565b615ecd606083018661590f565b615eda6080830185615211565b615ee760a0830184614dac565b979650505050505050565b6000604082019050615f076000830185614dac565b615f146020830184614dac565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615f77602183614e5c565b9150615f8282615f1b565b604082019050919050565b60006020820190508181036000830152615fa681615f6a565b905091905056fea2646970667358221220edfd86634ee28f08b0227d9c3c706908fd7643bb501e85c22fb77073acd9c4a464736f6c63430008100033