Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 14 from a total of 14 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Fee Owner | 12812777 | 1310 days ago | IN | 0 ETH | 0.00240992 | ||||
Withdraw Award | 12810490 | 1311 days ago | IN | 0 ETH | 0.00317264 | ||||
Withdraw Award | 12810477 | 1311 days ago | IN | 0 ETH | 0.00156416 | ||||
Withdraw Award | 12810467 | 1311 days ago | IN | 0 ETH | 0.00186074 | ||||
Obtain Car | 12810439 | 1311 days ago | IN | 0 ETH | 0.00265773 | ||||
Obtain Car | 12810362 | 1311 days ago | IN | 0 ETH | 0.00316972 | ||||
Withdraw Award | 12810089 | 1311 days ago | IN | 0 ETH | 0.00285096 | ||||
Obtain Car | 12805260 | 1311 days ago | IN | 0 ETH | 0.00211315 | ||||
Obtain Car | 12800403 | 1312 days ago | IN | 0 ETH | 0.00317518 | ||||
Obtain Car | 12787812 | 1314 days ago | IN | 0 ETH | 0.00536868 | ||||
Obtain Car | 12787767 | 1314 days ago | IN | 0 ETH | 0.0097698 | ||||
Set Oracle | 12787450 | 1314 days ago | IN | 0 ETH | 0.00072573 | ||||
Transfer Ownersh... | 12787428 | 1314 days ago | IN | 0 ETH | 0.00072697 | ||||
Init | 12787039 | 1314 days ago | IN | 0 ETH | 0.04842762 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
MiningCore
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; import "./SafeMath.sol"; import "./IERC1155.sol"; import "./IERC1155TokenReceiver.sol"; import "./Ownable.sol"; import "./Address.sol"; // sns: [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17] // ids:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18] // fertilities:[1,2,5,10,30,100,1,2,5,10,30,100,10,20,50,100,300,1000] // carries:[0,0,0,0,0,0,10,20,50,100,300,1000,1,2,5,10,30,100] interface MiningPool{ function users(address userAddress) external view returns(uint256 id,uint256 investment,uint256 freezeTime); function balanceOf(address userAddress) external view returns (address[2] memory,uint256[2] memory balances); function totalSupply() external view returns (uint256); function stakeAmount() external view returns (uint256); function duration() external view returns (uint256); function token() external view returns (address); function deposit(uint256[2] calldata amounts) external returns(bool); function allot(address userAddress,uint256[2] calldata amounts) external returns(bool); function lock(address holder, address locker, uint256 nonce, uint256 expiry, bool allowed, uint8 v, bytes32 r, bytes32 s) external; function lockStatus(address userAddress) external view returns(bool); } interface IUniswapPair { function setFeeOwner(address _feeOwner) external; } interface IUniswapFactory { function getPair(address token0,address token1) external returns(address); } abstract contract ERC1155TokenReceiver is IERC1155TokenReceiver{ bytes4 constant internal ERC1155_RECEIVED_VALUE = 0xf23a6e61; bytes4 constant internal ERC1155_BATCH_RECEIVED_VALUE = 0xbc197c81; //-------------------------------------ERC1155--------------------------------------------------------------------- function onERC1155Received(address _operator, address _from, uint256 _id, uint256 _value, bytes calldata _data) external override returns(bytes4) { uint256[] memory _values = new uint256[](1); uint256[] memory _ids = new uint256[](1); _ids[0] = _id; _values[0] = _value; operateToken1155(msg.sender,_operator,_from,_ids,_values,_data); return ERC1155_RECEIVED_VALUE; } function onERC1155BatchReceived(address _operator, address _from, uint256[] calldata _ids, uint256[] calldata _values, bytes calldata _data) external override returns(bytes4) { operateToken1155(msg.sender,_operator,_from,_ids,_values,_data); return ERC1155_BATCH_RECEIVED_VALUE; } // ERC165 interface support function supportsInterface(bytes4 interfaceID) external override pure returns (bool) { return interfaceID == 0x01ffc9a7 || // ERC165 interfaceID == 0x4e2312e0; // ERC1155_ACCEPTED ^ ERC1155_BATCH_ACCEPTED; } function operateToken1155(address msgSender, address _operator, address _from, uint256[] memory _ids, uint256[] memory _values, bytes calldata _data) internal virtual; } contract Config{ uint256 public constant ONE_DAY = 1 days; uint256[10] public RANKING_AWARD_PERCENT = [10,5,3,1,1,1,1,1,1,1]; uint256 public constant LAST_STRAW_PERCNET = 5; uint256[2] public OUT_RATE = [1,1]; } contract MiningCore is Config, Ownable, ERC1155TokenReceiver { using SafeMath for uint256; constructor(MiningPool _pool,IERC1155 _token1155,address payable _developer) { pool = _pool; token1155 = _token1155; developer = _developer; } MiningPool public pool; IERC1155 public token1155; uint256 public ORE_AMOUNT = 500000000; struct Record{ //提现状态 bool drawStatus; //挖矿总量 uint256 digGross; //最后一击 bool lastStraw; mapping(uint256=>uint256) disCars; } struct Pair { uint256[2] amounts; //挖矿总量 uint256 complete; //实际挖矿量 uint256 actual; address lastStraw; } struct Car{ uint256 sn; uint256 fertility; uint256 carry; } //address[] callHelper; address payable developer; uint256 public version; //User acquisition record //mapping(uint256=>mapping(address=>bool)) public obtainLogs; mapping(uint256=>mapping(address=>Record)) public records; //Record of each mining period mapping(uint256=>Pair) public history; //Daily output mapping(uint256=>uint256) public dailyOutput; //The number corresponds to the carIndex uint256[] public carIndex; //Each ID corresponds to a car attribute mapping(uint256=>Car) public cars; mapping(uint256=> address[10]) public rank; event ObtainCar(address indexed userAddress,uint256 indexed _version,uint256 amount ); event Mining(address indexed userAddress,uint256 indexed _version,uint256[] ,uint256[],uint256 amount); event WithdrawAward(address indexed userAddress,uint256 indexed _version,uint256[2] amounts); event UpdateRank(address indexed operator); event DeveloperFee(uint256 fee1,uint256 fee2); event SetCarIndex(uint256 sn,uint256 id,uint256 fertility,uint256 carry); event LastStraw(address indexed userAddress,uint256 _version,uint256,uint256,uint256); function init() public onlyOwner { uint256[18] memory _ids = [uint256(1),2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]; uint256[18] memory _fertilities = [uint256(1),2,5,10,30,100,1,2,5,10,30,100,10,20,50,100,300,1000]; uint256[18] memory _carries = [uint256(1),2,5,10,30,100,10,20,50,100,300,1000,1,2,5,10,30,100]; setCarIndexs(_ids,_fertilities,_carries); } //Set vehicle properties function setCarIndex(uint256 sn,uint256 id,uint256 fertility,uint256 carry) public onlyOwner{ if(sn+1>carIndex.length){ carIndex.push(id); //callHelper.push(address(this)); }else{ carIndex[sn] = id; } cars[id] = Car(sn,fertility,carry); emit SetCarIndex( sn, id, fertility, carry); } //Batch set vehicle properties function setCarIndexs(uint256[18] memory ids,uint256[18] memory fertilities,uint256[18] memory carries) private { for(uint256 i=0;i<ids.length;i++){ setCarIndex(i,ids[i],fertilities[i],carries[i]); } } function setFeeOwner(address _feeOwner,address factory) external onlyOwner { (address[2] memory tokens,) = pool.balanceOf(address(0)); address pair = IUniswapFactory(factory).getPair(tokens[0],tokens[1]); IUniswapPair(pair).setFeeOwner(_feeOwner); } function setOracle(uint256 _ORE_AMOUNT) public onlyOwner { ORE_AMOUNT = _ORE_AMOUNT; } function operateToken1155(address msgSender,address _operator, address _from, uint256[] memory _ids, uint256[] memory _values, bytes calldata) internal override virtual{ require(address(token1155)==msgSender,"not allowed"); require(!Address.isContract(_operator),"Contract invocation is not allowed"); if(_from!=address(0x0)){ mining(_from,_ids,_values); } } function obtainCar(uint256 nonce, uint256 expiry, bool allowed, uint8 v, bytes32 r, bytes32 s) public { require(!pool.lockStatus(msg.sender),"Have been received"); (,uint256[] memory counts,uint256 len,uint256 token1155Amount,uint256 quantity) = cat(msg.sender); if(dailyOutput[pool.duration()]==0){ dailyOutput[pool.duration()] = token1155Amount; } // uint256[] memory carUsable = new uint256[](kinds()); // { // (,uint256[] memory counts,uint256 len,uint256 token1155Amount,uint256 quantity) = cat(msg.sender); // if(dailyOutput[pool.duration()]==0){ // dailyOutput[pool.duration()] = token1155Amount; // } // require(quantity>0&&len>0,"to small"); // uint256 ratio = uint256(keccak256(abi.encodePacked(block.number, block.timestamp))); // uint256 BASIC = len*10; // uint256 bn; // if(quantity>BASIC){ // bn = (quantity-BASIC)/len+1; // quantity -= (quantity-9*len); // } // for(uint256 i = 0;i<quantity;i++){ // uint256 sn = (ratio>>i)%len; // carUsable[sn]++; // } // for(uint256 j;j<len;j++){ // carUsable[j]+= bn; // if(carUsable[j]>counts[j]){ // carUsable[j] = counts[j]; // } // } // emit ObtainCar(msg.sender,version,quantity); // } pool.lock(msg.sender,address(this),nonce,expiry,allowed,v,r,s); //token1155.safeBatchTransferFrom(address(this),msg.sender,carIndex,carUsable,"success"); } function withdrawAward(uint256 _version) public { require(!records[_version][msg.sender].drawStatus,"have withdrawal"); require(_version<version,"Event not over"); (uint256[2] memory amounts) = getVersionAward(_version,msg.sender); records[_version][msg.sender].drawStatus = true; pool.allot(msg.sender,amounts); emit WithdrawAward(msg.sender,_version,amounts); } function getVersionAward(uint256 _version,address userAddress) public view returns(uint256[2] memory amounts){ Pair memory pair = history[_version]; return getPredictAward(_version,userAddress,pair); } function getPredictAward(uint256 _version,address userAddress,Pair memory pair) internal view returns(uint256[2] memory amounts){ Record storage record = records[_version][userAddress]; uint256 ranking = getRanking(userAddress,_version); for(uint8 i = 0;i<2;i++){ uint256 baseAmount = pair.amounts[i].mul(70).div(100); uint256 awardAmount = pair.amounts[i].mul(30).div(100); amounts[i] = amounts[i].add(baseAmount.mul(record.digGross).div(ORE_AMOUNT)); if(ranking<10){ amounts[i] = amounts[i].add(awardAmount.mul(RANKING_AWARD_PERCENT[ranking]).div(30)); } if(record.lastStraw){ amounts[i] = amounts[i].add(awardAmount.mul(LAST_STRAW_PERCNET).div(30)); } } } function getGlobalStats(uint256 _version) external view returns (uint256[5] memory stats,address lastStrawUser) { Pair memory pair = history[_version]; if(_version==version){ (,uint256[2] memory balances) = pool.balanceOf(address(this)); pair.amounts = balances; } stats[0] = pair.amounts[0]; stats[1] = pair.amounts[1]; stats[2] = pair.complete; stats[3] = pair.actual; stats[4] = (pool.duration()+1)*ONE_DAY; lastStrawUser = pair.lastStraw; } function crown(uint256 _version) external view returns (address[10] memory ranking,uint256[10] memory digGross){ ranking = sortRank(_version); for(uint8 i =0;i<ranking.length;i++){ digGross[i] = getDigGross(ranking[i],_version); } } function getPersonalStats(uint256 _version,address userAddress) external view returns (uint256[8] memory stats,bool[3] memory stats2,uint256[] memory departs){ Record storage record = records[_version][userAddress]; (uint256 id,uint256 investment,uint256 freezeTime) = pool.users(userAddress); stats[0] = investment; stats[1] = record.digGross; Pair memory pair = history[_version]; if(_version==version){ (,uint256[2] memory balances) = pool.balanceOf(address(this)); pair.amounts = balances; } uint256[2] memory amounts = getPredictAward(_version,userAddress,pair); stats[2] = amounts[1]; stats[3] = amounts[0]; stats[4] = id; stats[5] = freezeTime; stats[6] = getRanking(userAddress,_version)+1; stats2[0] = record.drawStatus; stats2[1] = record.lastStraw; stats2[2] = pool.lockStatus(userAddress); departs = new uint256[](kinds()); uint256 total; for(uint256 i =0;i<kinds();i++){ uint256 depart = getDepartCars(_version,userAddress,carIndex[i]); departs[i] = depart; total = total.add(depart); } stats[7] = total; } function getDepartCars(uint256 _version,address userAddress,uint256 _carId) public view returns(uint256){ return records[_version][userAddress].disCars[_carId]; } function mining(address userAddress,uint256[] memory ids,uint256[] memory amounts) internal returns(uint256){ Pair storage pair = history[version]; require(ids.length>0&&ids.length == amounts.length,"error"); uint256 carFertility; uint256 carCarry; Record storage record = records[version][userAddress]; uint256 output; for(uint256 i = 0;i<ids.length;i++){ Car memory car = cars[ids[i]]; carFertility = carFertility.add(car.fertility.mul(amounts[i])); carCarry = carCarry.add(car.carry.mul(amounts[i])); record.disCars[ids[i]] = record.disCars[ids[i]].add(amounts[i]); } if(carFertility>carCarry){ output = carCarry; }else{ output = carFertility; } uint256 miningQuantity = pair.complete.add(carFertility); if(miningQuantity>=ORE_AMOUNT){ if(output>ORE_AMOUNT.sub(pair.complete)) output = ORE_AMOUNT.sub(pair.complete); emit LastStraw(userAddress,version,carFertility,carCarry,output); lastStraw(userAddress,pair); } record.digGross = record.digGross.add(output); pair.complete = pair.complete.add(carFertility); pair.actual = pair.actual.add(output); updateRank(userAddress); token1155.safeBatchTransferFrom(address(this),owner(),ids,amounts,"success"); emit Mining(userAddress,version,ids,amounts,output); return output; } function getRanking(address userAddress,uint256 _version) public view returns(uint256){ address[10] memory rankingList = sortRank(_version); uint256 ranking = 10; for(uint8 i =0;i<rankingList.length;i++){ if(userAddress == rankingList[i]){ ranking = i; break; } } return ranking; } function pickUp(address[10] memory rankingList,address userAddress) internal view returns (uint256 sn,uint256 minDig){ minDig = getDigGross(rankingList[0]); for(uint8 i =0;i<rankingList.length;i++){ if(rankingList[i]==userAddress){ return (rankingList.length,0); } if(getDigGross(rankingList[i])<minDig){ minDig = getDigGross(rankingList[i]); sn = i; } } return (sn,minDig); } function updateRank(address userAddress) internal { address[10] memory rankingList = rank[version]; (uint256 sn,uint256 minDig) = pickUp(rankingList,userAddress); if(sn!=rankingList.length){ if(minDig< getDigGross(userAddress)){ rankingList[sn] = userAddress; } rank[version] = rankingList; emit UpdateRank(userAddress); } } function sortRank(uint256 _version) public view returns(address[10] memory ranking){ ranking = rank[_version]; address tmp; for(uint8 i = 1;i<5;i++){ for(uint8 j = 0;j<5-i;j++){ if(getDigGross(ranking[j],_version)<getDigGross(ranking[j+1],_version)){ tmp = ranking[j]; ranking[j] = ranking[j+1]; ranking[j+1] = tmp; } } } return ranking; } function getDigGross(address userAddress) internal view returns(uint256){ return getDigGross(userAddress,version); } function getDigGross(address userAddress,uint256 _version) internal view returns(uint256){ return records[_version][userAddress].digGross; } function lastStraw(address userAddress,Pair storage pair) internal{ (address[2] memory tokens,uint256[2] memory amounts) = pool.balanceOf(address(this)); for(uint8 i;i<amounts.length;i++){ TransferHelper.safeApprove(tokens[i],address(pool),amounts[i]); } pool.deposit(amounts); pair.amounts = amounts; pair.lastStraw = userAddress; records[version][userAddress].lastStraw = true; developerFee(pair); version++; } //项目方收款 function developerFee(Pair storage pair) internal{ uint256[2] memory amounts; for(uint256 i = 0;i<amounts.length;i++){ amounts[i] = pair.amounts[i].mul(70).mul(ORE_AMOUNT.sub(pair.actual)).div(ORE_AMOUNT).div(100); } pool.allot(developer,amounts); emit DeveloperFee(amounts[0],amounts[1]); } function cat(address userAddress) public view returns(uint256[] memory,uint256[] memory counts,uint256 len,uint256 token1155Amount,uint256 quantity){ ( ,uint256 investment, ) = pool.users(userAddress); (counts,token1155Amount) = determinate(); uint256 dailyTokenAmount = dailyOutput[pool.duration()]; if(dailyTokenAmount==0){ dailyTokenAmount = token1155Amount; } uint256 totalSupply = pool.totalSupply(); quantity = investment.mul(dailyTokenAmount).div(totalSupply); return (carIndex,counts,kinds(),token1155Amount,quantity); } function determinate() public view returns(uint256[] memory counts,uint256 token1155Amount){ address _owner = owner(); counts = new uint256[](kinds()); for(uint8 i = 0;i<kinds();i++){ uint256 count = token1155.balanceOf(_owner,carIndex[i]); counts[i] = count; token1155Amount+=count; } for(uint8 i = 0;i<kinds();i++){ token1155Amount+=counts[i]; } } function kinds() internal view returns (uint256) { return carIndex.length; } } // helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false library TransferHelper { function safeApprove(address token, address to, uint value) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED'); } function safeTransfer(address token, address to, uint value) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED'); } function safeTransferFrom(address token, address from, address to, uint value) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED'); } function safeTransferETH(address to, uint value) internal { (bool success,) = to.call{value:value}(new bytes(0)); require(success, 'TransferHelper: ETH_TRANSFER_FAILED'); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; library Address { /** * @dev Returns true if `account` is a contract. * * This test is non-exhaustive, and there may be false-negatives: during the * execution of a contract's constructor, its address will be reported as * not containing a contract. * * IMPORTANT: It is unsafe to assume that an address for which this * function returns false is an externally-owned account (EOA) and not a * contract. */ function isContract(address account) internal view returns (bool) { // This method relies in extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != 0x0 && codehash != accountHash); } /** * @dev Converts an `address` into `address payable`. Note that this is * simply a type cast: the actual underlying value is not changed. * * _Available since v2.4.0._ */ function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. * * _Available since v2.4.0._ */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-call-value (bool success, ) = recipient.call{value:amount}(new bytes(0)); require(success, "Address: unable to send value, recipient may have reverted"); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; interface IERC1155 { // Events /** * @dev Either TransferSingle or TransferBatch MUST emit when tokens are transferred, including zero amount transfers as well as minting or burning * Operator MUST be msg.sender * When minting/creating tokens, the `_from` field MUST be set to `0x0` * When burning/destroying tokens, the `_to` field MUST be set to `0x0` * The total amount transferred from address 0x0 minus the total amount transferred to 0x0 may be used by clients and exchanges to be added to the "circulating supply" for a given token ID * To broadcast the existence of a token ID with no initial balance, the contract SHOULD emit the TransferSingle event from `0x0` to `0x0`, with the token creator as `_operator`, and a `_amount` of 0 */ event TransferSingle(address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _amount); /** * @dev Either TransferSingle or TransferBatch MUST emit when tokens are transferred, including zero amount transfers as well as minting or burning * Operator MUST be msg.sender * When minting/creating tokens, the `_from` field MUST be set to `0x0` * When burning/destroying tokens, the `_to` field MUST be set to `0x0` * The total amount transferred from address 0x0 minus the total amount transferred to 0x0 may be used by clients and exchanges to be added to the "circulating supply" for a given token ID * To broadcast the existence of multiple token IDs with no initial balance, this SHOULD emit the TransferBatch event from `0x0` to `0x0`, with the token creator as `_operator`, and a `_amount` of 0 */ event TransferBatch(address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _amounts); /** * @dev MUST emit when an approval is updated */ event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); /** * @dev MUST emit when the URI is updated for a token ID * URIs are defined in RFC 3986 * The URI MUST point a JSON file that conforms to the "ERC-1155 Metadata JSON Schema" */ event URI(string _amount, uint256 indexed _id); /** * @notice Transfers amount of an _id from the _from address to the _to address specified * @dev MUST emit TransferSingle event on success * Caller must be approved to manage the _from account's tokens (see isApprovedForAll) * MUST throw if `_to` is the zero address * MUST throw if balance of sender for token `_id` is lower than the `_amount` sent * MUST throw on any other error * When transfer is complete, this function MUST check if `_to` is a smart contract (code size > 0). If so, it MUST call `onERC1155Received` on `_to` and revert if the return amount is not `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` * @param _from Source address * @param _to Target address * @param _id ID of the token type * @param _amount Transfered amount * @param _data Additional data with no specified format, sent in call to `_to` */ function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _amount, bytes calldata _data) external; /** * @notice Send multiple types of Tokens from the _from address to the _to address (with safety call) * @dev MUST emit TransferBatch event on success * Caller must be approved to manage the _from account's tokens (see isApprovedForAll) * MUST throw if `_to` is the zero address * MUST throw if length of `_ids` is not the same as length of `_amounts` * MUST throw if any of the balance of sender for token `_ids` is lower than the respective `_amounts` sent * MUST throw on any other error * When transfer is complete, this function MUST check if `_to` is a smart contract (code size > 0). If so, it MUST call `onERC1155BatchReceived` on `_to` and revert if the return amount is not `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` * Transfers and events MUST occur in the array order they were submitted (_ids[0] before _ids[1], etc) * @param _from Source addresses * @param _to Target addresses * @param _ids IDs of each token type * @param _amounts Transfer amounts per token type * @param _data Additional data with no specified format, sent in call to `_to` */ function safeBatchTransferFrom(address _from, address _to, uint256[] calldata _ids, uint256[] calldata _amounts, bytes calldata _data) external; /** * @notice Get the balance of an account's Tokens * @param _owner The address of the token holder * @param _id ID of the Token * @return The _owner's balance of the Token type requested */ function balanceOf(address _owner, uint256 _id) external view returns (uint256); /** * @notice Get the balance of multiple account/token pairs * @param _owners The addresses of the token holders * @param _ids ID of the Tokens * @return The _owner's balance of the Token types requested (i.e. balance for each (owner, id) pair) */ function balanceOfBatch(address[] calldata _owners, uint256[] calldata _ids) external view returns (uint256[] memory); /** * @notice Enable or disable approval for a third party ("operator") to manage all of caller's tokens * @dev MUST emit the ApprovalForAll event on success * @param _operator Address to add to the set of authorized operators * @param _approved True if the operator is approved, false to revoke approval */ function setApprovalForAll(address _operator, bool _approved) external; function isApprovedForAll(address _owner, address _operator) external view returns (bool isOperator); }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /** * @dev ERC-1155 interface for accepting safe transfers. */ interface IERC1155TokenReceiver { /** * @notice Handle the receipt of a single ERC1155 token type * @dev An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeTransferFrom` after the balance has been updated * This function MAY throw to revert and reject the transfer * Return of other amount than the magic value MUST result in the transaction being reverted * Note: The token contract address is always the message sender * @param _operator The address which called the `safeTransferFrom` function * @param _from The address which previously owned the token * @param _id The id of the token being transferred * @param _amount The amount of tokens being transferred * @param _data Additional data with no specified format * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` */ function onERC1155Received(address _operator, address _from, uint256 _id, uint256 _amount, bytes calldata _data) external returns(bytes4); /** * @notice Handle the receipt of multiple ERC1155 token types * @dev An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeBatchTransferFrom` after the balances have been updated * This function MAY throw to revert and reject the transfer * Return of other amount than the magic value WILL result in the transaction being reverted * Note: The token contract address is always the message sender * @param _operator The address which called the `safeBatchTransferFrom` function * @param _from The address which previously owned the token * @param _ids An array containing ids of each token being transferred * @param _amounts An array containing amounts of each token being transferred * @param _data Additional data with no specified format * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` */ function onERC1155BatchReceived(address _operator, address _from, uint256[] calldata _ids, uint256[] calldata _amounts, bytes calldata _data) external returns(bytes4); /** * @notice Indicates whether a contract implements the `ERC1155TokenReceiver` functions and so can accept ERC1155 token types. * @param interfaceID The ERC-165 interface ID that is queried for support.s * @dev This function MUST return true if it implements the ERC1155TokenReceiver interface and ERC-165 interface. * This function MUST NOT consume more than 5,000 gas. * @return Wheter ERC-165 or ERC1155TokenReceiver interfaces are supported. */ function supportsInterface(bytes4 interfaceID) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; import "./SafeMath.sol"; contract Context { constructor () { } function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; return msg.data; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } function isOwner() public view returns (bool) { return _msgSender() == _owner; } function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract MiningPool","name":"_pool","type":"address"},{"internalType":"contract IERC1155","name":"_token1155","type":"address"},{"internalType":"address payable","name":"_developer","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fee1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee2","type":"uint256"}],"name":"DeveloperFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"userAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"_version","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"LastStraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"userAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"_version","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mining","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"userAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"_version","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ObtainCar","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fertility","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"carry","type":"uint256"}],"name":"SetCarIndex","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"}],"name":"UpdateRank","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"userAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"_version","type":"uint256"},{"indexed":false,"internalType":"uint256[2]","name":"amounts","type":"uint256[2]"}],"name":"WithdrawAward","type":"event"},{"inputs":[],"name":"LAST_STRAW_PERCNET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ONE_DAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ORE_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"OUT_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"RANKING_AWARD_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"carIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"cars","outputs":[{"internalType":"uint256","name":"sn","type":"uint256"},{"internalType":"uint256","name":"fertility","type":"uint256"},{"internalType":"uint256","name":"carry","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"cat","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"counts","type":"uint256[]"},{"internalType":"uint256","name":"len","type":"uint256"},{"internalType":"uint256","name":"token1155Amount","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_version","type":"uint256"}],"name":"crown","outputs":[{"internalType":"address[10]","name":"ranking","type":"address[10]"},{"internalType":"uint256[10]","name":"digGross","type":"uint256[10]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"dailyOutput","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"determinate","outputs":[{"internalType":"uint256[]","name":"counts","type":"uint256[]"},{"internalType":"uint256","name":"token1155Amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_version","type":"uint256"},{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"_carId","type":"uint256"}],"name":"getDepartCars","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_version","type":"uint256"}],"name":"getGlobalStats","outputs":[{"internalType":"uint256[5]","name":"stats","type":"uint256[5]"},{"internalType":"address","name":"lastStrawUser","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_version","type":"uint256"},{"internalType":"address","name":"userAddress","type":"address"}],"name":"getPersonalStats","outputs":[{"internalType":"uint256[8]","name":"stats","type":"uint256[8]"},{"internalType":"bool[3]","name":"stats2","type":"bool[3]"},{"internalType":"uint256[]","name":"departs","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"_version","type":"uint256"}],"name":"getRanking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_version","type":"uint256"},{"internalType":"address","name":"userAddress","type":"address"}],"name":"getVersionAward","outputs":[{"internalType":"uint256[2]","name":"amounts","type":"uint256[2]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"history","outputs":[{"internalType":"uint256","name":"complete","type":"uint256"},{"internalType":"uint256","name":"actual","type":"uint256"},{"internalType":"address","name":"lastStraw","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"allowed","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"obtainCar","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_values","type":"uint256[]"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool","outputs":[{"internalType":"contract MiningPool","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"rank","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"records","outputs":[{"internalType":"bool","name":"drawStatus","type":"bool"},{"internalType":"uint256","name":"digGross","type":"uint256"},{"internalType":"bool","name":"lastStraw","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sn","type":"uint256"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"fertility","type":"uint256"},{"internalType":"uint256","name":"carry","type":"uint256"}],"name":"setCarIndex","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeOwner","type":"address"},{"internalType":"address","name":"factory","type":"address"}],"name":"setFeeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ORE_AMOUNT","type":"uint256"}],"name":"setOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_version","type":"uint256"}],"name":"sortRank","outputs":[{"internalType":"address[10]","name":"ranking","type":"address[10]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"token1155","outputs":[{"internalType":"contract IERC1155","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_version","type":"uint256"}],"name":"withdrawAward","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6101c0604052600a6080818152600560a052600360c052600160e08190526101008190526101208190526101408190526101608190526101808190526101a0526200004e916000919062000161565b5060408051808201909152600180825260208201526200007390600a906002620001a9565b50631dcd6500600f553480156200008957600080fd5b50604051620039153803806200391583398181016040526060811015620000af57600080fd5b50805160208201516040909201519091906000620000cc6200015d565b600c80546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600d80546001600160a01b039485166001600160a01b031991821617909155600e80549385169382169390931790925560108054919093169116179055620001f5565b3390565b82600a810192821562000197579160200282015b8281111562000197578251829060ff1690559160200191906001019062000175565b50620001a5929150620001de565b5090565b826002810192821562000197579160200282018281111562000197578251829060ff1690559160200191906001019062000175565b5b80821115620001a55760008155600101620001df565b61371080620002056000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c80638f32d59b11610125578063d4fd7d22116100ad578063ed272cf11161007c578063ed272cf114610966578063f23a6e6114610989578063f2fde38b14610a1c578063f7746e3614610a42578063fe5d327014610a7d5761021c565b8063d4fd7d22146108e0578063da206389146108fd578063db323abb1461092c578063e1c7392a1461095e5761021c565b8063a7a38f0b116100f4578063a7a38f0b146106e5578063a9ee491f14610729578063ac4d0c3614610777578063afec48c11461077f578063bc197c811461079c5761021c565b80638f32d59b14610667578063912dde351461066f5780639cebb2bd146106af5780639fa0a960146106b75761021c565b80633066ad63116101a8578063699de59a11610177578063699de59a1461055c578063715018a61461057b578063863e76db146105835780638bd46d241461058b5780638da5cb5b1461065f5761021c565b80633066ad63146104a65780633bfb4aa2146104ae57806350a733f0146104f157806354fd4d50146105545761021c565b806315f4774e116101ef57806315f4774e1461038d578063162a9f8d146103aa57806316f0115b14610400578063216b39d01461042457806321df6fce146104415761021c565b806301ffc9a7146102215780630db5c9441461025c5780630ea70ad3146103325780630f122cd314610361575b600080fd5b6102486004803603602081101561023757600080fd5b50356001600160e01b031916610aff565b604080519115158252519081900360200190f35b6102886004803603604081101561027257600080fd5b50803590602001356001600160a01b0316610b36565b604051808461010080838360005b838110156102ae578181015183820152602001610296565b5050505090500183600360200280838360005b838110156102d95781810151838201526020016102c1565b5050505090500180602001828103825283818151815260200191508051906020019060200280838360005b8381101561031c578181015183820152602001610304565b5050505090500194505050505060405180910390f35b61034f6004803603602081101561034857600080fd5b5035610ead565b60408051918252519081900360200190f35b61034f6004803603604081101561037757600080fd5b506001600160a01b038135169060200135610ec4565b61034f600480360360208110156103a357600080fd5b5035610f2c565b6103c7600480360360208110156103c057600080fd5b5035610f3e565b604051808261014080838360005b838110156103ed5781810151838201526020016103d5565b5050505090500191505060405180910390f35b610408611085565b604080516001600160a01b039092168252519081900360200190f35b61034f6004803603602081101561043a57600080fd5b5035611094565b61045e6004803603602081101561045757600080fd5b50356110b5565b604051808360a080838360005b8381101561048357818101518382015260200161046b565b50505050905001826001600160a01b031681526020019250505060405180910390f35b61034f611273565b6104da600480360360408110156104c457600080fd5b50803590602001356001600160a01b0316611279565b6040805182518152908190839080838360206103d5565b6104f9611304565b6040518080602001838152602001828103825284818151815260200191508051906020019060200280838360005b8381101561053f578181015183820152602001610527565b50505050905001935050505060405180910390f35b61034f611489565b6105796004803603602081101561057257600080fd5b503561148f565b005b610579611673565b61034f611704565b6105b1600480360360208110156105a157600080fd5b50356001600160a01b031661170b565b604051808060200180602001868152602001858152602001848152602001838103835288818151815260200191508051906020019060200280838360005b838110156106075781810151838201526020016105ef565b50505050905001838103825287818151815260200191508051906020019060200280838360005b8381101561064657818101518382015260200161062e565b5050505090500197505050505050505060405180910390f35b610408611931565b610248611940565b610579600480360360c081101561068557600080fd5b50803590602081013590604081013515159060ff6060820135169060808101359060a00135611966565b610408611c04565b610579600480360360408110156106cd57600080fd5b506001600160a01b0381358116916020013516611c13565b610702600480360360208110156106fb57600080fd5b5035611dd7565b6040805193845260208401929092526001600160a01b031682820152519081900360600190f35b6107556004803603604081101561073f57600080fd5b50803590602001356001600160a01b0316611e04565b6040805193151584526020840192909252151582820152519081900360600190f35b61034f611e35565b61034f6004803603602081101561079557600080fd5b5035611e3a565b6108c3600480360360a08110156107b257600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156107e557600080fd5b8201836020820111156107f757600080fd5b803590602001918460208302840111600160201b8311171561081857600080fd5b919390929091602081019035600160201b81111561083557600080fd5b82018360208201111561084757600080fd5b803590602001918460208302840111600160201b8311171561086857600080fd5b919390929091602081019035600160201b81111561088557600080fd5b82018360208201111561089757600080fd5b803590602001918460018302840111600160201b831117156108b857600080fd5b509092509050611e4a565b604080516001600160e01b03199092168252519081900360200190f35b610579600480360360208110156108f657600080fd5b5035611ed5565b6105796004803603608081101561091357600080fd5b5080359060208101359060408101359060600135611f21565b61034f6004803603606081101561094257600080fd5b508035906001600160a01b03602082013516906040013561204f565b610579612084565b6104086004803603604081101561097c57600080fd5b5080359060200135612283565b6108c3600480360360a081101561099f57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156109de57600080fd5b8201836020820111156109f057600080fd5b803590602001918460018302840111600160201b83111715610a1157600080fd5b5090925090506122b1565b61057960048036036020811015610a3257600080fd5b50356001600160a01b0316612351565b610a5f60048036036020811015610a5857600080fd5b50356123a4565b60408051938452602084019290925282820152519081900360600190f35b610a9a60048036036020811015610a9357600080fd5b50356123c5565b604051808361014080838360005b83811015610ac0578181015183820152602001610aa8565b5050505090500182600a60200280838360005b83811015610aeb578181015183820152602001610ad3565b505050509050019250505060405180910390f35b60006301ffc9a760e01b6001600160e01b031983161480610b305750630271189760e51b6001600160e01b03198316145b92915050565b610b3e61351e565b610b4661353d565b60008481526012602090815260408083206001600160a01b0380881680865291909352818420600d54835163543a185d60e11b8152600481019390935292516060959194919384938493919091169163a87430ba916024808201928a92909190829003018186803b158015610bba57600080fd5b505afa158015610bce573d6000803e3d6000fd5b505050506040513d6060811015610be457600080fd5b508051602080830151604093840151818c5260018901548c84015260008e81526013909352848320855160c08101968790529498509196509450909282906080820190839060029082845b815481526020019060010190808311610c2f57505050918352505060028201546020820152600382015460408201526004909101546001600160a01b03166060909101526011549091508a1415610d0c57600d54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926080929190829003018186803b158015610ccb57600080fd5b505afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506080811015610d0457600080fd5b506040018252505b6000610d198b8b8461242e565b602081015160408b0152805160608b015260808a0186905260a08a018490529050610d448a8c610ec4565b60010160c08a0152855460ff908116151589526002870154161515602089810191909152600d54604080516305525f4b60e21b81526001600160a01b038e81166004830152915191909216926315497d2c9260248082019391829003018186803b158015610db157600080fd5b505afa158015610dc5573d6000803e3d6000fd5b505050506040513d6020811015610ddb57600080fd5b505115156040890152610dec612597565b67ffffffffffffffff81118015610e0257600080fd5b50604051908082528060200260200182016040528015610e2c578160200160208202803683370190505b5096506000805b610e3b612597565b811015610e95576000610e668e8e60158581548110610e5657fe5b906000526020600020015461204f565b9050808a8381518110610e7557fe5b6020908102919091010152610e8a838261259d565b925050600101610e33565b5060e08a015250969995985093965093945050505050565b600081600a8110610ebd57600080fd5b0154905081565b600080610ed083610f3e565b9050600a60005b600a8160ff161015610f2357828160ff16600a8110610ef257fe5b60200201516001600160a01b0316866001600160a01b03161415610f1b578060ff169150610f23565b600101610ed7565b50949350505050565b60146020526000908152604090205481565b610f4661355b565b60008281526017602052604090819020815161014081019283905291600a9082845b81546001600160a01b03168152600190910190602001808311610f685750505050509050600080600190505b60058160ff16101561107e5760005b8160050360ff168160ff16101561107557610fd4848260010160ff16600a8110610fc957fe5b6020020151866125fe565b610ff1858360ff16600a8110610fe657fe5b6020020151876125fe565b101561106d57838160ff16600a811061100657fe5b60200201519250838160010160ff16600a811061101f57fe5b6020020151848260ff16600a811061103357fe5b6001600160a01b039092166020929092020152828460ff6001840116600a811061105957fe5b6001600160a01b0390921660209290920201525b600101610fa3565b50600101610f94565b5050919050565b600d546001600160a01b031681565b601581815481106110a457600080fd5b600091825260209091200154905081565b6110bd61357a565b600082815260136020526040808220815160c0810190925282919081608081018260028282826020028201915b8154815260200190600101908083116110ea57505050918352505060028201546020820152600382015460408201526004909101546001600160a01b03166060909101526011549091508414156111c757600d54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926080929190829003018186803b15801561118657600080fd5b505afa15801561119a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060808110156111bf57600080fd5b506040018252505b805151835280516020908101518185015280820151604080860191909152808301516060860152600d5481516303ed69ad60e21b8152915162015180936001600160a01b0390921692630fb5a6b4926004808301939192829003018186803b15801561123257600080fd5b505afa158015611246573d6000803e3d6000fd5b505050506040513d602081101561125c57600080fd5b505160010102608084015260600151919391925050565b600f5481565b611281613598565b600083815260136020526040808220815160c0810190925281608081018260028282826020028201915b8154815260200190600101908083116112ab57505050918352505060028201546020820152600382015460408201526004909101546001600160a01b031660609091015290506112fc84848361242e565b949350505050565b6060600080611311611931565b905061131b612597565b67ffffffffffffffff8111801561133157600080fd5b5060405190808252806020026020018201604052801561135b578160200160208202803683370190505b50925060005b611369612597565b8160ff16101561144557600e54601580546000926001600160a01b03169162fdd58e9186919060ff871690811061139c57fe5b90600052602060002001546040518363ffffffff1660e01b815260040180836001600160a01b031681526020018281526020019250505060206040518083038186803b1580156113eb57600080fd5b505afa1580156113ff573d6000803e3d6000fd5b505050506040513d602081101561141557600080fd5b505185519091508190869060ff851690811061142d57fe5b60209081029190910101529290920191600101611361565b5060005b611451612597565b8160ff16101561148357838160ff168151811061146a57fe5b6020026020010151830192508080600101915050611449565b50509091565b60115481565b600081815260126020908152604080832033845290915290205460ff16156114f0576040805162461bcd60e51b815260206004820152600f60248201526e1a185d99481dda5d1a191c985dd85b608a1b604482015290519081900360640190fd5b6011548110611537576040805162461bcd60e51b815260206004820152600e60248201526d22bb32b73a103737ba1037bb32b960911b604482015290519081900360640190fd5b60006115438233611279565b6000838152601260209081526040808320338085529252808320805460ff19166001179055600d548151631e041a2360e31b8152600481018481529596506001600160a01b03919091169463f020d11894879391926024019184918190849084905b838110156115bd5781810151838201526020016115a5565b5050505090500192505050602060405180830381600087803b1580156115e257600080fd5b505af11580156115f6573d6000803e3d6000fd5b505050506040513d602081101561160c57600080fd5b505060408051839133917f0e69fafc3e136b0e61c8f4b408261bd91e605212df6b0f2b4c03d40ec77f8503918591908190839080838360005b8381101561165d578181015183820152602001611645565b5050505090500191505060405180910390a35050565b61167b611940565b6116ba576040805162461bcd60e51b815260206004820181905260248201526000805160206136bb833981519152604482015290519081900360640190fd5b600c546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600c80546001600160a01b0319169055565b6201518081565b600d546040805163543a185d60e11b81526001600160a01b03848116600483015291516060938493600093849384938493169163a87430ba916024808301928a929190829003018186803b15801561176257600080fd5b505afa158015611776573d6000803e3d6000fd5b505050506040513d606081101561178c57600080fd5b5060200151905061179b611304565b600d54604080516303ed69ad60e21b8152905193985091955060009260149284926001600160a01b031691630fb5a6b491600480820192602092909190829003018186803b1580156117ec57600080fd5b505afa158015611800573d6000803e3d6000fd5b505050506040513d602081101561181657600080fd5b505181526020810191909152604001600020549050806118335750825b600d54604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561187857600080fd5b505afa15801561188c573d6000803e3d6000fd5b505050506040513d60208110156118a257600080fd5b505190506118ba816118b48585612628565b90612681565b93506015876118c7612597565b87878480548060200260200160405190810160405280929190818152602001828054801561191457602002820191906000526020600020905b815481526020019060010190808311611900575b505050505094509750975097509750975050505091939590929450565b600c546001600160a01b031690565b600c546000906001600160a01b03166119576126c3565b6001600160a01b031614905090565b600d54604080516305525f4b60e21b815233600482015290516001600160a01b03909216916315497d2c91602480820192602092909190829003018186803b1580156119b157600080fd5b505afa1580156119c5573d6000803e3d6000fd5b505050506040513d60208110156119db57600080fd5b505115611a24576040805162461bcd60e51b815260206004820152601260248201527112185d99481899595b881c9958d95a5d995960721b604482015290519081900360640190fd5b600080600080611a333361170b565b94509450945094505060146000600d60009054906101000a90046001600160a01b03166001600160a01b0316630fb5a6b46040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8e57600080fd5b505afa158015611aa2573d6000803e3d6000fd5b505050506040513d6020811015611ab857600080fd5b50518152602081019190915260400160002054611b60578160146000600d60009054906101000a90046001600160a01b03166001600160a01b0316630fb5a6b46040518163ffffffff1660e01b815260040160206040518083038186803b158015611b2257600080fd5b505afa158015611b36573d6000803e3d6000fd5b505050506040513d6020811015611b4c57600080fd5b505181526020810191909152604001600020555b600d54604080516322f28b4960e01b8152336004820152306024820152604481018d9052606481018c90528a1515608482015260ff8a1660a482015260c4810189905260e4810188905290516001600160a01b03909216916322f28b49916101048082019260009290919082900301818387803b158015611be057600080fd5b505af1158015611bf4573d6000803e3d6000fd5b5050505050505050505050505050565b600e546001600160a01b031681565b611c1b611940565b611c5a576040805162461bcd60e51b815260206004820181905260248201526000805160206136bb833981519152604482015290519081900360640190fd5b600d54604080516370a0823160e01b8152600060048201819052915191926001600160a01b0316916370a0823191602480820192608092909190829003018186803b158015611ca857600080fd5b505afa158015611cbc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506080811015611ce157600080fd5b5080516020808301516040805163e6a4390560e01b81526001600160a01b0394851660048201529184166024830152519394506000939286169263e6a439059260448084019391929182900301818787803b158015611d3f57600080fd5b505af1158015611d53573d6000803e3d6000fd5b505050506040513d6020811015611d6957600080fd5b505160408051634b104eff60e01b81526001600160a01b038781166004830152915192935090831691634b104eff9160248082019260009290919082900301818387803b158015611db957600080fd5b505af1158015611dcd573d6000803e3d6000fd5b5050505050505050565b6013602052600090815260409020600281015460038201546004909201549091906001600160a01b031683565b601260209081526000928352604080842090915290825290208054600182015460029092015460ff91821692911683565b600581565b600a8160028110610ebd57600080fd5b6000611ec0338a8a8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c9182918501908490808284376000920191909152508b92508a91506126c79050565b5063bc197c8160e01b98975050505050505050565b611edd611940565b611f1c576040805162461bcd60e51b815260206004820181905260248201526000805160206136bb833981519152604482015290519081900360640190fd5b600f55565b611f29611940565b611f68576040805162461bcd60e51b815260206004820181905260248201526000805160206136bb833981519152604482015290519081900360640190fd5b601554600185011115611faf57601580546001810182556000919091527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec47501839055611fca565b8260158581548110611fbd57fe5b6000918252602090912001555b604080516060808201835286825260208083018681528385018681526000898152601684528690209451855590516001850155516002909301929092558251878152918201869052818301859052810183905290517f09b0b6997085337b0174d4d379dded7be3b9cd8fb31c3ff91d9a1a1ac3bf0b3e9181900360800190a150505050565b60008381526012602090815260408083206001600160a01b038616845282528083208484526003019091529020549392505050565b61208c611940565b6120cb576040805162461bcd60e51b815260206004820181905260248201526000805160206136bb833981519152604482015290519081900360640190fd5b6000604051806102400160405280600181526020016002815260200160038152602001600481526020016005815260200160068152602001600781526020016008815260200160098152602001600a8152602001600b8152602001600c8152602001600d8152602001600e8152602001600f81526020016010815260200160118152602001601281525090506000604051806102400160405280600181526020016002815260200160058152602001600a8152602001601e815260200160648152602001600181526020016002815260200160058152602001600a8152602001601e815260200160648152602001600a815260200160148152602001603281526020016064815260200161012c81526020016103e881525090506000604051806102400160405280600181526020016002815260200160058152602001600a8152602001601e815260200160648152602001600a815260200160148152602001603281526020016064815260200161012c81526020016103e88152602001600181526020016002815260200160058152602001600a8152602001601e81526020016064815250905061227e83838361277f565b505050565b601760205281600052604060002081600a811061229f57600080fd5b01546001600160a01b03169150829050565b604080516001808252818301909252600091829190602080830190803683375050604080516001808252818301909252929350600092915060208083019080368337019050509050868160008151811061230757fe5b602002602001018181525050858260008151811061232157fe5b60200260200101818152505061233c338a8a84868a8a6126c7565b5063f23a6e6160e01b98975050505050505050565b612359611940565b612398576040805162461bcd60e51b815260206004820181905260248201526000805160206136bb833981519152604482015290519081900360640190fd5b6123a1816127d5565b50565b60166020526000908152604090208054600182015460029092015490919083565b6123cd61355b565b6123d561355b565b6123de83610f3e565b915060005b600a8160ff1610156124285761240c838260ff16600a811061240157fe5b6020020151856125fe565b828260ff16600a811061241b57fe5b60200201526001016123e3565b50915091565b612436613598565b60008481526012602090815260408083206001600160a01b03871684529091528120906124638587610ec4565b905060005b60028160ff16101561258d57600061249e60646118b4604689600001518660ff166002811061249357fe5b602002015190612628565b905060006124bf60646118b4601e8a600001518760ff166002811061249357fe5b90506124fb6124e1600f546118b488600101548661262890919063ffffffff16565b878560ff16600281106124f057fe5b60200201519061259d565b868460ff166002811061250a57fe5b6020020152600a84101561254e576125396124e1601e6118b4600088600a811061253057fe5b01548590612628565b868460ff166002811061254857fe5b60200201525b600285015460ff16156125835761256e6124e1601e6118b4846005612628565b868460ff166002811061257d57fe5b60200201525b5050600101612468565b5050509392505050565b60155490565b6000828201838110156125f7576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60009081526012602090815260408083206001600160a01b03949094168352929052206001015490565b60008261263757506000610b30565b8282028284828161264457fe5b04146125f75760405162461bcd60e51b815260040180806020018281038252602181526020018061369a6021913960400191505060405180910390fd5b60006125f783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612876565b3390565b600e546001600160a01b03888116911614612717576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015290519081900360640190fd5b61272086612918565b1561275c5760405162461bcd60e51b81526004018080602001828103825260228152602001806136786022913960400191505060405180910390fd5b6001600160a01b0385161561277657611dcd85858561294f565b50505050505050565b60005b60128110156127cf576127c78185836012811061279b57fe5b60200201518584601281106127ac57fe5b60200201518585601281106127bd57fe5b6020020151611f21565b600101612782565b50505050565b6001600160a01b03811661281a5760405162461bcd60e51b81526004018080602001828103825260268152602001806136526026913960400191505060405180910390fd5b600c546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600081836129025760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156128c75781810151838201526020016128af565b50505050905090810190601f1680156128f45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161290e57fe5b0495945050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906112fc5750141592915050565b6011546000908152601360205260408120835115801590612971575082518451145b6129aa576040805162461bcd60e51b815260206004820152600560248201526432b93937b960d91b604482015290519081900360640190fd5b60115460009081526012602090815260408083206001600160a01b03891684529091528120819081805b8851811015612b20576000601660008b84815181106129ef57fe5b6020026020010151815260200190815260200160002060405180606001604052908160008201548152602001600182015481526020016002820154815250509050612a64612a5d8a8481518110612a4257fe5b6020026020010151836020015161262890919063ffffffff16565b879061259d565b9550612a9a612a938a8481518110612a7857fe5b6020026020010151836040015161262890919063ffffffff16565b869061259d565b9450612aea898381518110612aab57fe5b60200260200101518560030160008d8681518110612ac557fe5b602002602001015181526020019081526020016000205461259d90919063ffffffff16565b8460030160008c8581518110612afc57fe5b602090810291909101810151825281019190915260400160002055506001016129d4565b5082841115612b30575081612b33565b50825b6002850154600090612b45908661259d565b9050600f548110612bdb576002860154600f54612b6191612e2d565b821115612b7c576002860154600f54612b7991612e2d565b91505b601154604080519182526020820187905281810186905260608201849052516001600160a01b038c16917f15b934b983cb0cdb23fefd8cbdfc5c3ef4435ca0a853682c9e3cbbcff9a0cc65919081900360800190a2612bdb8a87612e6f565b6001830154612bea908361259d565b60018401556002860154612bfe908661259d565b60028701556003860154612c12908361259d565b6003870155612c208a61305e565b600e546001600160a01b0316632eb2c2d630612c3a611931565b8c8c6040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b03168152602001806020018060200180602001848103845286818151815260200191508051906020019060200280838360005b83811015612cb1578181015183820152602001612c99565b50505050905001848103835285818151815260200191508051906020019060200280838360005b83811015612cf0578181015183820152602001612cd8565b5050505090500184810382526007815260200180667375636365737360c81b815250602001975050505050505050600060405180830381600087803b158015612d3857600080fd5b505af1158015612d4c573d6000803e3d6000fd5b505050506011548a6001600160a01b03167f3fbedbb5bdc009e52f382c3fe16d5a77fdd475e47874a7cf63f2e09f8b5ab2f48b8b86604051808060200180602001848152602001838103835286818151815260200191508051906020019060200280838360005b83811015612dcb578181015183820152602001612db3565b50505050905001838103825285818151815260200191508051906020019060200280838360005b83811015612e0a578181015183820152602001612df2565b505050509050019550505050505060405180910390a35098975050505050505050565b60006125f783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613148565b600d54604080516370a0823160e01b8152306004820152905160009283926001600160a01b03909116916370a0823191602480820192608092909190829003018186803b158015612ebf57600080fd5b505afa158015612ed3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506080811015612ef857600080fd5b509150506040810160005b60028160ff161015612f5357612f4b838260ff1660028110612f2157fe5b6020020151600d546001600160a01b03168460ff851660028110612f4157fe5b60200201516131a2565b600101612f03565b50600d5460408051630a1d69ab60e11b81526001600160a01b039092169163143ad356918491600401908190839080838360005b83811015612f9f578181015183820152602001612f87565b50505050905001915050602060405180830381600087803b158015612fc357600080fd5b505af1158015612fd7573d6000803e3d6000fd5b505050506040513d6020811015612fed57600080fd5b50612ffc9050838260026135b6565b506004830180546001600160a01b0319166001600160a01b038616908117909155601154600090815260126020908152604080832093835292905220600201805460ff1916600117905561304f8361330b565b50506011805460010190555050565b601154600090815260176020526040808220815161014081019283905291600a9082845b81546001600160a01b0316815260019091019060200180831161308257505050505090506000806130b3838561346c565b91509150600a82146127cf576130c884613510565b8110156130f057838383600a81106130dc57fe5b6001600160a01b0390921660209290920201525b601154600090815260176020526040902061310d9084600a6135f4565b506040516001600160a01b038516907fa75e450368aff33be855cacd350dc10a172480930245cd2063d2961f865fa4ec90600090a250505050565b6000818484111561319a5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156128c75781810151838201526020016128af565b505050900390565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b1781529251825160009485949389169392918291908083835b6020831061321e5780518252601f1990920191602091820191016131ff565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613280576040519150601f19603f3d011682016040523d82523d6000602084013e613285565b606091505b50915091508180156132b35750805115806132b357508080602001905160208110156132b057600080fd5b50515b613304576040805162461bcd60e51b815260206004820152601e60248201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604482015290519081900360640190fd5b5050505050565b613313613598565b60005b600281101561337e5761336560646118b4600f546118b46133468860030154600f54612e2d90919063ffffffff16565b61335f60468a896002811061335757fe5b015490612628565b90612628565b82826002811061337157fe5b6020020152600101613316565b50600d5460105460408051631e041a2360e31b81526001600160a01b0392831660048201818152939094169363f020d118939092869260240190839080838360005b838110156133d85781810151838201526020016133c0565b5050505090500192505050602060405180830381600087803b1580156133fd57600080fd5b505af1158015613411573d6000803e3d6000fd5b505050506040513d602081101561342757600080fd5b50508051602080830151604080519384529183015280517ff93fcc94135e958bbb9a392bcd0348c8fcecd432ddc7a1ddea6f953b39e8918f9281900390910190a15050565b60008061347f84825b6020020151613510565b905060005b600a8160ff16101561350757836001600160a01b0316858260ff16600a81106134a957fe5b60200201516001600160a01b031614156134cb57600a60009250925050613509565b816134de868360ff16600a811061347557fe5b10156134ff576134f6858260ff16600a811061347557fe5b91508060ff1692505b600101613484565b505b9250929050565b6000610b30826011546125fe565b6040518061010001604052806008906020820280368337509192915050565b60405180606001604052806003906020820280368337509192915050565b604051806101400160405280600a906020820280368337509192915050565b6040518060a001604052806005906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b82600281019282156135e4579160200282015b828111156135e45782518255916020019190600101906135c9565b506135f092915061363c565b5090565b82600a81019282156135e4579160200282015b828111156135e457825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190613607565b5b808211156135f0576000815560010161363d56fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373436f6e747261637420696e766f636174696f6e206973206e6f7420616c6c6f776564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220a024a86ed1e73e87b32e14d130217b02daa073dea891e0ef457b1c3ff437fd2f64736f6c634300070600330000000000000000000000004f4da8070e05447a0c6b3f6d448f332abcd928810000000000000000000000007149eceefa2562e81fd4c20264f81af14de2dc55000000000000000000000000880cff86370fb34b8df28ffed4404fee87f3a0f0
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061021c5760003560e01c80638f32d59b11610125578063d4fd7d22116100ad578063ed272cf11161007c578063ed272cf114610966578063f23a6e6114610989578063f2fde38b14610a1c578063f7746e3614610a42578063fe5d327014610a7d5761021c565b8063d4fd7d22146108e0578063da206389146108fd578063db323abb1461092c578063e1c7392a1461095e5761021c565b8063a7a38f0b116100f4578063a7a38f0b146106e5578063a9ee491f14610729578063ac4d0c3614610777578063afec48c11461077f578063bc197c811461079c5761021c565b80638f32d59b14610667578063912dde351461066f5780639cebb2bd146106af5780639fa0a960146106b75761021c565b80633066ad63116101a8578063699de59a11610177578063699de59a1461055c578063715018a61461057b578063863e76db146105835780638bd46d241461058b5780638da5cb5b1461065f5761021c565b80633066ad63146104a65780633bfb4aa2146104ae57806350a733f0146104f157806354fd4d50146105545761021c565b806315f4774e116101ef57806315f4774e1461038d578063162a9f8d146103aa57806316f0115b14610400578063216b39d01461042457806321df6fce146104415761021c565b806301ffc9a7146102215780630db5c9441461025c5780630ea70ad3146103325780630f122cd314610361575b600080fd5b6102486004803603602081101561023757600080fd5b50356001600160e01b031916610aff565b604080519115158252519081900360200190f35b6102886004803603604081101561027257600080fd5b50803590602001356001600160a01b0316610b36565b604051808461010080838360005b838110156102ae578181015183820152602001610296565b5050505090500183600360200280838360005b838110156102d95781810151838201526020016102c1565b5050505090500180602001828103825283818151815260200191508051906020019060200280838360005b8381101561031c578181015183820152602001610304565b5050505090500194505050505060405180910390f35b61034f6004803603602081101561034857600080fd5b5035610ead565b60408051918252519081900360200190f35b61034f6004803603604081101561037757600080fd5b506001600160a01b038135169060200135610ec4565b61034f600480360360208110156103a357600080fd5b5035610f2c565b6103c7600480360360208110156103c057600080fd5b5035610f3e565b604051808261014080838360005b838110156103ed5781810151838201526020016103d5565b5050505090500191505060405180910390f35b610408611085565b604080516001600160a01b039092168252519081900360200190f35b61034f6004803603602081101561043a57600080fd5b5035611094565b61045e6004803603602081101561045757600080fd5b50356110b5565b604051808360a080838360005b8381101561048357818101518382015260200161046b565b50505050905001826001600160a01b031681526020019250505060405180910390f35b61034f611273565b6104da600480360360408110156104c457600080fd5b50803590602001356001600160a01b0316611279565b6040805182518152908190839080838360206103d5565b6104f9611304565b6040518080602001838152602001828103825284818151815260200191508051906020019060200280838360005b8381101561053f578181015183820152602001610527565b50505050905001935050505060405180910390f35b61034f611489565b6105796004803603602081101561057257600080fd5b503561148f565b005b610579611673565b61034f611704565b6105b1600480360360208110156105a157600080fd5b50356001600160a01b031661170b565b604051808060200180602001868152602001858152602001848152602001838103835288818151815260200191508051906020019060200280838360005b838110156106075781810151838201526020016105ef565b50505050905001838103825287818151815260200191508051906020019060200280838360005b8381101561064657818101518382015260200161062e565b5050505090500197505050505050505060405180910390f35b610408611931565b610248611940565b610579600480360360c081101561068557600080fd5b50803590602081013590604081013515159060ff6060820135169060808101359060a00135611966565b610408611c04565b610579600480360360408110156106cd57600080fd5b506001600160a01b0381358116916020013516611c13565b610702600480360360208110156106fb57600080fd5b5035611dd7565b6040805193845260208401929092526001600160a01b031682820152519081900360600190f35b6107556004803603604081101561073f57600080fd5b50803590602001356001600160a01b0316611e04565b6040805193151584526020840192909252151582820152519081900360600190f35b61034f611e35565b61034f6004803603602081101561079557600080fd5b5035611e3a565b6108c3600480360360a08110156107b257600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156107e557600080fd5b8201836020820111156107f757600080fd5b803590602001918460208302840111600160201b8311171561081857600080fd5b919390929091602081019035600160201b81111561083557600080fd5b82018360208201111561084757600080fd5b803590602001918460208302840111600160201b8311171561086857600080fd5b919390929091602081019035600160201b81111561088557600080fd5b82018360208201111561089757600080fd5b803590602001918460018302840111600160201b831117156108b857600080fd5b509092509050611e4a565b604080516001600160e01b03199092168252519081900360200190f35b610579600480360360208110156108f657600080fd5b5035611ed5565b6105796004803603608081101561091357600080fd5b5080359060208101359060408101359060600135611f21565b61034f6004803603606081101561094257600080fd5b508035906001600160a01b03602082013516906040013561204f565b610579612084565b6104086004803603604081101561097c57600080fd5b5080359060200135612283565b6108c3600480360360a081101561099f57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156109de57600080fd5b8201836020820111156109f057600080fd5b803590602001918460018302840111600160201b83111715610a1157600080fd5b5090925090506122b1565b61057960048036036020811015610a3257600080fd5b50356001600160a01b0316612351565b610a5f60048036036020811015610a5857600080fd5b50356123a4565b60408051938452602084019290925282820152519081900360600190f35b610a9a60048036036020811015610a9357600080fd5b50356123c5565b604051808361014080838360005b83811015610ac0578181015183820152602001610aa8565b5050505090500182600a60200280838360005b83811015610aeb578181015183820152602001610ad3565b505050509050019250505060405180910390f35b60006301ffc9a760e01b6001600160e01b031983161480610b305750630271189760e51b6001600160e01b03198316145b92915050565b610b3e61351e565b610b4661353d565b60008481526012602090815260408083206001600160a01b0380881680865291909352818420600d54835163543a185d60e11b8152600481019390935292516060959194919384938493919091169163a87430ba916024808201928a92909190829003018186803b158015610bba57600080fd5b505afa158015610bce573d6000803e3d6000fd5b505050506040513d6060811015610be457600080fd5b508051602080830151604093840151818c5260018901548c84015260008e81526013909352848320855160c08101968790529498509196509450909282906080820190839060029082845b815481526020019060010190808311610c2f57505050918352505060028201546020820152600382015460408201526004909101546001600160a01b03166060909101526011549091508a1415610d0c57600d54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926080929190829003018186803b158015610ccb57600080fd5b505afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506080811015610d0457600080fd5b506040018252505b6000610d198b8b8461242e565b602081015160408b0152805160608b015260808a0186905260a08a018490529050610d448a8c610ec4565b60010160c08a0152855460ff908116151589526002870154161515602089810191909152600d54604080516305525f4b60e21b81526001600160a01b038e81166004830152915191909216926315497d2c9260248082019391829003018186803b158015610db157600080fd5b505afa158015610dc5573d6000803e3d6000fd5b505050506040513d6020811015610ddb57600080fd5b505115156040890152610dec612597565b67ffffffffffffffff81118015610e0257600080fd5b50604051908082528060200260200182016040528015610e2c578160200160208202803683370190505b5096506000805b610e3b612597565b811015610e95576000610e668e8e60158581548110610e5657fe5b906000526020600020015461204f565b9050808a8381518110610e7557fe5b6020908102919091010152610e8a838261259d565b925050600101610e33565b5060e08a015250969995985093965093945050505050565b600081600a8110610ebd57600080fd5b0154905081565b600080610ed083610f3e565b9050600a60005b600a8160ff161015610f2357828160ff16600a8110610ef257fe5b60200201516001600160a01b0316866001600160a01b03161415610f1b578060ff169150610f23565b600101610ed7565b50949350505050565b60146020526000908152604090205481565b610f4661355b565b60008281526017602052604090819020815161014081019283905291600a9082845b81546001600160a01b03168152600190910190602001808311610f685750505050509050600080600190505b60058160ff16101561107e5760005b8160050360ff168160ff16101561107557610fd4848260010160ff16600a8110610fc957fe5b6020020151866125fe565b610ff1858360ff16600a8110610fe657fe5b6020020151876125fe565b101561106d57838160ff16600a811061100657fe5b60200201519250838160010160ff16600a811061101f57fe5b6020020151848260ff16600a811061103357fe5b6001600160a01b039092166020929092020152828460ff6001840116600a811061105957fe5b6001600160a01b0390921660209290920201525b600101610fa3565b50600101610f94565b5050919050565b600d546001600160a01b031681565b601581815481106110a457600080fd5b600091825260209091200154905081565b6110bd61357a565b600082815260136020526040808220815160c0810190925282919081608081018260028282826020028201915b8154815260200190600101908083116110ea57505050918352505060028201546020820152600382015460408201526004909101546001600160a01b03166060909101526011549091508414156111c757600d54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926080929190829003018186803b15801561118657600080fd5b505afa15801561119a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060808110156111bf57600080fd5b506040018252505b805151835280516020908101518185015280820151604080860191909152808301516060860152600d5481516303ed69ad60e21b8152915162015180936001600160a01b0390921692630fb5a6b4926004808301939192829003018186803b15801561123257600080fd5b505afa158015611246573d6000803e3d6000fd5b505050506040513d602081101561125c57600080fd5b505160010102608084015260600151919391925050565b600f5481565b611281613598565b600083815260136020526040808220815160c0810190925281608081018260028282826020028201915b8154815260200190600101908083116112ab57505050918352505060028201546020820152600382015460408201526004909101546001600160a01b031660609091015290506112fc84848361242e565b949350505050565b6060600080611311611931565b905061131b612597565b67ffffffffffffffff8111801561133157600080fd5b5060405190808252806020026020018201604052801561135b578160200160208202803683370190505b50925060005b611369612597565b8160ff16101561144557600e54601580546000926001600160a01b03169162fdd58e9186919060ff871690811061139c57fe5b90600052602060002001546040518363ffffffff1660e01b815260040180836001600160a01b031681526020018281526020019250505060206040518083038186803b1580156113eb57600080fd5b505afa1580156113ff573d6000803e3d6000fd5b505050506040513d602081101561141557600080fd5b505185519091508190869060ff851690811061142d57fe5b60209081029190910101529290920191600101611361565b5060005b611451612597565b8160ff16101561148357838160ff168151811061146a57fe5b6020026020010151830192508080600101915050611449565b50509091565b60115481565b600081815260126020908152604080832033845290915290205460ff16156114f0576040805162461bcd60e51b815260206004820152600f60248201526e1a185d99481dda5d1a191c985dd85b608a1b604482015290519081900360640190fd5b6011548110611537576040805162461bcd60e51b815260206004820152600e60248201526d22bb32b73a103737ba1037bb32b960911b604482015290519081900360640190fd5b60006115438233611279565b6000838152601260209081526040808320338085529252808320805460ff19166001179055600d548151631e041a2360e31b8152600481018481529596506001600160a01b03919091169463f020d11894879391926024019184918190849084905b838110156115bd5781810151838201526020016115a5565b5050505090500192505050602060405180830381600087803b1580156115e257600080fd5b505af11580156115f6573d6000803e3d6000fd5b505050506040513d602081101561160c57600080fd5b505060408051839133917f0e69fafc3e136b0e61c8f4b408261bd91e605212df6b0f2b4c03d40ec77f8503918591908190839080838360005b8381101561165d578181015183820152602001611645565b5050505090500191505060405180910390a35050565b61167b611940565b6116ba576040805162461bcd60e51b815260206004820181905260248201526000805160206136bb833981519152604482015290519081900360640190fd5b600c546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600c80546001600160a01b0319169055565b6201518081565b600d546040805163543a185d60e11b81526001600160a01b03848116600483015291516060938493600093849384938493169163a87430ba916024808301928a929190829003018186803b15801561176257600080fd5b505afa158015611776573d6000803e3d6000fd5b505050506040513d606081101561178c57600080fd5b5060200151905061179b611304565b600d54604080516303ed69ad60e21b8152905193985091955060009260149284926001600160a01b031691630fb5a6b491600480820192602092909190829003018186803b1580156117ec57600080fd5b505afa158015611800573d6000803e3d6000fd5b505050506040513d602081101561181657600080fd5b505181526020810191909152604001600020549050806118335750825b600d54604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561187857600080fd5b505afa15801561188c573d6000803e3d6000fd5b505050506040513d60208110156118a257600080fd5b505190506118ba816118b48585612628565b90612681565b93506015876118c7612597565b87878480548060200260200160405190810160405280929190818152602001828054801561191457602002820191906000526020600020905b815481526020019060010190808311611900575b505050505094509750975097509750975050505091939590929450565b600c546001600160a01b031690565b600c546000906001600160a01b03166119576126c3565b6001600160a01b031614905090565b600d54604080516305525f4b60e21b815233600482015290516001600160a01b03909216916315497d2c91602480820192602092909190829003018186803b1580156119b157600080fd5b505afa1580156119c5573d6000803e3d6000fd5b505050506040513d60208110156119db57600080fd5b505115611a24576040805162461bcd60e51b815260206004820152601260248201527112185d99481899595b881c9958d95a5d995960721b604482015290519081900360640190fd5b600080600080611a333361170b565b94509450945094505060146000600d60009054906101000a90046001600160a01b03166001600160a01b0316630fb5a6b46040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8e57600080fd5b505afa158015611aa2573d6000803e3d6000fd5b505050506040513d6020811015611ab857600080fd5b50518152602081019190915260400160002054611b60578160146000600d60009054906101000a90046001600160a01b03166001600160a01b0316630fb5a6b46040518163ffffffff1660e01b815260040160206040518083038186803b158015611b2257600080fd5b505afa158015611b36573d6000803e3d6000fd5b505050506040513d6020811015611b4c57600080fd5b505181526020810191909152604001600020555b600d54604080516322f28b4960e01b8152336004820152306024820152604481018d9052606481018c90528a1515608482015260ff8a1660a482015260c4810189905260e4810188905290516001600160a01b03909216916322f28b49916101048082019260009290919082900301818387803b158015611be057600080fd5b505af1158015611bf4573d6000803e3d6000fd5b5050505050505050505050505050565b600e546001600160a01b031681565b611c1b611940565b611c5a576040805162461bcd60e51b815260206004820181905260248201526000805160206136bb833981519152604482015290519081900360640190fd5b600d54604080516370a0823160e01b8152600060048201819052915191926001600160a01b0316916370a0823191602480820192608092909190829003018186803b158015611ca857600080fd5b505afa158015611cbc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506080811015611ce157600080fd5b5080516020808301516040805163e6a4390560e01b81526001600160a01b0394851660048201529184166024830152519394506000939286169263e6a439059260448084019391929182900301818787803b158015611d3f57600080fd5b505af1158015611d53573d6000803e3d6000fd5b505050506040513d6020811015611d6957600080fd5b505160408051634b104eff60e01b81526001600160a01b038781166004830152915192935090831691634b104eff9160248082019260009290919082900301818387803b158015611db957600080fd5b505af1158015611dcd573d6000803e3d6000fd5b5050505050505050565b6013602052600090815260409020600281015460038201546004909201549091906001600160a01b031683565b601260209081526000928352604080842090915290825290208054600182015460029092015460ff91821692911683565b600581565b600a8160028110610ebd57600080fd5b6000611ec0338a8a8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c9182918501908490808284376000920191909152508b92508a91506126c79050565b5063bc197c8160e01b98975050505050505050565b611edd611940565b611f1c576040805162461bcd60e51b815260206004820181905260248201526000805160206136bb833981519152604482015290519081900360640190fd5b600f55565b611f29611940565b611f68576040805162461bcd60e51b815260206004820181905260248201526000805160206136bb833981519152604482015290519081900360640190fd5b601554600185011115611faf57601580546001810182556000919091527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec47501839055611fca565b8260158581548110611fbd57fe5b6000918252602090912001555b604080516060808201835286825260208083018681528385018681526000898152601684528690209451855590516001850155516002909301929092558251878152918201869052818301859052810183905290517f09b0b6997085337b0174d4d379dded7be3b9cd8fb31c3ff91d9a1a1ac3bf0b3e9181900360800190a150505050565b60008381526012602090815260408083206001600160a01b038616845282528083208484526003019091529020549392505050565b61208c611940565b6120cb576040805162461bcd60e51b815260206004820181905260248201526000805160206136bb833981519152604482015290519081900360640190fd5b6000604051806102400160405280600181526020016002815260200160038152602001600481526020016005815260200160068152602001600781526020016008815260200160098152602001600a8152602001600b8152602001600c8152602001600d8152602001600e8152602001600f81526020016010815260200160118152602001601281525090506000604051806102400160405280600181526020016002815260200160058152602001600a8152602001601e815260200160648152602001600181526020016002815260200160058152602001600a8152602001601e815260200160648152602001600a815260200160148152602001603281526020016064815260200161012c81526020016103e881525090506000604051806102400160405280600181526020016002815260200160058152602001600a8152602001601e815260200160648152602001600a815260200160148152602001603281526020016064815260200161012c81526020016103e88152602001600181526020016002815260200160058152602001600a8152602001601e81526020016064815250905061227e83838361277f565b505050565b601760205281600052604060002081600a811061229f57600080fd5b01546001600160a01b03169150829050565b604080516001808252818301909252600091829190602080830190803683375050604080516001808252818301909252929350600092915060208083019080368337019050509050868160008151811061230757fe5b602002602001018181525050858260008151811061232157fe5b60200260200101818152505061233c338a8a84868a8a6126c7565b5063f23a6e6160e01b98975050505050505050565b612359611940565b612398576040805162461bcd60e51b815260206004820181905260248201526000805160206136bb833981519152604482015290519081900360640190fd5b6123a1816127d5565b50565b60166020526000908152604090208054600182015460029092015490919083565b6123cd61355b565b6123d561355b565b6123de83610f3e565b915060005b600a8160ff1610156124285761240c838260ff16600a811061240157fe5b6020020151856125fe565b828260ff16600a811061241b57fe5b60200201526001016123e3565b50915091565b612436613598565b60008481526012602090815260408083206001600160a01b03871684529091528120906124638587610ec4565b905060005b60028160ff16101561258d57600061249e60646118b4604689600001518660ff166002811061249357fe5b602002015190612628565b905060006124bf60646118b4601e8a600001518760ff166002811061249357fe5b90506124fb6124e1600f546118b488600101548661262890919063ffffffff16565b878560ff16600281106124f057fe5b60200201519061259d565b868460ff166002811061250a57fe5b6020020152600a84101561254e576125396124e1601e6118b4600088600a811061253057fe5b01548590612628565b868460ff166002811061254857fe5b60200201525b600285015460ff16156125835761256e6124e1601e6118b4846005612628565b868460ff166002811061257d57fe5b60200201525b5050600101612468565b5050509392505050565b60155490565b6000828201838110156125f7576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60009081526012602090815260408083206001600160a01b03949094168352929052206001015490565b60008261263757506000610b30565b8282028284828161264457fe5b04146125f75760405162461bcd60e51b815260040180806020018281038252602181526020018061369a6021913960400191505060405180910390fd5b60006125f783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612876565b3390565b600e546001600160a01b03888116911614612717576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015290519081900360640190fd5b61272086612918565b1561275c5760405162461bcd60e51b81526004018080602001828103825260228152602001806136786022913960400191505060405180910390fd5b6001600160a01b0385161561277657611dcd85858561294f565b50505050505050565b60005b60128110156127cf576127c78185836012811061279b57fe5b60200201518584601281106127ac57fe5b60200201518585601281106127bd57fe5b6020020151611f21565b600101612782565b50505050565b6001600160a01b03811661281a5760405162461bcd60e51b81526004018080602001828103825260268152602001806136526026913960400191505060405180910390fd5b600c546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600081836129025760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156128c75781810151838201526020016128af565b50505050905090810190601f1680156128f45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161290e57fe5b0495945050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906112fc5750141592915050565b6011546000908152601360205260408120835115801590612971575082518451145b6129aa576040805162461bcd60e51b815260206004820152600560248201526432b93937b960d91b604482015290519081900360640190fd5b60115460009081526012602090815260408083206001600160a01b03891684529091528120819081805b8851811015612b20576000601660008b84815181106129ef57fe5b6020026020010151815260200190815260200160002060405180606001604052908160008201548152602001600182015481526020016002820154815250509050612a64612a5d8a8481518110612a4257fe5b6020026020010151836020015161262890919063ffffffff16565b879061259d565b9550612a9a612a938a8481518110612a7857fe5b6020026020010151836040015161262890919063ffffffff16565b869061259d565b9450612aea898381518110612aab57fe5b60200260200101518560030160008d8681518110612ac557fe5b602002602001015181526020019081526020016000205461259d90919063ffffffff16565b8460030160008c8581518110612afc57fe5b602090810291909101810151825281019190915260400160002055506001016129d4565b5082841115612b30575081612b33565b50825b6002850154600090612b45908661259d565b9050600f548110612bdb576002860154600f54612b6191612e2d565b821115612b7c576002860154600f54612b7991612e2d565b91505b601154604080519182526020820187905281810186905260608201849052516001600160a01b038c16917f15b934b983cb0cdb23fefd8cbdfc5c3ef4435ca0a853682c9e3cbbcff9a0cc65919081900360800190a2612bdb8a87612e6f565b6001830154612bea908361259d565b60018401556002860154612bfe908661259d565b60028701556003860154612c12908361259d565b6003870155612c208a61305e565b600e546001600160a01b0316632eb2c2d630612c3a611931565b8c8c6040518563ffffffff1660e01b815260040180856001600160a01b03168152602001846001600160a01b03168152602001806020018060200180602001848103845286818151815260200191508051906020019060200280838360005b83811015612cb1578181015183820152602001612c99565b50505050905001848103835285818151815260200191508051906020019060200280838360005b83811015612cf0578181015183820152602001612cd8565b5050505090500184810382526007815260200180667375636365737360c81b815250602001975050505050505050600060405180830381600087803b158015612d3857600080fd5b505af1158015612d4c573d6000803e3d6000fd5b505050506011548a6001600160a01b03167f3fbedbb5bdc009e52f382c3fe16d5a77fdd475e47874a7cf63f2e09f8b5ab2f48b8b86604051808060200180602001848152602001838103835286818151815260200191508051906020019060200280838360005b83811015612dcb578181015183820152602001612db3565b50505050905001838103825285818151815260200191508051906020019060200280838360005b83811015612e0a578181015183820152602001612df2565b505050509050019550505050505060405180910390a35098975050505050505050565b60006125f783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613148565b600d54604080516370a0823160e01b8152306004820152905160009283926001600160a01b03909116916370a0823191602480820192608092909190829003018186803b158015612ebf57600080fd5b505afa158015612ed3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506080811015612ef857600080fd5b509150506040810160005b60028160ff161015612f5357612f4b838260ff1660028110612f2157fe5b6020020151600d546001600160a01b03168460ff851660028110612f4157fe5b60200201516131a2565b600101612f03565b50600d5460408051630a1d69ab60e11b81526001600160a01b039092169163143ad356918491600401908190839080838360005b83811015612f9f578181015183820152602001612f87565b50505050905001915050602060405180830381600087803b158015612fc357600080fd5b505af1158015612fd7573d6000803e3d6000fd5b505050506040513d6020811015612fed57600080fd5b50612ffc9050838260026135b6565b506004830180546001600160a01b0319166001600160a01b038616908117909155601154600090815260126020908152604080832093835292905220600201805460ff1916600117905561304f8361330b565b50506011805460010190555050565b601154600090815260176020526040808220815161014081019283905291600a9082845b81546001600160a01b0316815260019091019060200180831161308257505050505090506000806130b3838561346c565b91509150600a82146127cf576130c884613510565b8110156130f057838383600a81106130dc57fe5b6001600160a01b0390921660209290920201525b601154600090815260176020526040902061310d9084600a6135f4565b506040516001600160a01b038516907fa75e450368aff33be855cacd350dc10a172480930245cd2063d2961f865fa4ec90600090a250505050565b6000818484111561319a5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156128c75781810151838201526020016128af565b505050900390565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b1781529251825160009485949389169392918291908083835b6020831061321e5780518252601f1990920191602091820191016131ff565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613280576040519150601f19603f3d011682016040523d82523d6000602084013e613285565b606091505b50915091508180156132b35750805115806132b357508080602001905160208110156132b057600080fd5b50515b613304576040805162461bcd60e51b815260206004820152601e60248201527f5472616e7366657248656c7065723a20415050524f56455f4641494c45440000604482015290519081900360640190fd5b5050505050565b613313613598565b60005b600281101561337e5761336560646118b4600f546118b46133468860030154600f54612e2d90919063ffffffff16565b61335f60468a896002811061335757fe5b015490612628565b90612628565b82826002811061337157fe5b6020020152600101613316565b50600d5460105460408051631e041a2360e31b81526001600160a01b0392831660048201818152939094169363f020d118939092869260240190839080838360005b838110156133d85781810151838201526020016133c0565b5050505090500192505050602060405180830381600087803b1580156133fd57600080fd5b505af1158015613411573d6000803e3d6000fd5b505050506040513d602081101561342757600080fd5b50508051602080830151604080519384529183015280517ff93fcc94135e958bbb9a392bcd0348c8fcecd432ddc7a1ddea6f953b39e8918f9281900390910190a15050565b60008061347f84825b6020020151613510565b905060005b600a8160ff16101561350757836001600160a01b0316858260ff16600a81106134a957fe5b60200201516001600160a01b031614156134cb57600a60009250925050613509565b816134de868360ff16600a811061347557fe5b10156134ff576134f6858260ff16600a811061347557fe5b91508060ff1692505b600101613484565b505b9250929050565b6000610b30826011546125fe565b6040518061010001604052806008906020820280368337509192915050565b60405180606001604052806003906020820280368337509192915050565b604051806101400160405280600a906020820280368337509192915050565b6040518060a001604052806005906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b82600281019282156135e4579160200282015b828111156135e45782518255916020019190600101906135c9565b506135f092915061363c565b5090565b82600a81019282156135e4579160200282015b828111156135e457825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190613607565b5b808211156135f0576000815560010161363d56fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373436f6e747261637420696e766f636174696f6e206973206e6f7420616c6c6f776564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220a024a86ed1e73e87b32e14d130217b02daa073dea891e0ef457b1c3ff437fd2f64736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004f4da8070e05447a0c6b3f6d448f332abcd928810000000000000000000000007149eceefa2562e81fd4c20264f81af14de2dc55000000000000000000000000880cff86370fb34b8df28ffed4404fee87f3a0f0
-----Decoded View---------------
Arg [0] : _pool (address): 0x4f4Da8070E05447A0C6b3f6d448F332aBcd92881
Arg [1] : _token1155 (address): 0x7149eCeeFA2562e81fD4c20264F81af14de2dc55
Arg [2] : _developer (address): 0x880Cff86370FB34b8df28FFeD4404feE87F3a0f0
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000004f4da8070e05447a0c6b3f6d448f332abcd92881
Arg [1] : 0000000000000000000000007149eceefa2562e81fd4c20264f81af14de2dc55
Arg [2] : 000000000000000000000000880cff86370fb34b8df28ffed4404fee87f3a0f0
Deployed Bytecode Sourcemap
3349:15835:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2671:244;;;;;;;;;;;;;;;;-1:-1:-1;2671:244:3;-1:-1:-1;;;;;;2671:244:3;;:::i;:::-;;;;;;;;;;;;;;;;;;11709:1331;;;;;;;;;;;;;;;;-1:-1:-1;11709:1331:3;;;;;;-1:-1:-1;;;;;11709:1331:3;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3173:66;;;;;;;;;;;;;;;;-1:-1:-1;3173:66:3;;:::i;:::-;;;;;;;;;;;;;;;;14829:381;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14829:381:3;;;;;;;;:::i;4647:44::-;;;;;;;;;;;;;;;;-1:-1:-1;4647:44:3;;:::i;16199:508::-;;;;;;;;;;;;;;;;-1:-1:-1;16199:508:3;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3638:22;;;:::i;:::-;;;;-1:-1:-1;;;;;3638:22:3;;;;;;;;;;;;;;4747:25;;;;;;;;;;;;;;;;-1:-1:-1;4747:25:3;;:::i;10842:565::-;;;;;;;;;;;;;;;;-1:-1:-1;10842:565:3;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10842:565:3;;;;;;;;;;;;;;;;3712:37;;;:::i;9746:221::-;;;;;;;;;;;;;;;;-1:-1:-1;9746:221:3;;;;;;-1:-1:-1;;;;;9746:221:3;;:::i;:::-;;;;;;;;;;;;;;;;;;;18623:461;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4343:22;;;:::i;9281:450::-;;;;;;;;;;;;;;;;-1:-1:-1;9281:450:3;;:::i;:::-;;993:137:4;;;:::i;3122:40:3:-;;;:::i;17975:638::-;;;;;;;;;;;;;;;;-1:-1:-1;17975:638:3;-1:-1:-1;;;;;17975:638:3;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;688:77:4;;;:::i;890:92::-;;;:::i;7454:1817:3:-;;;;;;;;;;;;;;;;-1:-1:-1;7454:1817:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3671:25::-;;;:::i;6614:278::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6614:278:3;;;;;;;;;;:::i;4580:37::-;;;;;;;;;;;;;;;;-1:-1:-1;4580:37:3;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;4580:37:3;;;;;;;;;;;;;;4477:57;;;;;;;;;;;;;;;;-1:-1:-1;4477:57:3;;;;;;-1:-1:-1;;;;;4477:57:3;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3250:46;;;:::i;3307:35::-;;;;;;;;;;;;;;;;-1:-1:-1;3307:35:3;;:::i;2333:300::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2333:300:3;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2333:300:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2333:300:3;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2333:300:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2333:300:3;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2333:300:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2333:300:3;;;;;;;;;;-1:-1:-1;2333:300:3;;-1:-1:-1;2333:300:3;-1:-1:-1;2333:300:3;:::i;:::-;;;;-1:-1:-1;;;;;;2333:300:3;;;;;;;;;;;;;;6907:98;;;;;;;;;;;;;;;;-1:-1:-1;6907:98:3;;:::i;5954:372::-;;;;;;;;;;;;;;;;-1:-1:-1;5954:372:3;;;;;;;;;;;;;;;;;:::i;13052:174::-;;;;;;;;;;;;;;;;-1:-1:-1;13052:174:3;;;-1:-1:-1;;;;;13052:174:3;;;;;;;;;;:::i;5525:393::-;;;:::i;4872:42::-;;;;;;;;;;;;;;;;-1:-1:-1;4872:42:3;;;;;;;:::i;1898:429::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1898:429:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1898:429:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1898:429:3;;;;;;;;;;-1:-1:-1;1898:429:3;;-1:-1:-1;1898:429:3;-1:-1:-1;1898:429:3;:::i;1141:107:4:-;;;;;;;;;;;;;;;;-1:-1:-1;1141:107:4;-1:-1:-1;;;;;1141:107:4;;:::i;4828:33:3:-;;;;;;;;;;;;;;;;-1:-1:-1;4828:33:3;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;11422:272;;;;;;;;;;;;;;;;-1:-1:-1;11422:272:3;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2671:244;2750:4;-1:-1:-1;;;;;;;;;2774:25:3;;;;:83;;-1:-1:-1;;;;;;;;;;2832:25:3;;;2774:83;2766:91;2671:244;-1:-1:-1;;2671:244:3:o;11709:1331::-;11796:23;;:::i;:::-;11820:21;;:::i;:::-;11877;11901:17;;;:7;:17;;;;;;;;-1:-1:-1;;;;;11901:30:3;;;;;;;;;;;;;12004:4;;:23;;-1:-1:-1;;;12004:23:3;;;;;;;;;;;11842:24;;11901:30;;11877:21;;;;;;12004:4;;;;;:10;;:23;;;;;11842:24;;12004:23;;;;;;;;:4;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12004:23:3;;;;;;;;;;;;12037:21;;;12079:15;;;;12068:8;;;:26;12043:1;12133:17;;;:7;:17;;;;;;12114:36;;;;;;;;;12004:23;;-1:-1:-1;12004:23:3;;-1:-1:-1;12004:23:3;-1:-1:-1;12043:1:3;;12114:36;;;;;;12133:17;;12114:36;;12133:17;12114:36;;;;;;;;;;;;;;;;;-1:-1:-1;;;12114:36:3;;;-1:-1:-1;;12114:36:3;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12114:36:3;;;;;;12183:7;;12114:36;;-1:-1:-1;12173:17:3;;12170:144;;;12237:4;;:29;;;-1:-1:-1;;;12237:29:3;;12260:4;12237:29;;;;;;12207:26;;-1:-1:-1;;;;;12237:4:3;;:14;;:29;;;;;;;;;;;;;;:4;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12237:29:3;;12280:23;;-1:-1:-1;12170:144:3;12333:25;12361:42;12377:8;12386:11;12398:4;12361:15;:42::i;:::-;12434:10;;;;12423:8;;;:21;12465:10;;12454:8;;;:21;12485:8;;;:13;;;12508:8;;;:21;;;12333:70;-1:-1:-1;12550:32:3;12561:11;12573:8;12550:10;:32::i;:::-;12583:1;12550:34;12539:8;;;:45;12616:17;;;;;;12604:29;;;;12655:16;;;;;12643:28;;12539:8;12643:9;;;:28;;;;12693:4;;:28;;;-1:-1:-1;;;12693:28:3;;-1:-1:-1;;;;;12693:28:3;;;;;;;;;:4;;;;;:15;;:28;;;;;;;;;;;:4;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12693:28:3;12681:40;;:9;;;:40;12765:7;:5;:7::i;:::-;12751:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12751:22:3;-1:-1:-1;12741:32:3;-1:-1:-1;12783:13:3;;12806:192;12825:7;:5;:7::i;:::-;12823:1;:9;12806:192;;;12851:14;12868:47;12882:8;12891:11;12903:8;12912:1;12903:11;;;;;;;;;;;;;;;;12868:13;:47::i;:::-;12851:64;;12942:6;12929:7;12937:1;12929:10;;;;;;;;;;;;;;;;;:19;12970:17;:5;12980:6;12970:9;:17::i;:::-;12962:25;-1:-1:-1;;12833:3:3;;12806:192;;;-1:-1:-1;13007:8:3;;;:16;-1:-1:-1;13007:5:3;;11709:1331;;-1:-1:-1;11709:1331:3;;-1:-1:-1;11709:1331:3;;-1:-1:-1;;;;;11709:1331:3:o;3173:66::-;;;;;;;;;;;;;;;-1:-1:-1;3173:66:3;:::o;14829:381::-;14907:7;14925:30;14958:18;14967:8;14958;:18::i;:::-;14925:51;-1:-1:-1;15004:2:3;14986:15;15016:164;15033:18;15031:1;:20;;;15016:164;;;15088:11;15100:1;15088:14;;;;;;;;;;;;;-1:-1:-1;;;;;15073:29:3;:11;-1:-1:-1;;;;;15073:29:3;;15070:100;;;15131:1;15121:11;;;;15150:5;;15070:100;15052:3;;15016:164;;;-1:-1:-1;15196:7:3;14829:381;-1:-1:-1;;;;14829:381:3:o;4647:44::-;;;;;;;;;;;;;:::o;16199:508::-;16255:26;;:::i;:::-;16302:14;;;;:4;:14;;;;;;;16292:24;;;;;;;;;;;;16302:14;16292:24;;;;-1:-1:-1;;;;;16292:24:3;;;;;;;;;;;;;;;;;;;;;;16335:11;16360:7;16370:1;16360:11;;16356:321;16374:1;16372;:3;;;16356:321;;;16398:7;16394:273;16414:1;16412;:3;16410:5;;:1;:5;;;16394:273;;;16474:34;16486:7;16494:1;16496;16494:3;16486:12;;;;;;;;;;;;;16499:8;16474:11;:34::i;:::-;16441:32;16453:7;16461:1;16453:10;;;;;;;;;;;;;16464:8;16441:11;:32::i;:::-;:67;16438:215;;;16537:7;16545:1;16537:10;;;;;;;;;;;;;16531:16;;16582:7;16590:1;16592;16590:3;16582:12;;;;;;;;;;;;;16569:7;16577:1;16569:10;;;;;;;;;-1:-1:-1;;;;;16569:25:3;;;:10;;;;;;:25;16631:3;16616:7;:12;16626:1;16624:3;;16616:12;;;;;;;;-1:-1:-1;;;;;16616:18:3;;;:12;;;;;;:18;16438:215;16416:3;;16394:273;;;-1:-1:-1;16376:3:3;;16356:321;;;;16686:14;16199:508;;;:::o;3638:22::-;;;-1:-1:-1;;;;;3638:22:3;;:::o;4747:25::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4747:25:3;:::o;10842:565::-;10907:23;;:::i;:::-;10931:21;10992:17;;;:7;:17;;;;;;10973:36;;;;;;;;10931:21;;10973:36;;;;;10992:17;10973:36;;10992:17;10973:36;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10973:36:3;;;-1:-1:-1;;10973:36:3;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10973:36:3;;;;;;11032:7;;10973:36;;-1:-1:-1;11022:17:3;;11019:144;;;11086:4;;:29;;;-1:-1:-1;;;11086:29:3;;11109:4;11086:29;;;;;;11056:26;;-1:-1:-1;;;;;11086:4:3;;:14;;:29;;;;;;;;;;;;;;:4;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11086:29:3;;11129:23;;-1:-1:-1;11019:144:3;11192:12;;:15;11181:26;;11228:12;;11192:15;11228;;;;11217:8;;;:26;11264:13;;;;11253:8;;;;:24;;;;11298:11;;;;11287:8;;;:22;11331:4;;:15;;-1:-1:-1;;;11331:15:3;;;;3156:6;;-1:-1:-1;;;;;11331:4:3;;;;:13;;:15;;;;;11192;;11331;;;;;:4;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11331:15:3;11347:1;11331:17;11330:27;11319:8;;;:38;11383:14;;;11319:5;;11383:14;;-1:-1:-1;;10842:565:3:o;3712:37::-;;;;:::o;9746:221::-;9829:25;;:::i;:::-;9865:16;9884:17;;;:7;:17;;;;;;9865:36;;;;;;;;;;;;9884:17;9865:36;;9884:17;9865:36;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9865:36:3;;;-1:-1:-1;;9865:36:3;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9865:36:3;;;;;;;-1:-1:-1;9918:42:3;9934:8;9943:11;9865:36;9918:15;:42::i;:::-;9911:49;9746:221;-1:-1:-1;;;;9746:221:3:o;18623:461::-;18666:23;18690;18724:14;18741:7;:5;:7::i;:::-;18724:24;;18781:7;:5;:7::i;:::-;18767:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18767:22:3;;18758:31;;18803:7;18799:177;18817:7;:5;:7::i;:::-;18815:1;:9;;;18799:177;;;18859:9;;18886:8;:11;;18843:13;;-1:-1:-1;;;;;18859:9:3;;:19;;18879:6;;18886:8;:11;;;;;;;;;;;;;;;;;;18859:39;;;;;;;;;;;;;-1:-1:-1;;;;;18859:39:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18859:39:3;18912:9;;18859:39;;-1:-1:-1;18859:39:3;;18912:6;;:9;;;;;;;;;;;;;;;;;;;:17;18943:22;;;;;18825:3;;18799:177;;;;18992:7;18988:81;19006:7;:5;:7::i;:::-;19004:1;:9;;;18988:81;;;19049:6;19056:1;19049:9;;;;;;;;;;;;;;;;19032:26;;;;19014:3;;;;;;;18988:81;;;;18623:461;;;:::o;4343:22::-;;;;:::o;9281:450::-;9356:17;;;;:7;:17;;;;;;;;9374:10;9356:29;;;;;;;:40;;;9355:41;9347:68;;;;;-1:-1:-1;;;9347:68:3;;;;;;;;;;;;-1:-1:-1;;;9347:68:3;;;;;;;;;;;;;;;9438:7;;9429:8;:16;9421:42;;;;;-1:-1:-1;;;9421:42:3;;;;;;;;;;;;-1:-1:-1;;;9421:42:3;;;;;;;;;;;;;;;9482:25;9512:36;9528:8;9537:10;9512:15;:36::i;:::-;9558:17;;;;:7;:17;;;;;;;;9576:10;9558:29;;;;;;;;:47;;-1:-1:-1;;9558:47:3;9601:4;9558:47;;;9622:4;;:30;;-1:-1:-1;;;9622:30:3;;;;;;;;9481:67;;-1:-1:-1;;;;;;9622:4:3;;;;;:10;;9481:67;;9622:30;;;;;9481:67;;9558:17;;9622:30;;9481:67;;9622:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9674:42:3;;;9699:8;;9688:10;;9674:42;;9708:7;;9674:42;;;9708:7;;9674:42;;9708:7;9674:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9281:450;;:::o;993:137:4:-;815:9;:7;:9::i;:::-;807:54;;;;;-1:-1:-1;;;807:54:4;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;807:54:4;;;;;;;;;;;;;;;1075:6:::1;::::0;1054:40:::1;::::0;1091:1:::1;::::0;-1:-1:-1;;;;;1075:6:4::1;::::0;1054:40:::1;::::0;1091:1;;1054:40:::1;1104:6;:19:::0;;-1:-1:-1;;;;;;1104:19:4::1;::::0;;993:137::o;3122:40:3:-;3156:6;3122:40;:::o;17975:638::-;18169:4;;:23;;;-1:-1:-1;;;18169:23:3;;-1:-1:-1;;;;;18169:23:3;;;;;;;;;18029:16;;;;18070:11;;;;;;;;18169:4;;:10;;:23;;;;;18029:16;;18169:23;;;;;;;:4;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18169:23:3;;;;-1:-1:-1;18238:13:3;:11;:13::i;:::-;18302:4;;:15;;;-1:-1:-1;;;18302:15:3;;;;18211:40;;-1:-1:-1;18211:40:3;;-1:-1:-1;18263:24:3;;18290:11;;18263:24;;-1:-1:-1;;;;;18302:4:3;;:13;;:15;;;;;;;;;;;;;;;:4;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18302:15:3;18290:28;;18302:15;18290:28;;;;;;;;-1:-1:-1;18290:28:3;;;-1:-1:-1;18331:19:3;18328:82;;-1:-1:-1;18384:15:3;18328:82;18441:4;;:18;;;-1:-1:-1;;;18441:18:3;;;;18419:19;;-1:-1:-1;;;;;18441:4:3;;:16;;:18;;;;;;;;;;;;;;:4;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18441:18:3;;-1:-1:-1;18480:49:3;18441:18;18480:32;:10;18495:16;18480:14;:32::i;:::-;:36;;:49::i;:::-;18469:60;;18556:8;18565:6;18572:7;:5;:7::i;:::-;18580:15;18596:8;18548:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17975:638;;;;;;;:::o;688:77:4:-;752:6;;-1:-1:-1;;;;;752:6:4;688:77;:::o;890:92::-;969:6;;930:4;;-1:-1:-1;;;;;969:6:4;953:12;:10;:12::i;:::-;-1:-1:-1;;;;;953:22:4;;946:29;;890:92;:::o;7454:1817:3:-;7575:4;;:27;;;-1:-1:-1;;;7575:27:3;;7591:10;7575:27;;;;;;-1:-1:-1;;;;;7575:4:3;;;;:15;;:27;;;;;;;;;;;;;;;:4;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7575:27:3;7574:28;7566:58;;;;;-1:-1:-1;;;7566:58:3;;;;;;;;;;;;-1:-1:-1;;;7566:58:3;;;;;;;;;;;;;;;7638:23;7662:11;7674:23;7698:16;7718:15;7722:10;7718:3;:15::i;:::-;7636:97;;;;;;;;;7764:11;:28;7776:4;;;;;;;;;-1:-1:-1;;;;;7776:4:3;-1:-1:-1;;;;;7776:13:3;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7776:15:3;7764:28;;7776:15;7764:28;;;;;;;;-1:-1:-1;7764:28:3;;7761:116;;7846:15;7815:11;:28;7827:4;;;;;;;;;-1:-1:-1;;;;;7827:4:3;-1:-1:-1;;;;;7827:13:3;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7827:15:3;7815:28;;7827:15;7815:28;;;;;;;;-1:-1:-1;7815:28:3;:46;7761:116;9102:4;;:62;;;-1:-1:-1;;;9102:62:3;;9112:10;9102:62;;;;9131:4;9102:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9102:4:3;;;;:9;;:62;;;;;:4;;:62;;;;;;;;:4;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7454:1817;;;;;;;;;;:::o;3671:25::-;;;-1:-1:-1;;;;;3671:25:3;;:::o;6614:278::-;815:9:4;:7;:9::i;:::-;807:54;;;;;-1:-1:-1;;;807:54:4;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;807:54:4;;;;;;;;;;;;;;;6730:4:3::1;::::0;:26:::1;::::0;;-1:-1:-1;;;6730:26:3;;6701:24:::1;6730:26;::::0;::::1;::::0;;;;;6701:24;;-1:-1:-1;;;;;6730:4:3::1;::::0;:14:::1;::::0;:26;;;;;::::1;::::0;;;;;;;;;:4;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6814:9:3;;::::1;6824::::0;;::::1;::::0;6781:53:::1;::::0;;-1:-1:-1;;;6781:53:3;;-1:-1:-1;;;;;6781:53:3;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;;6730:26;;-1:-1:-1;6766:12:3::1;::::0;6781:32;;::::1;::::0;::::1;::::0;:53;;;;;6814:9;;6781:53;;;;;;6766:12;6781:32;:53;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6781:53:3;6844:41:::1;::::0;;-1:-1:-1;;;6844:41:3;;-1:-1:-1;;;;;6844:41:3;;::::1;;::::0;::::1;::::0;;;6781:53;;-1:-1:-1;6844:30:3;;::::1;::::0;::::1;::::0;:41;;;;;-1:-1:-1;;6844:41:3;;;;;;;;-1:-1:-1;6844:30:3;:41;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;871:1:4;;6614:278:3::0;;:::o;4580:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4580:37:3;;:::o;4477:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3250:46::-;3295:1;3250:46;:::o;3307:35::-;;;;;;;;;;;2333:300;2500:6;2518:63;2535:10;2546:9;2556:5;2562:4;;2518:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2518:63:3;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2567:7:3;;-1:-1:-1;2567:7:3;;;;2518:63;;;2567:7;;2518:63;2567:7;2518:63;;;;;;;;;-1:-1:-1;2575:5:3;;-1:-1:-1;2575:5:3;;-1:-1:-1;2518:16:3;;-1:-1:-1;2518:63:3:i;:::-;-1:-1:-1;;;;2333:300:3;;;;;;;;;;:::o;6907:98::-;815:9:4;:7;:9::i;:::-;807:54;;;;;-1:-1:-1;;;807:54:4;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;807:54:4;;;;;;;;;;;;;;;6974:10:3::1;:24:::0;6907:98::o;5954:372::-;815:9:4;:7;:9::i;:::-;807:54;;;;;-1:-1:-1;;;807:54:4;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;807:54:4;;;;;;;;;;;;;;;6064:8:3::1;:15:::0;6062:1:::1;6059:4:::0;::::1;:20;6056:158;;;6094:8;:17:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;6094:17:3;;;;;::::1;::::0;;;6056:158:::1;;;6201:2;6186:8;6195:2;6186:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;:17:::0;6056:158:::1;6243:23;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;;;;;;;-1:-1:-1;6232:8:3;;;:4:::1;:8:::0;;;;;:34;;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;6281:38;;;;;;;::::1;::::0;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;5954:372:::0;;;;:::o;13052:174::-;13148:7;13173:17;;;:7;:17;;;;;;;;-1:-1:-1;;;;;13173:30:3;;;;;;;;;:46;;;:38;;:46;;;;;;13052:174;;;;;:::o;5525:393::-;815:9:4;:7;:9::i;:::-;807:54;;;;;-1:-1:-1;;;807:54:4;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;807:54:4;;;;;;;;;;;;;;;5568:23:3::1;:81;;;;;;;;5603:1;5568:81;;;;5606:1;5568:81;;;;5608:1;5568:81;;;;5610:1;5568:81;;;;5612:1;5568:81;;;;5614:1;5568:81;;;;5616:1;5568:81;;;;5618:1;5568:81;;;;5620:1;5568:81;;;;5622:2;5568:81;;;;5625:2;5568:81;;;;5628:2;5568:81;;;;5631:2;5568:81;;;;5634:2;5568:81;;;;5637:2;5568:81;;;;5640:2;5568:81;;;;5643:2;5568:81;;;;5646:2;5568:81;;::::0;::::1;;5659:31;:98;;;;;;;;5702:1;5659:98;;;;5705:1;5659:98;;;;5707:1;5659:98;;;;5709:2;5659:98;;;;5712:2;5659:98;;;;5715:3;5659:98;;;;5719:1;5659:98;;;;5721:1;5659:98;;;;5723:1;5659:98;;;;5725:2;5659:98;;;;5728:2;5659:98;;;;5731:3;5659:98;;;;5735:2;5659:98;;;;5738:2;5659:98;;;;5741:2;5659:98;;;;5744:3;5659:98;;;;5748:3;5659:98;;;;5752:4;5659:98;;::::0;::::1;;5767:27;:94;;;;;;;;5806:1;5767:94;;;;5809:1;5767:94;;;;5811:1;5767:94;;;;5813:2;5767:94;;;;5816:2;5767:94;;;;5819:3;5767:94;;;;5823:2;5767:94;;;;5826:2;5767:94;;;;5829:2;5767:94;;;;5832:3;5767:94;;;;5836:3;5767:94;;;;5840:4;5767:94;;;;5845:1;5767:94;;;;5847:1;5767:94;;;;5849:1;5767:94;;;;5851:2;5767:94;;;;5854:2;5767:94;;;;5857:3;5767:94;;::::0;::::1;;5871:40;5884:4;5889:12;5902:8;5871:12;:40::i;:::-;871:1:4;;;5525:393:3:o:0;4872:42::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4872:42:3;;-1:-1:-1;4872:42:3;;-1:-1:-1;4872:42:3:o;1898:429::-;2081:16;;;2095:1;2081:16;;;;;;;;;2036:6;;;;2081:16;;;;;;;;;;-1:-1:-1;;2131:16:3;;;2145:1;2131:16;;;;;;;;;2054:43;;-1:-1:-1;2107:21:3;;2131:16;-1:-1:-1;2131:16:3;;;;;;;;;;;-1:-1:-1;2131:16:3;2107:40;;2167:3;2157:4;2162:1;2157:7;;;;;;;;;;;;;:13;;;;;2193:6;2180:7;2188:1;2180:10;;;;;;;;;;;;;:19;;;;;2218:63;2235:10;2246:9;2256:5;2262:4;2267:7;2275:5;;2218:16;:63::i;:::-;-1:-1:-1;;;;2298:22:3;1898:429;-1:-1:-1;;;;;;;;1898:429:3:o;1141:107:4:-;815:9;:7;:9::i;:::-;807:54;;;;;-1:-1:-1;;;807:54:4;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;807:54:4;;;;;;;;;;;;;;;1213:28:::1;1232:8;1213:18;:28::i;:::-;1141:107:::0;:::o;4828:33:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11422:272::-;11478:26;;:::i;:::-;11505:27;;:::i;:::-;11553:18;11562:8;11553;:18::i;:::-;11543:28;;11585:7;11581:107;11598:14;11596:1;:16;;;11581:107;;;11645:32;11657:7;11665:1;11657:10;;;;;;;;;;;;;11668:8;11645:11;:32::i;:::-;11631:8;11640:1;11631:11;;;;;;;;;;;;:46;11613:3;;11581:107;;;;11422:272;;;:::o;9977:859::-;10079:25;;:::i;:::-;10115:21;10139:17;;;:7;:17;;;;;;;;-1:-1:-1;;;;;10139:30:3;;;;;;;;;;10206:32;10157:11;10147:8;10206:10;:32::i;:::-;10188:50;;10253:7;10249:581;10267:1;10265;:3;;;10249:581;;;10287:18;10308:32;10336:3;10308:23;10328:2;10308:4;:12;;;10321:1;10308:15;;;;;;;;;;;;;;:19;:23::i;:32::-;10287:53;;10354:19;10376:32;10404:3;10376:23;10396:2;10376:4;:12;;;10389:1;10376:15;;;;;;;;:32;10354:54;;10448:63;10463:47;10499:10;;10463:31;10478:6;:15;;;10463:10;:14;;:31;;;;:::i;:47::-;10448:7;10456:1;10448:10;;;;;;;;;;;;;;:14;:63::i;:::-;10435:7;10443:1;10435:10;;;;;;;;;;;;:76;10549:2;10541:10;;10538:131;;;10583:71;10598:55;10650:2;10598:47;10614:21;10636:7;10614:30;;;;;;;;;10598:11;;:15;:47::i;10583:71::-;10570:7;10578:1;10570:10;;;;;;;;;;;;:84;10538:131;10698:16;;;;;;10695:125;;;10746:59;10761:43;10801:2;10761:35;:11;3295:1;10761:15;:35::i;10746:59::-;10733:7;10741:1;10733:10;;;;;;;;;;;;:72;10695:125;-1:-1:-1;;10269:3:3;;10249:581;;;;9977:859;;;;;;;:::o;19094:88::-;19160:8;:15;19094:88;:::o;95:176:5:-;153:7;184:5;;;207:6;;;;199:46;;;;;-1:-1:-1;;;199:46:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;263:1;95:176;-1:-1:-1;;;95:176:5:o;16855:152:3:-;16936:7;16961:17;;;:7;:17;;;;;;;;-1:-1:-1;;;;;16961:30:3;;;;;;;;;;:39;;;;16855:152::o;625:268:5:-;683:7;733:6;729:45;;-1:-1:-1;762:1:5;755:8;;729:45;796:5;;;800:1;796;:5;:1;819:5;;;;;:10;811:56;;;;-1:-1:-1;;;811:56:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;904:130;962:7;988:39;992:1;995;988:39;;;;;;;;;;;;;;;;;:3;:39::i;154:96:4:-;233:10;154:96;:::o;7020:423:3:-;7223:9;;-1:-1:-1;;;;;7215:29:3;;;7223:9;;7215:29;7207:52;;;;;-1:-1:-1;;;7207:52:3;;;;;;;;;;;;-1:-1:-1;;;7207:52:3;;;;;;;;;;;;;;;7278:29;7297:9;7278:18;:29::i;:::-;7277:30;7269:76;;;;-1:-1:-1;;;7269:76:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7366:19:3;;;7363:74;;7400:26;7407:5;7413:4;7418:7;7400:6;:26::i;7363:74::-;7020:423;;;;;;;:::o;6371:233::-;6497:9;6493:105;6511:10;6509:1;:12;6493:105;;;6540:47;6552:1;6554:3;6558:1;6554:6;;;;;;;;;;;6561:11;6573:1;6561:14;;;;;;;;;;;6576:7;6584:1;6576:10;;;;;;;;;;;6540:11;:47::i;:::-;6522:3;;6493:105;;;;6371:233;;;:::o;1259:225:4:-;-1:-1:-1;;;;;1332:22:4;;1324:73;;;;-1:-1:-1;;;1324:73:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1433:6;;1412:38;;-1:-1:-1;;;;;1412:38:4;;;;1433:6;;1412:38;;1433:6;;1412:38;1460:6;:17;;-1:-1:-1;;;;;;1460:17:4;-1:-1:-1;;;;;1460:17:4;;;;;;;;;;1259:225::o;1045:204:5:-;1131:7;1174:12;1167:5;1159:28;;;;-1:-1:-1;;;1159:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1197:9;1213:1;1209;:5;;;;;;;1045:204;-1:-1:-1;;;;;1045:204:5:o;529:797:0:-;589:4;1237:20;;1082:66;1276:15;;;;;:42;;-1:-1:-1;1295:23:0;;;1268:51;-1:-1:-1;;529:797:0:o;13246:1573:3:-;13392:7;;13346;13384:16;;;:7;:16;;;;;13418:10;;:12;;;;:42;;;13446:7;:14;13432:3;:10;:28;13418:42;13410:59;;;;;-1:-1:-1;;;13410:59:3;;;;;;;;;;;;-1:-1:-1;;;13410:59:3;;;;;;;;;;;;;;;13576:7;;13488:20;13568:16;;;:7;:16;;;;;;;;-1:-1:-1;;;;;13568:29:3;;;;;;;;;13488:20;;;;13631:306;13651:3;:10;13649:1;:12;13631:306;;;13680:14;13697:4;:12;13702:3;13706:1;13702:6;;;;;;;;;;;;;;13697:12;;;;;;;;;;;13680:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13738:47;13755:29;13773:7;13781:1;13773:10;;;;;;;;;;;;;;13755:3;:13;;;:17;;:29;;;;:::i;:::-;13738:12;;:16;:47::i;:::-;13723:62;;13810:39;13823:25;13837:7;13845:1;13837:10;;;;;;;;;;;;;;13823:3;:9;;;:13;;:25;;;;:::i;:::-;13810:8;;:12;:39::i;:::-;13799:50;;13888:38;13915:7;13923:1;13915:10;;;;;;;;;;;;;;13888:6;:14;;:22;13903:3;13907:1;13903:6;;;;;;;;;;;;;;13888:22;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;13863:6;:14;;:22;13878:3;13882:1;13878:6;;;;;;;;;;;;;;;;;;;13863:22;;;;;;;;;;-1:-1:-1;13863:22:3;:63;-1:-1:-1;13662:3:3;;13631:306;;;;13971:8;13958:12;:21;13955:117;;;-1:-1:-1;14003:8:3;13955:117;;;-1:-1:-1;14049:12:3;13955:117;14115:13;;;;14090:22;;14115:31;;14133:12;14115:17;:31::i;:::-;14090:56;;14175:10;;14159:14;:26;14156:268;;14226:13;;;;14211:10;;:29;;:14;:29::i;:::-;14204:6;:36;14201:80;;;14267:13;;;;14252:10;;:29;;:14;:29::i;:::-;14243:38;;14201:80;14335:7;;14313:59;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14313:59:3;;;;;;;;;;;;;14386:27;14396:11;14408:4;14386:9;:27::i;:::-;14460:15;;;;:27;;14480:6;14460:19;:27::i;:::-;14442:15;;;:45;14513:13;;;;:31;;14531:12;14513:17;:31::i;:::-;14497:13;;;:47;14568:11;;;;:23;;14584:6;14568:15;:23::i;:::-;14554:11;;;:37;14601:23;14612:11;14601:10;:23::i;:::-;14643:9;;-1:-1:-1;;;;;14643:9:3;:31;14683:4;14689:7;:5;:7::i;:::-;14697:3;14701:7;14643:76;;;;;;;;;;;;;-1:-1:-1;;;;;14643:76:3;;;;;;-1:-1:-1;;;;;14643:76:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14643:76:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14762:7;;14750:11;-1:-1:-1;;;;;14743:46:3;;14770:3;14774:7;14782:6;14743:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14806:6:3;13246:1573;-1:-1:-1;;;;;;;;13246:1573:3:o;282:134:5:-;340:7;366:43;370:1;373;366:43;;;;;;;;;;;;;;;;;:3;:43::i;17017:543:3:-;17157:4;;:29;;;-1:-1:-1;;;17157:29:3;;17180:4;17157:29;;;;;;17103:24;;;;-1:-1:-1;;;;;17157:4:3;;;;:14;;:29;;;;;;;;;;;;;;;:4;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17157:29:3;-1:-1:-1;;17157:29:3;;;17209:7;17205:120;17219:14;17217:1;:16;;;17205:120;;;17252:62;17279:6;17286:1;17279:9;;;;;;;;;;;;;17297:4;;-1:-1:-1;;;;;17297:4:3;17303:7;:10;;;;;;;;;;;;;;17252:26;:62::i;:::-;17234:3;;17205:120;;;-1:-1:-1;17334:4:3;;:21;;;-1:-1:-1;;;17334:21:3;;-1:-1:-1;;;;;17334:4:3;;;;:12;;17347:7;;17334:21;;;;;17347:7;;17334:21;;17347:7;17334:4;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17365:22:3;;-1:-1:-1;17365:4:3;17380:7;17365:22;;:::i;:::-;-1:-1:-1;17398:14:3;;;:28;;-1:-1:-1;;;;;;17398:28:3;-1:-1:-1;;;;;17398:28:3;;;;;;;;17444:7;;-1:-1:-1;17436:16:3;;;:7;:16;;;;;;;;:29;;;;;;;:39;;:46;;-1:-1:-1;;17436:46:3;-1:-1:-1;17436:46:3;;;17505:18;17398:14;17505:12;:18::i;:::-;-1:-1:-1;;17533:7:3;:9;;;;;;-1:-1:-1;;17017:543:3:o;15756:433::-;15854:7;;15816:30;15849:13;;;:4;:13;;;;;;15816:46;;;;;;;;;;;;15849:13;15816:46;;;;-1:-1:-1;;;;;15816:46:3;;;;;;;;;;;;;;;;;;;;;;15882:10;15893:14;15911:31;15918:11;15930;15911:6;:31::i;:::-;15881:61;;;;15959:18;15955:2;:22;15952:231;;16003:24;16015:11;16003;:24::i;:::-;15995:6;:32;15992:98;;;16064:11;16046;16058:2;16046:15;;;;;;;-1:-1:-1;;;;;16046:29:3;;;:15;;;;;;:29;15992:98;16108:7;;16103:13;;;;:4;:13;;;;;:27;;16119:11;16103:27;;:::i;:::-;-1:-1:-1;16149:23:3;;-1:-1:-1;;;;;16149:23:3;;;;;;;;15756:433;;;;:::o;427:187:5:-;513:7;548:12;540:6;;;;532:29;;;;-1:-1:-1;;;532:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;583:5:5;;;427:187::o;19327:354:3:-;19518:45;;;-1:-1:-1;;;;;19518:45:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19518:45:3;-1:-1:-1;;;19518:45:3;;;19507:57;;;;19472:12;;;;19507:10;;;;19518:45;19507:57;;;19518:45;19507:57;;19518:45;19507:57;;;;;;;;;;-1:-1:-1;;19507:57:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19471:93;;;;19582:7;:57;;;;-1:-1:-1;19594:11:3;;:16;;:44;;;19625:4;19614:24;;;;;;;;;;;;;;;-1:-1:-1;19614:24:3;19594:44;19574:100;;;;;-1:-1:-1;;;19574:100:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;19327:354;;;;;:::o;17593:362::-;17658:25;;:::i;:::-;17697:9;17693:158;17713:14;17711:1;:16;17693:158;;;17759:81;17836:3;17759:72;17820:10;;17759:56;17787:27;17802:4;:11;;;17787:10;;:14;;:27;;;;:::i;:::-;17759:23;17779:2;17759:4;17772:1;17759:15;;;;;;;;;;:19;:23::i;:::-;:27;;:56::i;:81::-;17746:7;17754:1;17746:10;;;;;;;;;;:94;17728:3;;17693:158;;;-1:-1:-1;17860:4:3;;17871:9;;17860:29;;;-1:-1:-1;;;17860:29:3;;-1:-1:-1;;;;;17871:9:3;;;17860:29;;;;;;:4;;;;;:10;;17871:9;;17881:7;;17860:29;;;17881:7;;17860:29;;17881:7;17860:4;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17926:10:3;;;17937;;;;17913:35;;;;;;;;;;;;;;;;;;;;;;17593:362;;:::o;15220:526::-;15311:10;;15365:27;15377:11;15311:10;15377:14;;;;;15365:11;:27::i;:::-;15356:36;;15406:7;15402:301;15419:18;15417:1;:20;;;15402:301;;;15475:11;-1:-1:-1;;;;;15459:27:3;:11;15471:1;15459:14;;;;;;;;;;;;;-1:-1:-1;;;;;15459:27:3;;15456:93;;;15513:18;15532:1;15505:29;;;;;;;15456:93;15593:6;15565:27;15577:11;15589:1;15577:14;;;;;;;;15565:27;:34;15562:131;;;15627:27;15639:11;15651:1;15639:14;;;;;;;;15627:27;15618:36;;15677:1;15672:6;;;;15562:131;15438:3;;15402:301;;;;15220:526;;;;;;:::o;16717:128::-;16781:7;16806:32;16818:11;16830:7;;16806:11;:32::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Swarm Source
ipfs://a024a86ed1e73e87b32e14d130217b02daa073dea891e0ef457b1c3ff437fd2f
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.