Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x60806040 | 10187982 | 1528 days ago | IN | 0 ETH | 0.09431021 |
Latest 25 internal transactions (View All)
Advanced mode:
Loading...
Loading
Contract Name:
MVDFunctionalityProposalManager
Compiler Version
v0.6.8+commit.0bbfe453
Contract Source Code (Solidity Multiple files format)
pragma solidity ^0.6.0; import "./IMVDFunctionalityProposalManager.sol"; import "./IMVDProxy.sol"; import "./MVDFunctionalityProposal.sol"; import "./IMVDFunctionalitiesManager.sol"; contract MVDFunctionalityProposalManager is IMVDFunctionalityProposalManager { address private _proxy; mapping(address => bool) private _proposals; modifier onlyProxy() { require(msg.sender == address(_proxy), "Only Proxy can call this functionality"); _; } function newProposal(string memory codeName, address location, string memory methodSignature, string memory returnAbiParametersArray, string memory replaces) public override onlyProxy returns(address) { return setProposal(codeName, location, methodSignature, replaces, address(new MVDFunctionalityProposal(codeName, location, methodSignature, returnAbiParametersArray, replaces, _proxy))); } function preconditionCheck(string memory codeName, address location, string memory methodSignature, string memory replaces) private view { bool hasCodeName = !compareStrings(codeName, ""); bool hasReplaces = !compareStrings(replaces, ""); require((hasCodeName || !hasCodeName && !hasReplaces) ? location != address(0) : true, "Cannot have zero address for functionality to set or one time functionality to call"); require(location == address(0) || !compareStrings(methodSignature, ""), "Cannot have empty string for methodSignature"); require(hasCodeName || hasReplaces ? true : compareStrings(methodSignature, "callOneTime(address)"), "One Time Functionality method signature allowed is callOneTime(address)"); IMVDFunctionalitiesManager functionalitiesManager = IMVDFunctionalitiesManager(IMVDProxy(_proxy).getMVDFunctionalitiesManagerAddress()); require(hasCodeName && functionalitiesManager.hasFunctionality(codeName) ? compareStrings(codeName, replaces) : true, "codeName is already used by another functionality"); require(hasReplaces ? functionalitiesManager.hasFunctionality(replaces) : true, "Cannot replace unexisting or inactive functionality"); } function setProposal(string memory codeName, address location, string memory methodSignature, string memory replaces, address proposalAddress) private returns(address) { preconditionCheck(codeName, location, methodSignature, replaces); _proposals[proposalAddress] = true; return proposalAddress; } function checkProposal(address proposalAddress) public override onlyProxy { require(_proposals[proposalAddress], "Unauthorized Access!"); IMVDFunctionalityProposal proposal = IMVDFunctionalityProposal(proposalAddress); uint256 surveyEndBlock = proposal.getSurveyEndBlock(); require(surveyEndBlock > 0, "Survey was not started!"); require(!proposal.isDisabled(), "Proposal is disabled!"); if(!proposal.isVotesHardCapReached()) { require(block.number >= surveyEndBlock, "Survey is still running!"); } require(!proposal.isTerminated(), "Survey already terminated!"); } function isValidProposal(address proposal) public override view returns (bool) { return _proposals[proposal]; } function getProxy() public override view returns (address) { return _proxy; } function setProxy() public override { require(_proxy == address(0) || _proxy == msg.sender, _proxy != address(0) ? "Proxy already set!" : "Only Proxy can toggle itself!"); _proxy = _proxy == address(0) ? msg.sender : address(0); } function compareStrings(string memory a, string memory b) private pure returns(bool) { return keccak256(bytes(a)) == keccak256(bytes(b)); } }
pragma solidity ^0.6.0; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); }
pragma solidity ^0.6.0; interface IMVDFunctionalitiesManager { function getProxy() external view returns (address); function setProxy() external; function init(address sourceLocation, uint256 getMinimumBlockNumberSourceLocationId, address getMinimumBlockNumberFunctionalityAddress, uint256 getEmergencyMinimumBlockNumberSourceLocationId, address getEmergencyMinimumBlockNumberFunctionalityAddress, uint256 getEmergencySurveyStakingSourceLocationId, address getEmergencySurveyStakingFunctionalityAddress, uint256 checkVoteResultSourceLocationId, address checkVoteResultFunctionalityAddress) external; function addFunctionality(string calldata codeName, address sourceLocation, uint256 sourceLocationId, address location, bool submitable, string calldata methodSignature, string calldata returnAbiParametersArray, bool isInternal, bool needsSender) external; function addFunctionality(string calldata codeName, address sourceLocation, uint256 sourceLocationId, address location, bool submitable, string calldata methodSignature, string calldata returnAbiParametersArray, bool isInternal, bool needsSender, uint256 position) external; function removeFunctionality(string calldata codeName) external returns(bool removed, uint256 position); function isValidFunctionality(address functionality) external view returns(bool); function isAuthorizedFunctionality(address functionality) external view returns(bool); function setCallingContext(address location) external returns(bool); function clearCallingContext() external; function getFunctionalityData(string calldata codeName) external view returns(address, uint256, string memory, address, uint256); function hasFunctionality(string calldata codeName) external view returns(bool); function getFunctionalitiesAmount() external view returns(uint256); function functionalitiesToJSON() external view returns(string memory); function functionalitiesToJSON(uint256 start, uint256 l) external view returns(string memory functionsJSONArray); function functionalityNames() external view returns(string memory); function functionalityNames(uint256 start, uint256 l) external view returns(string memory functionsJSONArray); function functionalityToJSON(string calldata codeName) external view returns(string memory); function preConditionCheck(string calldata codeName, bytes calldata data, uint8 submitable, address sender, uint256 value) external view returns(address location, bytes memory payload); function setupFunctionality(address proposalAddress) external returns (bool); }
pragma solidity ^0.6.0; interface IMVDFunctionalityProposal { function init(string calldata codeName, address location, string calldata methodSignature, string calldata returnAbiParametersArray, string calldata replaces, address proxy) external; function setCollateralData(bool emergency, address sourceLocation, uint256 sourceLocationId, bool submitable, bool isInternal, bool needsSender, address proposer, uint256 votesHardCap) external; function getProxy() external view returns(address); function getCodeName() external view returns(string memory); function isEmergency() external view returns(bool); function getSourceLocation() external view returns(address); function getSourceLocationId() external view returns(uint256); function getLocation() external view returns(address); function isSubmitable() external view returns(bool); function getMethodSignature() external view returns(string memory); function getReturnAbiParametersArray() external view returns(string memory); function isInternal() external view returns(bool); function needsSender() external view returns(bool); function getReplaces() external view returns(string memory); function getProposer() external view returns(address); function getSurveyEndBlock() external view returns(uint256); function getSurveyDuration() external view returns(uint256); function isVotesHardCapReached() external view returns(bool); function getVotesHardCapToReach() external view returns(uint256); function toJSON() external view returns(string memory); function getVote(address addr) external view returns(uint256 accept, uint256 refuse); function getVotes() external view returns(uint256, uint256); function start() external; function disable() external; function isDisabled() external view returns(bool); function isTerminated() external view returns(bool); function accept(uint256 amount) external; function retireAccept(uint256 amount) external; function moveToAccept(uint256 amount) external; function refuse(uint256 amount) external; function retireRefuse(uint256 amount) external; function moveToRefuse(uint256 amount) external; function retireAll() external; function withdraw() external; function terminate() external; function set() external; event Accept(address indexed voter, uint256 amount); event RetireAccept(address indexed voter, uint256 amount); event MoveToAccept(address indexed voter, uint256 amount); event Refuse(address indexed voter, uint256 amount); event RetireRefuse(address indexed voter, uint256 amount); event MoveToRefuse(address indexed voter, uint256 amount); event RetireAll(address indexed voter, uint256 amount); }
pragma solidity ^0.6.0; interface IMVDFunctionalityProposalManager { function newProposal(string calldata codeName, address location, string calldata methodSignature, string calldata returnAbiParametersArray, string calldata replaces) external returns(address); function checkProposal(address proposalAddress) external; function getProxy() external view returns (address); function setProxy() external; function isValidProposal(address proposal) external view returns (bool); }
pragma solidity ^0.6.0; interface IMVDProxy { function init(address votingTokenAddress, address functionalityProposalManagerAddress, address stateHolderAddress, address functionalityModelsManagerAddress, address functionalitiesManagerAddress, address walletAddress) external; function getDelegates() external view returns(address,address,address,address,address,address); function getToken() external view returns(address); function getMVDFunctionalityProposalManagerAddress() external view returns(address); function getStateHolderAddress() external view returns(address); function getMVDFunctionalityModelsManagerAddress() external view returns(address); function getMVDFunctionalitiesManagerAddress() external view returns(address); function getMVDWalletAddress() external view returns(address); function setDelegate(uint256 position, address newAddress) external returns(address oldAddress); function changeProxy(address newAddress, bytes calldata initPayload) external; function isValidProposal(address proposal) external view returns (bool); function isAuthorizedFunctionality(address functionality) external view returns(bool); function newProposal(string calldata codeName, bool emergency, address sourceLocation, uint256 sourceLocationId, address location, bool submitable, string calldata methodSignature, string calldata returnParametersJSONArray, bool isInternal, bool needsSender, string calldata replaces) external returns(address proposalAddress); function startProposal(address proposalAddress) external; function disableProposal(address proposalAddress) external; function transfer(address receiver, uint256 value, address token) external; function transfer721(address receiver, uint256 tokenId, bytes calldata data, bool safe, address token) external; function setProposal() external; function read(string calldata codeName, bytes calldata data) external view returns(bytes memory returnData); function submit(string calldata codeName, bytes calldata data) external payable returns(bytes memory returnData); function callFromManager(address location, bytes calldata payload) external returns(bool, bytes memory); function emitFromManager(string calldata codeName, address proposal, string calldata replaced, address replacedSourceLocation, uint256 replacedSourceLocationId, address location, bool submitable, string calldata methodSignature, bool isInternal, bool needsSender, address proposalAddress) external; function emitEvent(string calldata eventSignature, bytes calldata firstIndex, bytes calldata secondIndex, bytes calldata data) external; event ProxyChanged(address indexed newAddress); event DelegateChanged(uint256 position, address indexed oldAddress, address indexed newAddress); event Proposal(address proposal); event ProposalCheck(address indexed proposal); event ProposalSet(address indexed proposal, bool success); event FunctionalitySet(string codeName, address indexed proposal, string replaced, address replacedSourceLocation, uint256 replacedSourceLocationId, address indexed replacedLocation, bool replacedWasSubmitable, string replacedMethodSignature, bool replacedWasInternal, bool replacedNeededSender, address indexed replacedProposal); event Event(string indexed key, bytes32 indexed firstIndex, bytes32 indexed secondIndex, bytes data); }
pragma solidity ^0.6.0; import "./IMVDFunctionalityProposal.sol"; import "./IMVDProxy.sol"; import "./IERC20.sol"; contract MVDFunctionalityProposal is IMVDFunctionalityProposal{ bool private _collateralDataSet; address private _proxy; address private _token; string private _codeName; bool private _emergency; address private _sourceLocation; uint256 private _sourceLocationId; address private _location; bool private _submitable; string private _methodSignature; string private _returnAbiParametersArray; bool private _isInternal; bool private _needsSender; string private _replaces; uint256 private _surveyEndBlock; uint256 private _surveyDuration; bool private _terminated; address private _proposer; bool private _disabled; mapping(address => uint256) private _accept; mapping(address => uint256) private _refuse; uint256 private _totalAccept; uint256 private _totalRefuse; mapping(address => bool) private _withdrawed; uint256 private _votesHardCap; bool private _votesHardCapReached; constructor(string memory codeName, address location, string memory methodSignature, string memory returnAbiParametersArray, string memory replaces, address proxy) public { init(codeName, location, methodSignature, returnAbiParametersArray, replaces, proxy); } function init(string memory codeName, address location, string memory methodSignature, string memory returnAbiParametersArray, string memory replaces, address proxy) public override { require(_proxy == address(0), "Already initialized!"); _token = IMVDProxy(_proxy = proxy).getToken(); _codeName = codeName; _location = location; _methodSignature = methodSignature; _returnAbiParametersArray = returnAbiParametersArray; _replaces = replaces; } function setCollateralData(bool emergency, address sourceLocation, uint256 sourceLocationId, bool submitable, bool isInternal, bool needsSender, address proposer, uint256 votesHardCap) public override { require(!_collateralDataSet, "setCollateralData already called!"); require(_proxy == msg.sender, "Only Original Proxy can call this method!"); _sourceLocation = sourceLocation; _sourceLocationId = sourceLocationId; _submitable = submitable; _isInternal = isInternal; _needsSender = needsSender; _proposer = proposer; _surveyDuration = toUint256(IMVDProxy(_proxy).read((_emergency = emergency) ? "getMinimumBlockNumberForEmergencySurvey" : "getMinimumBlockNumberForSurvey", bytes(""))); _votesHardCap = votesHardCap; _collateralDataSet = true; } function getProxy() public override view returns(address) { return _proxy; } function getCodeName() public override view returns(string memory) { return _codeName; } function isEmergency() public override view returns(bool) { return _emergency; } function getSourceLocation() public override view returns(address) { return _sourceLocation; } function getSourceLocationId() public override view returns(uint256) { return _sourceLocationId; } function getLocation() public override view returns(address) { return _location; } function isSubmitable() public override view returns(bool) { return _submitable; } function getMethodSignature() public override view returns(string memory) { return _methodSignature; } function getReturnAbiParametersArray() public override view returns(string memory) { return _returnAbiParametersArray; } function isInternal() public override view returns(bool) { return _isInternal; } function needsSender() public override view returns(bool) { return _needsSender; } function getReplaces() public override view returns(string memory) { return _replaces; } function getProposer() public override view returns(address) { return _proposer; } function getSurveyEndBlock() public override view returns(uint256) { return _surveyEndBlock; } function getSurveyDuration() public override view returns(uint256) { return _surveyDuration; } function getVote(address addr) public override view returns(uint256 accept, uint256 refuse) { accept = _accept[addr]; refuse = _refuse[addr]; } function getVotes() public override view returns(uint256, uint256) { return (_totalAccept, _totalRefuse); } function isTerminated() public override view returns(bool) { return _terminated; } function isDisabled() public override view returns(bool) { return _disabled; } function isVotesHardCapReached() public override view returns(bool) { return _votesHardCapReached; } function getVotesHardCapToReach() public override view returns(uint256) { return _votesHardCap; } function start() public override { require(_collateralDataSet, "Still waiting for setCollateralData to be called!"); require(msg.sender == _proxy, "Only Proxy can call this function!"); require(_surveyEndBlock == 0, "Already started!"); require(!_disabled, "Already disabled!"); _surveyEndBlock = block.number + _surveyDuration; } function disable() public override { require(_collateralDataSet, "Still waiting for setCollateralData to be called!"); require(msg.sender == _proxy, "Only Proxy can call this function!"); require(_surveyEndBlock == 0, "Already started!"); _disabled = true; _terminated = true; } function toJSON() public override view returns(string memory) { return string(abi.encodePacked( '{', getFirstJSONPart(_sourceLocation, _sourceLocationId, _location), '","submitable":', _submitable ? "true" : "false", ',"emergency":', _emergency ? "true" : "false", ',"isInternal":', _isInternal ? "true" : "false", ',"needsSender":', _needsSender ? "true" : "false", ',', getSecondJSONPart(), ',"proposer":"', toString(_proposer), '","endBlock":', toString(_surveyEndBlock), ',"terminated":', _terminated ? "true" : "false", ',"accepted":', toString(_totalAccept), ',"refused":', toString(_totalRefuse), ',"disabled":', _disabled ? 'true' : 'false', '}') ); } function getSecondJSONPart() private view returns (string memory){ return string(abi.encodePacked( '"codeName":"', _codeName, '","methodSignature":"', _methodSignature, '","returnAbiParametersArray":', formatReturnAbiParametersArray(_returnAbiParametersArray), ',"replaces":"', _replaces, '"')); } modifier duringSurvey() { require(_collateralDataSet, "Still waiting for setCollateralData to be called!"); require(!_disabled, "Survey disabled!"); require(!_terminated, "Survey Terminated!"); require(!_votesHardCapReached, "Votes Hard Cap reached!"); require(_surveyEndBlock > 0, "Survey Not Started!"); require(block.number < _surveyEndBlock, "Survey ended!"); _; } modifier onSurveyEnd() { require(_collateralDataSet, "Still waiting for setCollateralData to be called!"); require(!_disabled, "Survey disabled!"); require(_surveyEndBlock > 0, "Survey Not Started!"); if(!_votesHardCapReached) { require(block.number >= _surveyEndBlock, "Survey is still running!"); } _; } function _checkVotesHardCap() private { if(_votesHardCap == 0 || (_totalAccept < _votesHardCap && _totalRefuse < _votesHardCap)) { return; } _votesHardCapReached = true; terminate(); } function accept(uint256 amount) external override duringSurvey { IERC20(_token).transferFrom(msg.sender, address(this), amount); uint256 vote = _accept[msg.sender]; vote += amount; _accept[msg.sender] = vote; _totalAccept += amount; emit Accept(msg.sender, amount); _checkVotesHardCap(); } function retireAccept(uint256 amount) external override duringSurvey { require(_accept[msg.sender] >= amount, "Insufficient funds!"); IERC20(_token).transfer(msg.sender, amount); uint256 vote = _accept[msg.sender]; vote -= amount; _accept[msg.sender] = vote; _totalAccept -= amount; emit RetireAccept(msg.sender, amount); } function moveToAccept(uint256 amount) external override duringSurvey { require(_refuse[msg.sender] >= amount, "Insufficient funds!"); uint256 vote = _refuse[msg.sender]; vote -= amount; _refuse[msg.sender] = vote; _totalRefuse -= amount; vote = _accept[msg.sender]; vote += amount; _accept[msg.sender] = vote; _totalAccept += amount; emit MoveToAccept(msg.sender, amount); _checkVotesHardCap(); } function refuse(uint256 amount) external override duringSurvey { IERC20(_token).transferFrom(msg.sender, address(this), amount); uint256 vote = _refuse[msg.sender]; vote += amount; _refuse[msg.sender] = vote; _totalRefuse += amount; emit Refuse(msg.sender, amount); _checkVotesHardCap(); } function retireRefuse(uint256 amount) external override duringSurvey { require(_refuse[msg.sender] >= amount, "Insufficient funds!"); IERC20(_token).transfer(msg.sender, amount); uint256 vote = _refuse[msg.sender]; vote -= amount; _refuse[msg.sender] = vote; _totalRefuse -= amount; emit RetireRefuse(msg.sender, amount); } function moveToRefuse(uint256 amount) external override duringSurvey { require(_accept[msg.sender] >= amount, "Insufficient funds!"); uint256 vote = _accept[msg.sender]; vote -= amount; _accept[msg.sender] = vote; _totalAccept -= amount; vote = _refuse[msg.sender]; vote += amount; _refuse[msg.sender] = vote; _totalRefuse += amount; emit MoveToRefuse(msg.sender, amount); _checkVotesHardCap(); } function retireAll() external override duringSurvey { require(_accept[msg.sender] + _refuse[msg.sender] > 0, "No votes!"); uint256 acpt = _accept[msg.sender]; uint256 rfs = _refuse[msg.sender]; IERC20(_token).transfer(msg.sender, acpt + rfs); _accept[msg.sender] = 0; _refuse[msg.sender] = 0; _totalAccept -= acpt; _totalRefuse -= rfs; emit RetireAll(msg.sender, acpt + rfs); } function withdraw() external override onSurveyEnd { if(!_terminated && !_disabled) { terminate(); return; } _withdraw(true); } function terminate() public override onSurveyEnd { require(!_terminated, "Already terminated!"); IMVDProxy(_proxy).setProposal(); _withdraw(false); } function _withdraw(bool launchError) private { require(!launchError || _accept[msg.sender] + _refuse[msg.sender] > 0, "Nothing to Withdraw!"); require(!launchError || !_withdrawed[msg.sender], "Already Withdrawed!"); if(_accept[msg.sender] + _refuse[msg.sender] > 0 && !_withdrawed[msg.sender]) { IERC20(_token).transfer(msg.sender, _accept[msg.sender] + _refuse[msg.sender]); _withdrawed[msg.sender] = true; } } function set() public override onSurveyEnd { require(msg.sender == _proxy, "Unauthorized Access!"); require(!_terminated, "Already terminated!"); _terminated = true; } function toUint256(bytes memory bs) public pure returns(uint256 x) { if(bs.length >= 32) { assembly { x := mload(add(bs, add(0x20, 0))) } } } function toString(address _addr) public pure returns(string memory) { bytes32 value = bytes32(uint256(_addr)); bytes memory alphabet = "0123456789abcdef"; bytes memory str = new bytes(42); str[0] = '0'; str[1] = 'x'; for (uint i = 0; i < 20; i++) { str[2+i*2] = alphabet[uint(uint8(value[i + 12] >> 4))]; str[3+i*2] = alphabet[uint(uint8(value[i + 12] & 0x0f))]; } return string(str); } function toString(uint _i) public pure returns(string memory) { if (_i == 0) { return "0"; } uint j = _i; uint len; while (j != 0) { len++; j /= 10; } bytes memory bstr = new bytes(len); uint k = len - 1; while (_i != 0) { bstr[k--] = byte(uint8(48 + _i % 10)); _i /= 10; } return string(bstr); } function getFirstJSONPart(address sourceLocation, uint256 sourceLocationId, address location) public pure returns(bytes memory) { return abi.encodePacked( '"sourceLocation":"', toString(sourceLocation), '","sourceLocationId":', toString(sourceLocationId), ',"location":"', toString(location) ); } function formatReturnAbiParametersArray(string memory m) public pure returns(string memory) { bytes memory b = bytes(m); if(b.length < 2) { return "[]"; } if(b[0] != bytes1("[")) { return "[]"; } if(b[b.length - 1] != bytes1("]")) { return "[]"; } return m; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"proposalAddress","type":"address"}],"name":"checkProposal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getProxy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"proposal","type":"address"}],"name":"isValidProposal","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"codeName","type":"string"},{"internalType":"address","name":"location","type":"address"},{"internalType":"string","name":"methodSignature","type":"string"},{"internalType":"string","name":"returnAbiParametersArray","type":"string"},{"internalType":"string","name":"replaces","type":"string"}],"name":"newProposal","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setProxy","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50615460806100206000396000f3fe60806040523480156200001157600080fd5b50600436106200005e5760003560e01c80632c9f55ed14620000635780633914a04f146200008e578063933a9ce81462000098578063a7d5a1ee14620000be578063a9771afd1462000311575b600080fd5b6200008c600480360360208110156200007b57600080fd5b50356001600160a01b03166200034e565b005b6200008c620006f8565b620000a262000860565b604080516001600160a01b039092168252519081900360200190f35b620000a2600480360360a0811015620000d657600080fd5b810190602081018135600160201b811115620000f157600080fd5b8201836020820111156200010457600080fd5b803590602001918460018302840111600160201b831117156200012657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160a01b03853516959094909350604081019250602001359050600160201b8111156200018a57600080fd5b8201836020820111156200019d57600080fd5b803590602001918460018302840111600160201b83111715620001bf57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200021257600080fd5b8201836020820111156200022557600080fd5b803590602001918460018302840111600160201b831117156200024757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200029a57600080fd5b820183602082011115620002ad57600080fd5b803590602001918460018302840111600160201b83111715620002cf57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506200086f945050505050565b6200033a600480360360208110156200032957600080fd5b50356001600160a01b031662000af5565b604080519115158252519081900360200190f35b6000546001600160a01b03163314620003995760405162461bcd60e51b8152600401808060200182810382526026815260200180620053be6026913960400191505060405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff16620003fe576040805162461bcd60e51b8152602060048201526014602482015273556e617574686f72697a6564204163636573732160601b604482015290519081900360640190fd5b60008190506000816001600160a01b0316633fa4d9ca6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200043f57600080fd5b505afa15801562000454573d6000803e3d6000fd5b505050506040513d60208110156200046b57600080fd5b5051905080620004c2576040805162461bcd60e51b815260206004820152601760248201527f53757276657920776173206e6f74207374617274656421000000000000000000604482015290519081900360640190fd5b816001600160a01b0316636c57f5a96040518163ffffffff1660e01b815260040160206040518083038186803b158015620004fc57600080fd5b505afa15801562000511573d6000803e3d6000fd5b505050506040513d60208110156200052857600080fd5b50511562000575576040805162461bcd60e51b815260206004820152601560248201527450726f706f73616c2069732064697361626c65642160581b604482015290519081900360640190fd5b816001600160a01b03166315db404e6040518163ffffffff1660e01b815260040160206040518083038186803b158015620005af57600080fd5b505afa158015620005c4573d6000803e3d6000fd5b505050506040513d6020811015620005db57600080fd5b505162000638578043101562000638576040805162461bcd60e51b815260206004820152601860248201527f537572766579206973207374696c6c2072756e6e696e67210000000000000000604482015290519081900360640190fd5b816001600160a01b031663d1cc99766040518163ffffffff1660e01b815260040160206040518083038186803b1580156200067257600080fd5b505afa15801562000687573d6000803e3d6000fd5b505050506040513d60208110156200069e57600080fd5b505115620006f3576040805162461bcd60e51b815260206004820152601a60248201527f53757276657920616c7265616479207465726d696e6174656421000000000000604482015290519081900360640190fd5b505050565b6000546001600160a01b031615806200071b57506000546001600160a01b031633145b6000546001600160a01b031662000768576040518060400160405280601d81526020017f4f6e6c792050726f78792063616e20746f67676c6520697473656c662100000081525062000794565b6040518060400160405280601281526020017150726f787920616c7265616479207365742160701b8152505b90620008215760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620007e5578181015183820152602001620007cb565b50505050905090810190601f168015620008135780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000546001600160a01b0316156200083c5760006200083e565b335b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b600080546001600160a01b03163314620008bb5760405162461bcd60e51b8152600401808060200182810382526026815260200180620053be6026913960400191505060405180910390fd5b62000aeb868686858a8a8a8a8a6000809054906101000a90046001600160a01b0316604051620008eb9062000fee565b8080602001876001600160a01b03166001600160a01b03168152602001806020018060200180602001866001600160a01b03166001600160a01b0316815260200185810385528b818151815260200191508051906020019080838360005b838110156200096357818101518382015260200162000949565b50505050905090810190601f168015620009915780820380516001836020036101000a031916815260200191505b5085810384528951815289516020918201918b019080838360005b83811015620009c6578181015183820152602001620009ac565b50505050905090810190601f168015620009f45780820380516001836020036101000a031916815260200191505b5085810383528851815288516020918201918a019080838360005b8381101562000a2957818101518382015260200162000a0f565b50505050905090810190601f16801562000a575780820380516001836020036101000a031916815260200191505b50858103825287518152875160209182019189019080838360005b8381101562000a8c57818101518382015260200162000a72565b50505050905090810190601f16801562000aba5780820380516001836020036101000a031916815260200191505b509a5050505050505050505050604051809103906000f08015801562000ae4573d6000803e3d6000fd5b5062000b13565b9695505050505050565b6001600160a01b031660009081526001602052604090205460ff1690565b600062000b238686868662000b52565b506001600160a01b0381166000908152600160208190526040909120805460ff19169091179055949350505050565b600062000b6f856040518060200160405280600081525062000fd8565b159050600062000b8f836040518060200160405280600081525062000fd8565b159050818062000ba757508115801562000ba7575080155b62000bb457600162000bc1565b6001600160a01b03851615155b62000bfe5760405162461bcd60e51b8152600401808060200182810382526053815260200180620052db6053913960600191505060405180910390fd5b6001600160a01b038516158062000c2d575062000c2b846040518060200160405280600081525062000fd8565b155b62000c6a5760405162461bcd60e51b815260040180806020018281038252602c8152602001806200535f602c913960400191505060405180910390fd5b818062000c745750805b62000cb75762000cb1846040518060400160405280601481526020017363616c6c4f6e6554696d6528616464726573732960601b81525062000fd8565b62000cba565b60015b62000cf75760405162461bcd60e51b8152600401808060200182810382526047815260200180620053e46047913960600191505060405180910390fd5b60008060009054906101000a90046001600160a01b03166001600160a01b0316636701586a6040518163ffffffff1660e01b815260040160206040518083038186803b15801562000d4757600080fd5b505afa15801562000d5c573d6000803e3d6000fd5b505050506040513d602081101562000d7357600080fd5b5051905082801562000e575750604051630f26020160e21b81526020600482018181528951602484015289516001600160a01b03851693633c980804938c939283926044019185019080838360005b8381101562000ddc57818101518382015260200162000dc2565b50505050905090810190601f16801562000e0a5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b15801562000e2857600080fd5b505afa15801562000e3d573d6000803e3d6000fd5b505050506040513d602081101562000e5457600080fd5b50515b62000e6457600162000e70565b62000e70878562000fd8565b62000ead5760405162461bcd60e51b81526004018080602001828103825260318152602001806200532e6031913960400191505060405180910390fd5b8162000ebb57600162000f92565b604051630f26020160e21b81526020600482018181528651602484015286516001600160a01b03851693633c9808049389939283926044019185019080838360005b8381101562000f1757818101518382015260200162000efd565b50505050905090810190601f16801562000f455780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b15801562000f6357600080fd5b505afa15801562000f78573d6000803e3d6000fd5b505050506040513d602081101562000f8f57600080fd5b50515b62000fcf5760405162461bcd60e51b81526004018080602001828103825260338152602001806200538b6033913960400191505060405180910390fd5b50505050505050565b8051602091820120825192909101919091201490565b6142de8062000ffd8339019056fe60806040523480156200001157600080fd5b50604051620042de380380620042de833981810160405260c08110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b506040818152602083015192018051929491939192846401000000008211156200010f57600080fd5b9083019060208201858111156200012557600080fd5b82516401000000008111828201881017156200014057600080fd5b82525081516020918201929091019080838360005b838110156200016f57818101518382015260200162000155565b50505050905090810190601f1680156200019d5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084640100000000821115620001c157600080fd5b908301906020820185811115620001d757600080fd5b8251640100000000811182820188101715620001f257600080fd5b82525081516020918201929091019080838360005b838110156200022157818101518382015260200162000207565b50505050905090810190601f1680156200024f5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200027357600080fd5b9083019060208201858111156200028957600080fd5b8251640100000000811182820188101715620002a457600080fd5b82525081516020918201929091019080838360005b83811015620002d3578181015183820152602001620002b9565b50505050905090810190601f168015620003015780820380516001836020036101000a031916815260200191505b506040526020015191506200032690508686868686866001600160e01b036200033216565b50505050505062000562565b60005461010090046001600160a01b03161562000396576040805162461bcd60e51b815260206004820152601460248201527f416c726561647920696e697469616c697a656421000000000000000000000000604482015290519081900360640190fd5b80600060016101000a8154816001600160a01b0302191690836001600160a01b0316021790556001600160a01b03166321df0da76040518163ffffffff1660e01b815260040160206040518083038186803b158015620003f557600080fd5b505afa1580156200040a573d6000803e3d6000fd5b505050506040513d60208110156200042157600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055855162000457906002906020890190620004bd565b50600580546001600160a01b0319166001600160a01b038716179055835162000488906006906020870190620004bd565b5082516200049e906007906020860190620004bd565b508151620004b4906009906020850190620004bd565b50505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200050057805160ff191683800117855562000530565b8280016001018555821562000530579182015b828111156200053057825182559160200191906001019062000513565b506200053e92915062000542565b5090565b6200055f91905b808211156200053e576000815560010162000549565b90565b613d6c80620005726000396000f3fe608060405234801561001057600080fd5b50600436106102535760003560e01c806366844c7e11610146578063b8e010de116100c3578063d1cc997611610087578063d1cc9976146108e9578063e9790d02146108f1578063eb3464a1146108f9578063eba3aa4214610916578063ef0e99a71461091e578063f48f489e1461093b57610253565b8063b8e010de14610825578063b9c33b261461082d578063bd37c8aa14610835578063be9a6555146108d9578063ce2ce3fc146108e157610253565b80638fc38e0b1161010a5780638fc38e0b146107cc578063933a9ce8146107d4578063a60a07b2146107f8578063aa1cc2e914610815578063b23d26521461081d57610253565b806366844c7e146107075780636900a3ae146107245780636c57f5a9146107415780638d06bc5b146107495780638d337b81146107a657610253565b80633ccfd60b116101d457806355d92ae31161019857806355d92ae31461061057806356ca623e146106185780635ad3c9311461063e5780635f9e8f82146106e257806366698389146106ea57610253565b80633ccfd60b146105d65780633e1b421d146105de5780633fa4d9ca146105e65780634398037c14610600578063485e2d9e1461060857610253565b806316375cb31161021b57806316375cb31461056b57806316e29d711461057357806319b05f491461057b5780632c394d99146105985780632f2770db146105ce57610253565b806304f181b7146102585780630c08bf88146102d55780630dc96015146102df57806314ebd7831461030057806315db404e1461054f575b600080fd5b610260610943565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029a578181015183820152602001610282565b50505050905090810190601f1680156102c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102dd6109da565b005b6102e7610bd0565b6040805192835260208301919091528051918290030190f35b6102dd600480360360c081101561031657600080fd5b810190602081018135600160201b81111561033057600080fd5b82018360208201111561034257600080fd5b803590602001918460018302840111600160201b8311171561036357600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160a01b03853516959094909350604081019250602001359050600160201b8111156103c657600080fd5b8201836020820111156103d857600080fd5b803590602001918460018302840111600160201b831117156103f957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561044b57600080fd5b82018360208201111561045d57600080fd5b803590602001918460018302840111600160201b8311171561047e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156104d057600080fd5b8201836020820111156104e257600080fd5b803590602001918460018302840111600160201b8311171561050357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b03169150610bda9050565b610557610d50565b604080519115158252519081900360200190f35b610260610d59565b61055761144c565b6102dd6004803603602081101561059157600080fd5b5035611455565b610260600480360360608110156105ae57600080fd5b506001600160a01b038135811691602081013591604090910135166116ee565b6102dd611863565b6102dd611958565b610260611ac5565b6105ee611b26565b60408051918252519081900360200190f35b610260611b2c565b6105ee611b8a565b610557611b90565b6102606004803603602081101561062e57600080fd5b50356001600160a01b0316611ba0565b6102606004803603602081101561065457600080fd5b810190602081018135600160201b81111561066e57600080fd5b82018360208201111561068057600080fd5b803590602001918460018302840111600160201b831117156106a157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611d1e945050505050565b610557611df1565b6102dd6004803603602081101561070057600080fd5b5035611dfa565b6102dd6004803603602081101561071d57600080fd5b503561207a565b6102606004803603602081101561073a57600080fd5b50356122fa565b6105576123c9565b6102dd600480360361010081101561076057600080fd5b5080351515906001600160a01b0360208201358116916040810135916060820135151591608081013515159160a082013515159160c08101359091169060e001356123d9565b6102e7600480360360208110156107bc57600080fd5b50356001600160a01b0316612763565b6105ee61278b565b6107dc612791565b604080516001600160a01b039092168252519081900360200190f35b6102dd6004803603602081101561080e57600080fd5b50356127a5565b6105ee612a3a565b610557612a40565b6102dd612a4e565b6107dc612c3a565b6105ee6004803603602081101561084b57600080fd5b810190602081018135600160201b81111561086557600080fd5b82018360208201111561087757600080fd5b803590602001918460018302840111600160201b8311171561089857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612c4e945050505050565b6102dd612c61565b6107dc612d95565b610557612da4565b6107dc612dad565b6102dd6004803603602081101561090f57600080fd5b5035612dc1565b6102dd6130a8565b6102dd6004803603602081101561093457600080fd5b50356133b8565b61026061369f565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109cf5780601f106109a4576101008083540402835291602001916109cf565b820191906000526020600020905b8154815290600101906020018083116109b257829003601f168201915b505050505090505b90565b60005460ff16610a1b5760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b600c54600160a81b900460ff1615610a6d576040805162461bcd60e51b815260206004820152601060248201526f5375727665792064697361626c65642160801b604482015290519081900360640190fd5b6000600a5411610ab2576040805162461bcd60e51b81526020600482015260136024820152600080516020613cf6833981519152604482015290519081900360640190fd5b60135460ff16610b0e57600a54431015610b0e576040805162461bcd60e51b8152602060048201526018602482015277537572766579206973207374696c6c2072756e6e696e672160401b604482015290519081900360640190fd5b600c5460ff1615610b5c576040805162461bcd60e51b8152602060048201526013602482015272416c7265616479207465726d696e617465642160681b604482015290519081900360640190fd5b600060019054906101000a90046001600160a01b03166001600160a01b0316632a7434a86040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610bac57600080fd5b505af1158015610bc0573d6000803e3d6000fd5b50505050610bce6000613700565b565b600f546010549091565b60005461010090046001600160a01b031615610c34576040805162461bcd60e51b8152602060048201526014602482015273416c726561647920696e697469616c697a65642160601b604482015290519081900360640190fd5b80600060016101000a8154816001600160a01b0302191690836001600160a01b0316021790556001600160a01b03166321df0da76040518163ffffffff1660e01b815260040160206040518083038186803b158015610c9257600080fd5b505afa158015610ca6573d6000803e3d6000fd5b505050506040513d6020811015610cbc57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790558551610cf0906002906020890190613b9a565b50600580546001600160a01b0319166001600160a01b0387161790558351610d1f906006906020870190613b9a565b508251610d33906007906020860190613b9a565b508151610d47906009906020850190613b9a565b50505050505050565b60135460ff1690565b600354600454600554606092610d81926101009091046001600160a01b0390811692166116ee565b600554600160a01b900460ff16610db5576040518060400160405280600581526020016466616c736560d81b815250610dd3565b604051806040016040528060048152602001637472756560e01b8152505b60035460ff16610e00576040518060400160405280600581526020016466616c736560d81b815250610e1e565b604051806040016040528060048152602001637472756560e01b8152505b60085460ff16610e4b576040518060400160405280600581526020016466616c736560d81b815250610e69565b604051806040016040528060048152602001637472756560e01b8152505b600854610100900460ff16610e9b576040518060400160405280600581526020016466616c736560d81b815250610eb9565b604051806040016040528060048152602001637472756560e01b8152505b610ec16138c6565b600c54610edb9061010090046001600160a01b0316611ba0565b610ee6600a546122fa565b600c5460ff16610f13576040518060400160405280600581526020016466616c736560d81b815250610f31565b604051806040016040528060048152602001637472756560e01b8152505b610f3c600f546122fa565b610f476010546122fa565b600c54600160a81b900460ff16610f7b576040518060400160405280600581526020016466616c736560d81b815250610f99565b604051806040016040528060048152602001637472756560e01b8152505b6040516020018080607b60f81b8152506001018d805190602001908083835b60208310610fd75780518252601f199092019160209182019101610fb8565b51815160209384036101000a60001901801990921691161790526e11161139bab136b4ba30b13632911d60891b919093019081528e51600f909101928f0191508083835b6020831061103a5780518252601f19909201916020918201910161101b565b51815160209384036101000a60001901801990921691161790526c161132b6b2b933b2b731bc911d60991b919093019081528d51600d909101928e0191508083835b6020831061109b5780518252601f19909201916020918201910161107c565b51815160209384036101000a60001901801990921691161790526d161134b9a4b73a32b93730b6111d60911b919093019081528c51600e909101928d0191508083835b602083106110fd5780518252601f1990920191602091820191016110de565b51815160209384036101000a60001901801990921691161790526e16113732b2b239a9b2b73232b9111d60891b919093019081528b51600f909101928c0191508083835b602083106111605780518252601f199092019160209182019101611141565b6001836020036101000a03801982511681845116808217855250505050505090500180600b60fa1b81525060010188805190602001908083835b602083106111b95780518252601f19909201916020918201910161119a565b51815160209384036101000a60001901801990921691161790526c1611383937b837b9b2b9111d1160991b919093019081528951600d909101928a0191508083835b6020831061121a5780518252601f1990920191602091820191016111fb565b51815160209384036101000a60001901801990921691161790526c11161132b732213637b1b5911d60991b919093019081528851600d90910192890191508083835b6020831061127b5780518252601f19909201916020918201910161125c565b51815160209384036101000a60001901801990921691161790526d16113a32b936b4b730ba32b2111d60911b919093019081528751600e90910192880191508083835b602083106112dd5780518252601f1990920191602091820191016112be565b51815160209384036101000a60001901801990921691161790526b161130b1b1b2b83a32b2111d60a11b919093019081528651600c90910192870191508083835b6020831061133d5780518252601f19909201916020918201910161131e565b51815160209384036101000a60001901801990921691161790526a16113932b33ab9b2b2111d60a91b919093019081528551600b90910192860191508083835b6020831061139c5780518252601f19909201916020918201910161137d565b51815160209384036101000a60001901801990921691161790526b16113234b9b0b13632b2111d60a11b919093019081528451600c90910192850191508083835b602083106113fc5780518252601f1990920191602091820191016113dd565b6001836020036101000a03801982511681845116808217855250505050505090500180607d60f81b8152506001019c50505050505050505050505050604051602081830303815290604052905090565b60085460ff1690565b60005460ff166114965760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b600c54600160a81b900460ff16156114e8576040805162461bcd60e51b815260206004820152601060248201526f5375727665792064697361626c65642160801b604482015290519081900360640190fd5b600c5460ff1615611535576040805162461bcd60e51b8152602060048201526012602482015271537572766579205465726d696e617465642160701b604482015290519081900360640190fd5b60135460ff161561157b576040805162461bcd60e51b81526020600482015260176024820152600080516020613c33833981519152604482015290519081900360640190fd5b6000600a54116115c0576040805162461bcd60e51b81526020600482015260136024820152600080516020613cf6833981519152604482015290519081900360640190fd5b600a544310611606576040805162461bcd60e51b815260206004820152600d60248201526c53757276657920656e6465642160981b604482015290519081900360640190fd5b600154604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561166057600080fd5b505af1158015611674573d6000803e3d6000fd5b505050506040513d602081101561168a57600080fd5b5050336000818152600d60209081526040918290208054850190819055600f805486019055825185815292519093927f68e07974e86f9190b39c5e1783e6ba66b3d0d7ccf507de51450f14e594d1686892908290030190a26116ea613b5b565b5050565b60606116f984611ba0565b611702846122fa565b61170b84611ba0565b6040516020018080711139b7bab931b2a637b1b0ba34b7b7111d1160711b81525060120184805190602001908083835b6020831061175a5780518252601f19909201916020918201910161173b565b51815160209384036101000a60001901801990921691161790527411161139b7bab931b2a637b1b0ba34b7b724b2111d60591b919093019081528551601590910192860191508083835b602083106117c35780518252601f1990920191602091820191016117a4565b51815160209384036101000a60001901801990921691161790526c16113637b1b0ba34b7b7111d1160991b919093019081528451600d90910192850191508083835b602083106118245780518252601f199092019160209182019101611805565b6001836020036101000a038019825116818451168082178552505050505050905001935050505060405160208183030381529060405290509392505050565b60005460ff166118a45760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b60005461010090046001600160a01b031633146118f25760405162461bcd60e51b8152600401808060200182810382526022815260200180613c7a6022913960400191505060405180910390fd5b600a541561193a576040805162461bcd60e51b815260206004820152601060248201526f416c726561647920737461727465642160801b604482015290519081900360640190fd5b600c805460ff1960ff60a81b19909116600160a81b17166001179055565b60005460ff166119995760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b600c54600160a81b900460ff16156119eb576040805162461bcd60e51b815260206004820152601060248201526f5375727665792064697361626c65642160801b604482015290519081900360640190fd5b6000600a5411611a30576040805162461bcd60e51b81526020600482015260136024820152600080516020613cf6833981519152604482015290519081900360640190fd5b60135460ff16611a8c57600a54431015611a8c576040805162461bcd60e51b8152602060048201526018602482015277537572766579206973207374696c6c2072756e6e696e672160401b604482015290519081900360640190fd5b600c5460ff16158015611aa95750600c54600160a81b900460ff16155b15611abb57611ab66109da565b610bce565b610bce6001613700565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109cf5780601f106109a4576101008083540402835291602001916109cf565b600a5490565b60028054604080516020601f60001961010060018716150201909416859004938401819004810282018101909252828152606093909290918301828280156109cf5780601f106109a4576101008083540402835291602001916109cf565b60045490565b600554600160a01b900460ff1690565b604080518082018252601081526f181899199a1a9b1b9c1cb0b131b232b360811b60208201528151602a80825260608281019094526001600160a01b03851692918491602082018180368337019050509050600360fc1b81600081518110611c0457fe5b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611c2d57fe5b60200101906001600160f81b031916908160001a90535060005b6014811015611d13578260048583600c0160208110611c6257fe5b1a60f81b6001600160f81b031916901c60f81c60ff1681518110611c8257fe5b602001015160f81c60f81b828260020260020181518110611c9f57fe5b60200101906001600160f81b031916908160001a905350828482600c0160208110611cc657fe5b825191901a600f16908110611cd757fe5b602001015160f81c60f81b828260020260030181518110611cf457fe5b60200101906001600160f81b031916908160001a905350600101611c47565b50925050505b919050565b606080829050600281511015611d4e5750506040805180820190915260028152615b5d60f01b6020820152611d19565b605b60f81b6001600160f81b03191681600081518110611d6a57fe5b01602001516001600160f81b03191614611d9e5750506040805180820190915260028152615b5d60f01b6020820152611d19565b8051605d60f81b9082906000198101908110611db657fe5b01602001516001600160f81b03191614611dea5750506040805180820190915260028152615b5d60f01b6020820152611d19565b5090919050565b60035460ff1690565b60005460ff16611e3b5760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b600c54600160a81b900460ff1615611e8d576040805162461bcd60e51b815260206004820152601060248201526f5375727665792064697361626c65642160801b604482015290519081900360640190fd5b600c5460ff1615611eda576040805162461bcd60e51b8152602060048201526012602482015271537572766579205465726d696e617465642160701b604482015290519081900360640190fd5b60135460ff1615611f20576040805162461bcd60e51b81526020600482015260176024820152600080516020613c33833981519152604482015290519081900360640190fd5b6000600a5411611f65576040805162461bcd60e51b81526020600482015260136024820152600080516020613cf6833981519152604482015290519081900360640190fd5b600a544310611fab576040805162461bcd60e51b815260206004820152600d60248201526c53757276657920656e6465642160981b604482015290519081900360640190fd5b336000908152600d6020526040902054811115612005576040805162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e742066756e64732160681b604482015290519081900360640190fd5b336000818152600d6020908152604080832080548690039055600f80548690039055600e82529182902080548501908190556010805486019055825185815292519093927f66ac89bb1a67976b7989a763cdec43b50a592dc86bb59f48d08e26572cb1522192908290030190a26116ea613b5b565b60005460ff166120bb5760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b600c54600160a81b900460ff161561210d576040805162461bcd60e51b815260206004820152601060248201526f5375727665792064697361626c65642160801b604482015290519081900360640190fd5b600c5460ff161561215a576040805162461bcd60e51b8152602060048201526012602482015271537572766579205465726d696e617465642160701b604482015290519081900360640190fd5b60135460ff16156121a0576040805162461bcd60e51b81526020600482015260176024820152600080516020613c33833981519152604482015290519081900360640190fd5b6000600a54116121e5576040805162461bcd60e51b81526020600482015260136024820152600080516020613cf6833981519152604482015290519081900360640190fd5b600a54431061222b576040805162461bcd60e51b815260206004820152600d60248201526c53757276657920656e6465642160981b604482015290519081900360640190fd5b336000908152600e6020526040902054811115612285576040805162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e742066756e64732160681b604482015290519081900360640190fd5b336000818152600e6020908152604080832080548690039055601080548690039055600d8252918290208054850190819055600f805486019055825185815292519093927f483d089c46398a02a8985779ec41436d62364736e8a9b40a10183fa12867839292908290030190a26116ea613b5b565b60608161231f57506040805180820190915260018152600360fc1b6020820152611d19565b8160005b811561233757600101600a82049150612323565b60608167ffffffffffffffff8111801561235057600080fd5b506040519080825280601f01601f19166020018201604052801561237b576020820181803683370190505b50905060001982015b8515611d1357600a860660300160f81b828280600190039350815181106123a757fe5b60200101906001600160f81b031916908160001a905350600a86049550612384565b600c54600160a81b900460ff1690565b60005460ff161561241b5760405162461bcd60e51b8152600401808060200182810382526021815260200180613d166021913960400191505060405180910390fd5b60005461010090046001600160a01b031633146124695760405162461bcd60e51b8152600401808060200182810382526029815260200180613c9c6029913960400191505060405180910390fd5b6003805460048890556005805460ff60a01b1916600160a01b891515021790556008805460ff199081168815151761ff001916610100881515810291909117909255600c8054610100600160a81b03199081166001600160a01b0389811686029190911790925560005494168c82168402179091168c1515179093556127479291041663841d0ed78a612531576040518060400160405280601e81526020017f6765744d696e696d756d426c6f636b4e756d626572466f72537572766579000081525061254b565b604051806060016040528060278152602001613c53602791395b604051806020016040528060008152506040518363ffffffff1660e01b8152600401808060200180602001838103835285818151815260200191508051906020019080838360005b838110156125ab578181015183820152602001612593565b50505050905090810190601f1680156125d85780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561260b5781810151838201526020016125f3565b50505050905090810190601f1680156126385780820380516001836020036101000a031916815260200191505b5094505050505060006040518083038186803b15801561265757600080fd5b505afa15801561266b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561269457600080fd5b8101908080516040519392919084600160201b8211156126b357600080fd5b9083019060208201858111156126c857600080fd5b8251600160201b8111828201881017156126e157600080fd5b82525081516020918201929091019080838360005b8381101561270e5781810151838201526020016126f6565b50505050905090810190601f16801561273b5780820380516001836020036101000a031916815260200191505b50604052505050612c4e565b600b5560125550506000805460ff191660011790555050505050565b6001600160a01b03166000908152600d6020908152604080832054600e909252909120549091565b600b5490565b60005461010090046001600160a01b031690565b60005460ff166127e65760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b600c54600160a81b900460ff1615612838576040805162461bcd60e51b815260206004820152601060248201526f5375727665792064697361626c65642160801b604482015290519081900360640190fd5b600c5460ff1615612885576040805162461bcd60e51b8152602060048201526012602482015271537572766579205465726d696e617465642160701b604482015290519081900360640190fd5b60135460ff16156128cb576040805162461bcd60e51b81526020600482015260176024820152600080516020613c33833981519152604482015290519081900360640190fd5b6000600a5411612910576040805162461bcd60e51b81526020600482015260136024820152600080516020613cf6833981519152604482015290519081900360640190fd5b600a544310612956576040805162461bcd60e51b815260206004820152600d60248201526c53757276657920656e6465642160981b604482015290519081900360640190fd5b600154604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b1580156129b057600080fd5b505af11580156129c4573d6000803e3d6000fd5b505050506040513d60208110156129da57600080fd5b5050336000818152600e602090815260409182902080548501908190556010805486019055825185815292519093927f4e855894dd91aeb0192726b247db8c42f6d1275c4094286dfeadd2005971a1b492908290030190a26116ea613b5b565b60125490565b600854610100900460ff1690565b60005460ff16612a8f5760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b600c54600160a81b900460ff1615612ae1576040805162461bcd60e51b815260206004820152601060248201526f5375727665792064697361626c65642160801b604482015290519081900360640190fd5b6000600a5411612b26576040805162461bcd60e51b81526020600482015260136024820152600080516020613cf6833981519152604482015290519081900360640190fd5b60135460ff16612b8257600a54431015612b82576040805162461bcd60e51b8152602060048201526018602482015277537572766579206973207374696c6c2072756e6e696e672160401b604482015290519081900360640190fd5b60005461010090046001600160a01b03163314612bdd576040805162461bcd60e51b8152602060048201526014602482015273556e617574686f72697a6564204163636573732160601b604482015290519081900360640190fd5b600c5460ff1615612c2b576040805162461bcd60e51b8152602060048201526013602482015272416c7265616479207465726d696e617465642160681b604482015290519081900360640190fd5b600c805460ff19166001179055565b60035461010090046001600160a01b031690565b60006020825110611d1957506020015190565b60005460ff16612ca25760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b60005461010090046001600160a01b03163314612cf05760405162461bcd60e51b8152600401808060200182810382526022815260200180613c7a6022913960400191505060405180910390fd5b600a5415612d38576040805162461bcd60e51b815260206004820152601060248201526f416c726561647920737461727465642160801b604482015290519081900360640190fd5b600c54600160a81b900460ff1615612d8b576040805162461bcd60e51b8152602060048201526011602482015270416c72656164792064697361626c65642160781b604482015290519081900360640190fd5b600b544301600a55565b6005546001600160a01b031690565b600c5460ff1690565b600c5461010090046001600160a01b031690565b60005460ff16612e025760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b600c54600160a81b900460ff1615612e54576040805162461bcd60e51b815260206004820152601060248201526f5375727665792064697361626c65642160801b604482015290519081900360640190fd5b600c5460ff1615612ea1576040805162461bcd60e51b8152602060048201526012602482015271537572766579205465726d696e617465642160701b604482015290519081900360640190fd5b60135460ff1615612ee7576040805162461bcd60e51b81526020600482015260176024820152600080516020613c33833981519152604482015290519081900360640190fd5b6000600a5411612f2c576040805162461bcd60e51b81526020600482015260136024820152600080516020613cf6833981519152604482015290519081900360640190fd5b600a544310612f72576040805162461bcd60e51b815260206004820152600d60248201526c53757276657920656e6465642160981b604482015290519081900360640190fd5b336000908152600e6020526040902054811115612fcc576040805162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e742066756e64732160681b604482015290519081900360640190fd5b6001546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561302057600080fd5b505af1158015613034573d6000803e3d6000fd5b505050506040513d602081101561304a57600080fd5b5050336000818152600e6020908152604091829020805485900390819055601080548690039055825185815292519093927fa369065c2bc9cea922be2bf705101c039bc3af5575b8548b4d16d6a0b1893e2592908290030190a25050565b60005460ff166130e95760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b600c54600160a81b900460ff161561313b576040805162461bcd60e51b815260206004820152601060248201526f5375727665792064697361626c65642160801b604482015290519081900360640190fd5b600c5460ff1615613188576040805162461bcd60e51b8152602060048201526012602482015271537572766579205465726d696e617465642160701b604482015290519081900360640190fd5b60135460ff16156131ce576040805162461bcd60e51b81526020600482015260176024820152600080516020613c33833981519152604482015290519081900360640190fd5b6000600a5411613213576040805162461bcd60e51b81526020600482015260136024820152600080516020613cf6833981519152604482015290519081900360640190fd5b600a544310613259576040805162461bcd60e51b815260206004820152600d60248201526c53757276657920656e6465642160981b604482015290519081900360640190fd5b336000908152600e6020908152604080832054600d90925290912054016132b3576040805162461bcd60e51b81526020600482015260096024820152684e6f20766f7465732160b81b604482015290519081900360640190fd5b336000818152600d6020908152604080832054600e835281842054600154835163a9059cbb60e01b8152600481019790975281830160248801529251919590946001600160a01b039093169363a9059cbb9360448084019492938390030190829087803b15801561332357600080fd5b505af1158015613337573d6000803e3d6000fd5b505050506040513d602081101561334d57600080fd5b5050336000818152600d60209081526040808320839055600e825280832092909255600f805486900390556010805485900390558151848601815291517f1dd395e89b5da0e80f0242ec498fdfcaa6bc77d32b4417d89ec195e160fd7ad89281900390910190a25050565b60005460ff166133f95760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b600c54600160a81b900460ff161561344b576040805162461bcd60e51b815260206004820152601060248201526f5375727665792064697361626c65642160801b604482015290519081900360640190fd5b600c5460ff1615613498576040805162461bcd60e51b8152602060048201526012602482015271537572766579205465726d696e617465642160701b604482015290519081900360640190fd5b60135460ff16156134de576040805162461bcd60e51b81526020600482015260176024820152600080516020613c33833981519152604482015290519081900360640190fd5b6000600a5411613523576040805162461bcd60e51b81526020600482015260136024820152600080516020613cf6833981519152604482015290519081900360640190fd5b600a544310613569576040805162461bcd60e51b815260206004820152600d60248201526c53757276657920656e6465642160981b604482015290519081900360640190fd5b336000908152600d60205260409020548111156135c3576040805162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e742066756e64732160681b604482015290519081900360640190fd5b6001546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561361757600080fd5b505af115801561362b573d6000803e3d6000fd5b505050506040513d602081101561364157600080fd5b5050336000818152600d6020908152604091829020805485900390819055600f80548690039055825185815292519093927fc4e9f6c43fa16caaa3278b92f5fadf533efad8e8124fa4253fd9490cdc0742b492908290030190a25050565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109cf5780601f106109a4576101008083540402835291602001916109cf565b8015806137285750336000908152600e6020908152604080832054600d909252909120540115155b613770576040805162461bcd60e51b81526020600482015260146024820152734e6f7468696e6720746f2057697468647261772160601b604482015290519081900360640190fd5b80158061378d57503360009081526011602052604090205460ff16155b6137d4576040805162461bcd60e51b8152602060048201526013602482015272416c726561647920576974686472617765642160681b604482015290519081900360640190fd5b336000908152600e6020908152604080832054600d90925290912054011580159061380f57503360009081526011602052604090205460ff16155b156138c357600154336000818152600e6020908152604080832054600d835281842054825163a9059cbb60e01b81526004810196909652016024850152516001600160a01b039094169363a9059cbb93604480820194918390030190829087803b15801561387c57600080fd5b505af1158015613890573d6000803e3d6000fd5b505050506040513d60208110156138a657600080fd5b5050336000908152601160205260409020805460ff191660011790555b50565b60078054604080516020600260018516156101000260001901909416849004601f810182900482028301820190935282825260609460069361395e93928301828280156139545780601f1061392957610100808354040283529160200191613954565b820191906000526020600020905b81548152906001019060200180831161393757829003601f168201915b5050505050611d1e565b600960405160200180806b1131b7b232a730b6b2911d1160a11b815250600c01858054600181600116156101000203166002900480156139d55780601f106139b35761010080835404028352918201916139d5565b820191906000526020600020905b8154815290600101906020018083116139c1575b5050807411161136b2ba3437b229b4b3b730ba3ab932911d1160591b81525060150184805460018160011615610100020316600290048015613a4e5780601f10613a2c576101008083540402835291820191613a4e565b820191906000526020600020905b815481529060010190602001808311613a3a575b5050807f222c2272657475726e416269506172616d65746572734172726179223a000000815250601d0183805190602001908083835b60208310613aa35780518252601f199092019160209182019101613a84565b6001836020036101000a038019825116818451168082178552505050505050905001806c16113932b83630b1b2b9911d1160991b815250600d0182805460018160011615610100020316600290048015613b345780601f10613b12576101008083540402835291820191613b34565b820191906000526020600020905b815481529060010190602001808311613b20575b5050601160f91b815260408051601e19818403018152600190920190529550505050505090565b6012541580613b7b5750601254600f54108015613b7b5750601254601054105b15613b8557610bce565b6013805460ff19166001179055610bce6109da565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613bdb57805160ff1916838001178555613c08565b82800160010185558215613c08579182015b82811115613c08578251825591602001919060010190613bed565b50613c14929150613c18565b5090565b6109d791905b80821115613c145760008155600101613c1e56fe566f7465732048617264204361702072656163686564210000000000000000006765744d696e696d756d426c6f636b4e756d626572466f72456d657267656e63795375727665794f6e6c792050726f78792063616e2063616c6c20746869732066756e6374696f6e214f6e6c79204f726967696e616c2050726f78792063616e2063616c6c2074686973206d6574686f64215374696c6c2077616974696e6720666f7220736574436f6c6c61746572616c4461746120746f2062652063616c6c656421537572766579204e6f7420537461727465642100000000000000000000000000736574436f6c6c61746572616c4461746120616c72656164792063616c6c656421a2646970667358221220cc7f3bf856466276233180424b6f508fe3d144c7a0a548366500787677c07fa564736f6c6343000608003343616e6e6f742068617665207a65726f206164647265737320666f722066756e6374696f6e616c69747920746f20736574206f72206f6e652074696d652066756e6374696f6e616c69747920746f2063616c6c636f64654e616d6520697320616c7265616479207573656420627920616e6f746865722066756e6374696f6e616c69747943616e6e6f74206861766520656d70747920737472696e6720666f72206d6574686f645369676e617475726543616e6e6f74207265706c61636520756e6578697374696e67206f7220696e6163746976652066756e6374696f6e616c6974794f6e6c792050726f78792063616e2063616c6c20746869732066756e6374696f6e616c6974794f6e652054696d652046756e6374696f6e616c697479206d6574686f64207369676e617475726520616c6c6f7765642069732063616c6c4f6e6554696d65286164647265737329a26469706673582212206b900863d1b72a8b7c1d3692f37b10d62ed3c830cf261066e61a771a30868fdb64736f6c63430006080033
Deployed Bytecode
0x60806040523480156200001157600080fd5b50600436106200005e5760003560e01c80632c9f55ed14620000635780633914a04f146200008e578063933a9ce81462000098578063a7d5a1ee14620000be578063a9771afd1462000311575b600080fd5b6200008c600480360360208110156200007b57600080fd5b50356001600160a01b03166200034e565b005b6200008c620006f8565b620000a262000860565b604080516001600160a01b039092168252519081900360200190f35b620000a2600480360360a0811015620000d657600080fd5b810190602081018135600160201b811115620000f157600080fd5b8201836020820111156200010457600080fd5b803590602001918460018302840111600160201b831117156200012657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160a01b03853516959094909350604081019250602001359050600160201b8111156200018a57600080fd5b8201836020820111156200019d57600080fd5b803590602001918460018302840111600160201b83111715620001bf57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200021257600080fd5b8201836020820111156200022557600080fd5b803590602001918460018302840111600160201b831117156200024757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200029a57600080fd5b820183602082011115620002ad57600080fd5b803590602001918460018302840111600160201b83111715620002cf57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506200086f945050505050565b6200033a600480360360208110156200032957600080fd5b50356001600160a01b031662000af5565b604080519115158252519081900360200190f35b6000546001600160a01b03163314620003995760405162461bcd60e51b8152600401808060200182810382526026815260200180620053be6026913960400191505060405180910390fd5b6001600160a01b03811660009081526001602052604090205460ff16620003fe576040805162461bcd60e51b8152602060048201526014602482015273556e617574686f72697a6564204163636573732160601b604482015290519081900360640190fd5b60008190506000816001600160a01b0316633fa4d9ca6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200043f57600080fd5b505afa15801562000454573d6000803e3d6000fd5b505050506040513d60208110156200046b57600080fd5b5051905080620004c2576040805162461bcd60e51b815260206004820152601760248201527f53757276657920776173206e6f74207374617274656421000000000000000000604482015290519081900360640190fd5b816001600160a01b0316636c57f5a96040518163ffffffff1660e01b815260040160206040518083038186803b158015620004fc57600080fd5b505afa15801562000511573d6000803e3d6000fd5b505050506040513d60208110156200052857600080fd5b50511562000575576040805162461bcd60e51b815260206004820152601560248201527450726f706f73616c2069732064697361626c65642160581b604482015290519081900360640190fd5b816001600160a01b03166315db404e6040518163ffffffff1660e01b815260040160206040518083038186803b158015620005af57600080fd5b505afa158015620005c4573d6000803e3d6000fd5b505050506040513d6020811015620005db57600080fd5b505162000638578043101562000638576040805162461bcd60e51b815260206004820152601860248201527f537572766579206973207374696c6c2072756e6e696e67210000000000000000604482015290519081900360640190fd5b816001600160a01b031663d1cc99766040518163ffffffff1660e01b815260040160206040518083038186803b1580156200067257600080fd5b505afa15801562000687573d6000803e3d6000fd5b505050506040513d60208110156200069e57600080fd5b505115620006f3576040805162461bcd60e51b815260206004820152601a60248201527f53757276657920616c7265616479207465726d696e6174656421000000000000604482015290519081900360640190fd5b505050565b6000546001600160a01b031615806200071b57506000546001600160a01b031633145b6000546001600160a01b031662000768576040518060400160405280601d81526020017f4f6e6c792050726f78792063616e20746f67676c6520697473656c662100000081525062000794565b6040518060400160405280601281526020017150726f787920616c7265616479207365742160701b8152505b90620008215760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620007e5578181015183820152602001620007cb565b50505050905090810190601f168015620008135780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000546001600160a01b0316156200083c5760006200083e565b335b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b600080546001600160a01b03163314620008bb5760405162461bcd60e51b8152600401808060200182810382526026815260200180620053be6026913960400191505060405180910390fd5b62000aeb868686858a8a8a8a8a6000809054906101000a90046001600160a01b0316604051620008eb9062000fee565b8080602001876001600160a01b03166001600160a01b03168152602001806020018060200180602001866001600160a01b03166001600160a01b0316815260200185810385528b818151815260200191508051906020019080838360005b838110156200096357818101518382015260200162000949565b50505050905090810190601f168015620009915780820380516001836020036101000a031916815260200191505b5085810384528951815289516020918201918b019080838360005b83811015620009c6578181015183820152602001620009ac565b50505050905090810190601f168015620009f45780820380516001836020036101000a031916815260200191505b5085810383528851815288516020918201918a019080838360005b8381101562000a2957818101518382015260200162000a0f565b50505050905090810190601f16801562000a575780820380516001836020036101000a031916815260200191505b50858103825287518152875160209182019189019080838360005b8381101562000a8c57818101518382015260200162000a72565b50505050905090810190601f16801562000aba5780820380516001836020036101000a031916815260200191505b509a5050505050505050505050604051809103906000f08015801562000ae4573d6000803e3d6000fd5b5062000b13565b9695505050505050565b6001600160a01b031660009081526001602052604090205460ff1690565b600062000b238686868662000b52565b506001600160a01b0381166000908152600160208190526040909120805460ff19169091179055949350505050565b600062000b6f856040518060200160405280600081525062000fd8565b159050600062000b8f836040518060200160405280600081525062000fd8565b159050818062000ba757508115801562000ba7575080155b62000bb457600162000bc1565b6001600160a01b03851615155b62000bfe5760405162461bcd60e51b8152600401808060200182810382526053815260200180620052db6053913960600191505060405180910390fd5b6001600160a01b038516158062000c2d575062000c2b846040518060200160405280600081525062000fd8565b155b62000c6a5760405162461bcd60e51b815260040180806020018281038252602c8152602001806200535f602c913960400191505060405180910390fd5b818062000c745750805b62000cb75762000cb1846040518060400160405280601481526020017363616c6c4f6e6554696d6528616464726573732960601b81525062000fd8565b62000cba565b60015b62000cf75760405162461bcd60e51b8152600401808060200182810382526047815260200180620053e46047913960600191505060405180910390fd5b60008060009054906101000a90046001600160a01b03166001600160a01b0316636701586a6040518163ffffffff1660e01b815260040160206040518083038186803b15801562000d4757600080fd5b505afa15801562000d5c573d6000803e3d6000fd5b505050506040513d602081101562000d7357600080fd5b5051905082801562000e575750604051630f26020160e21b81526020600482018181528951602484015289516001600160a01b03851693633c980804938c939283926044019185019080838360005b8381101562000ddc57818101518382015260200162000dc2565b50505050905090810190601f16801562000e0a5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b15801562000e2857600080fd5b505afa15801562000e3d573d6000803e3d6000fd5b505050506040513d602081101562000e5457600080fd5b50515b62000e6457600162000e70565b62000e70878562000fd8565b62000ead5760405162461bcd60e51b81526004018080602001828103825260318152602001806200532e6031913960400191505060405180910390fd5b8162000ebb57600162000f92565b604051630f26020160e21b81526020600482018181528651602484015286516001600160a01b03851693633c9808049389939283926044019185019080838360005b8381101562000f1757818101518382015260200162000efd565b50505050905090810190601f16801562000f455780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b15801562000f6357600080fd5b505afa15801562000f78573d6000803e3d6000fd5b505050506040513d602081101562000f8f57600080fd5b50515b62000fcf5760405162461bcd60e51b81526004018080602001828103825260338152602001806200538b6033913960400191505060405180910390fd5b50505050505050565b8051602091820120825192909101919091201490565b6142de8062000ffd8339019056fe60806040523480156200001157600080fd5b50604051620042de380380620042de833981810160405260c08110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b506040818152602083015192018051929491939192846401000000008211156200010f57600080fd5b9083019060208201858111156200012557600080fd5b82516401000000008111828201881017156200014057600080fd5b82525081516020918201929091019080838360005b838110156200016f57818101518382015260200162000155565b50505050905090810190601f1680156200019d5780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084640100000000821115620001c157600080fd5b908301906020820185811115620001d757600080fd5b8251640100000000811182820188101715620001f257600080fd5b82525081516020918201929091019080838360005b838110156200022157818101518382015260200162000207565b50505050905090810190601f1680156200024f5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200027357600080fd5b9083019060208201858111156200028957600080fd5b8251640100000000811182820188101715620002a457600080fd5b82525081516020918201929091019080838360005b83811015620002d3578181015183820152602001620002b9565b50505050905090810190601f168015620003015780820380516001836020036101000a031916815260200191505b506040526020015191506200032690508686868686866001600160e01b036200033216565b50505050505062000562565b60005461010090046001600160a01b03161562000396576040805162461bcd60e51b815260206004820152601460248201527f416c726561647920696e697469616c697a656421000000000000000000000000604482015290519081900360640190fd5b80600060016101000a8154816001600160a01b0302191690836001600160a01b0316021790556001600160a01b03166321df0da76040518163ffffffff1660e01b815260040160206040518083038186803b158015620003f557600080fd5b505afa1580156200040a573d6000803e3d6000fd5b505050506040513d60208110156200042157600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055855162000457906002906020890190620004bd565b50600580546001600160a01b0319166001600160a01b038716179055835162000488906006906020870190620004bd565b5082516200049e906007906020860190620004bd565b508151620004b4906009906020850190620004bd565b50505050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200050057805160ff191683800117855562000530565b8280016001018555821562000530579182015b828111156200053057825182559160200191906001019062000513565b506200053e92915062000542565b5090565b6200055f91905b808211156200053e576000815560010162000549565b90565b613d6c80620005726000396000f3fe608060405234801561001057600080fd5b50600436106102535760003560e01c806366844c7e11610146578063b8e010de116100c3578063d1cc997611610087578063d1cc9976146108e9578063e9790d02146108f1578063eb3464a1146108f9578063eba3aa4214610916578063ef0e99a71461091e578063f48f489e1461093b57610253565b8063b8e010de14610825578063b9c33b261461082d578063bd37c8aa14610835578063be9a6555146108d9578063ce2ce3fc146108e157610253565b80638fc38e0b1161010a5780638fc38e0b146107cc578063933a9ce8146107d4578063a60a07b2146107f8578063aa1cc2e914610815578063b23d26521461081d57610253565b806366844c7e146107075780636900a3ae146107245780636c57f5a9146107415780638d06bc5b146107495780638d337b81146107a657610253565b80633ccfd60b116101d457806355d92ae31161019857806355d92ae31461061057806356ca623e146106185780635ad3c9311461063e5780635f9e8f82146106e257806366698389146106ea57610253565b80633ccfd60b146105d65780633e1b421d146105de5780633fa4d9ca146105e65780634398037c14610600578063485e2d9e1461060857610253565b806316375cb31161021b57806316375cb31461056b57806316e29d711461057357806319b05f491461057b5780632c394d99146105985780632f2770db146105ce57610253565b806304f181b7146102585780630c08bf88146102d55780630dc96015146102df57806314ebd7831461030057806315db404e1461054f575b600080fd5b610260610943565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029a578181015183820152602001610282565b50505050905090810190601f1680156102c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102dd6109da565b005b6102e7610bd0565b6040805192835260208301919091528051918290030190f35b6102dd600480360360c081101561031657600080fd5b810190602081018135600160201b81111561033057600080fd5b82018360208201111561034257600080fd5b803590602001918460018302840111600160201b8311171561036357600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160a01b03853516959094909350604081019250602001359050600160201b8111156103c657600080fd5b8201836020820111156103d857600080fd5b803590602001918460018302840111600160201b831117156103f957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561044b57600080fd5b82018360208201111561045d57600080fd5b803590602001918460018302840111600160201b8311171561047e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156104d057600080fd5b8201836020820111156104e257600080fd5b803590602001918460018302840111600160201b8311171561050357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b03169150610bda9050565b610557610d50565b604080519115158252519081900360200190f35b610260610d59565b61055761144c565b6102dd6004803603602081101561059157600080fd5b5035611455565b610260600480360360608110156105ae57600080fd5b506001600160a01b038135811691602081013591604090910135166116ee565b6102dd611863565b6102dd611958565b610260611ac5565b6105ee611b26565b60408051918252519081900360200190f35b610260611b2c565b6105ee611b8a565b610557611b90565b6102606004803603602081101561062e57600080fd5b50356001600160a01b0316611ba0565b6102606004803603602081101561065457600080fd5b810190602081018135600160201b81111561066e57600080fd5b82018360208201111561068057600080fd5b803590602001918460018302840111600160201b831117156106a157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611d1e945050505050565b610557611df1565b6102dd6004803603602081101561070057600080fd5b5035611dfa565b6102dd6004803603602081101561071d57600080fd5b503561207a565b6102606004803603602081101561073a57600080fd5b50356122fa565b6105576123c9565b6102dd600480360361010081101561076057600080fd5b5080351515906001600160a01b0360208201358116916040810135916060820135151591608081013515159160a082013515159160c08101359091169060e001356123d9565b6102e7600480360360208110156107bc57600080fd5b50356001600160a01b0316612763565b6105ee61278b565b6107dc612791565b604080516001600160a01b039092168252519081900360200190f35b6102dd6004803603602081101561080e57600080fd5b50356127a5565b6105ee612a3a565b610557612a40565b6102dd612a4e565b6107dc612c3a565b6105ee6004803603602081101561084b57600080fd5b810190602081018135600160201b81111561086557600080fd5b82018360208201111561087757600080fd5b803590602001918460018302840111600160201b8311171561089857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612c4e945050505050565b6102dd612c61565b6107dc612d95565b610557612da4565b6107dc612dad565b6102dd6004803603602081101561090f57600080fd5b5035612dc1565b6102dd6130a8565b6102dd6004803603602081101561093457600080fd5b50356133b8565b61026061369f565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109cf5780601f106109a4576101008083540402835291602001916109cf565b820191906000526020600020905b8154815290600101906020018083116109b257829003601f168201915b505050505090505b90565b60005460ff16610a1b5760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b600c54600160a81b900460ff1615610a6d576040805162461bcd60e51b815260206004820152601060248201526f5375727665792064697361626c65642160801b604482015290519081900360640190fd5b6000600a5411610ab2576040805162461bcd60e51b81526020600482015260136024820152600080516020613cf6833981519152604482015290519081900360640190fd5b60135460ff16610b0e57600a54431015610b0e576040805162461bcd60e51b8152602060048201526018602482015277537572766579206973207374696c6c2072756e6e696e672160401b604482015290519081900360640190fd5b600c5460ff1615610b5c576040805162461bcd60e51b8152602060048201526013602482015272416c7265616479207465726d696e617465642160681b604482015290519081900360640190fd5b600060019054906101000a90046001600160a01b03166001600160a01b0316632a7434a86040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610bac57600080fd5b505af1158015610bc0573d6000803e3d6000fd5b50505050610bce6000613700565b565b600f546010549091565b60005461010090046001600160a01b031615610c34576040805162461bcd60e51b8152602060048201526014602482015273416c726561647920696e697469616c697a65642160601b604482015290519081900360640190fd5b80600060016101000a8154816001600160a01b0302191690836001600160a01b0316021790556001600160a01b03166321df0da76040518163ffffffff1660e01b815260040160206040518083038186803b158015610c9257600080fd5b505afa158015610ca6573d6000803e3d6000fd5b505050506040513d6020811015610cbc57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790558551610cf0906002906020890190613b9a565b50600580546001600160a01b0319166001600160a01b0387161790558351610d1f906006906020870190613b9a565b508251610d33906007906020860190613b9a565b508151610d47906009906020850190613b9a565b50505050505050565b60135460ff1690565b600354600454600554606092610d81926101009091046001600160a01b0390811692166116ee565b600554600160a01b900460ff16610db5576040518060400160405280600581526020016466616c736560d81b815250610dd3565b604051806040016040528060048152602001637472756560e01b8152505b60035460ff16610e00576040518060400160405280600581526020016466616c736560d81b815250610e1e565b604051806040016040528060048152602001637472756560e01b8152505b60085460ff16610e4b576040518060400160405280600581526020016466616c736560d81b815250610e69565b604051806040016040528060048152602001637472756560e01b8152505b600854610100900460ff16610e9b576040518060400160405280600581526020016466616c736560d81b815250610eb9565b604051806040016040528060048152602001637472756560e01b8152505b610ec16138c6565b600c54610edb9061010090046001600160a01b0316611ba0565b610ee6600a546122fa565b600c5460ff16610f13576040518060400160405280600581526020016466616c736560d81b815250610f31565b604051806040016040528060048152602001637472756560e01b8152505b610f3c600f546122fa565b610f476010546122fa565b600c54600160a81b900460ff16610f7b576040518060400160405280600581526020016466616c736560d81b815250610f99565b604051806040016040528060048152602001637472756560e01b8152505b6040516020018080607b60f81b8152506001018d805190602001908083835b60208310610fd75780518252601f199092019160209182019101610fb8565b51815160209384036101000a60001901801990921691161790526e11161139bab136b4ba30b13632911d60891b919093019081528e51600f909101928f0191508083835b6020831061103a5780518252601f19909201916020918201910161101b565b51815160209384036101000a60001901801990921691161790526c161132b6b2b933b2b731bc911d60991b919093019081528d51600d909101928e0191508083835b6020831061109b5780518252601f19909201916020918201910161107c565b51815160209384036101000a60001901801990921691161790526d161134b9a4b73a32b93730b6111d60911b919093019081528c51600e909101928d0191508083835b602083106110fd5780518252601f1990920191602091820191016110de565b51815160209384036101000a60001901801990921691161790526e16113732b2b239a9b2b73232b9111d60891b919093019081528b51600f909101928c0191508083835b602083106111605780518252601f199092019160209182019101611141565b6001836020036101000a03801982511681845116808217855250505050505090500180600b60fa1b81525060010188805190602001908083835b602083106111b95780518252601f19909201916020918201910161119a565b51815160209384036101000a60001901801990921691161790526c1611383937b837b9b2b9111d1160991b919093019081528951600d909101928a0191508083835b6020831061121a5780518252601f1990920191602091820191016111fb565b51815160209384036101000a60001901801990921691161790526c11161132b732213637b1b5911d60991b919093019081528851600d90910192890191508083835b6020831061127b5780518252601f19909201916020918201910161125c565b51815160209384036101000a60001901801990921691161790526d16113a32b936b4b730ba32b2111d60911b919093019081528751600e90910192880191508083835b602083106112dd5780518252601f1990920191602091820191016112be565b51815160209384036101000a60001901801990921691161790526b161130b1b1b2b83a32b2111d60a11b919093019081528651600c90910192870191508083835b6020831061133d5780518252601f19909201916020918201910161131e565b51815160209384036101000a60001901801990921691161790526a16113932b33ab9b2b2111d60a91b919093019081528551600b90910192860191508083835b6020831061139c5780518252601f19909201916020918201910161137d565b51815160209384036101000a60001901801990921691161790526b16113234b9b0b13632b2111d60a11b919093019081528451600c90910192850191508083835b602083106113fc5780518252601f1990920191602091820191016113dd565b6001836020036101000a03801982511681845116808217855250505050505090500180607d60f81b8152506001019c50505050505050505050505050604051602081830303815290604052905090565b60085460ff1690565b60005460ff166114965760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b600c54600160a81b900460ff16156114e8576040805162461bcd60e51b815260206004820152601060248201526f5375727665792064697361626c65642160801b604482015290519081900360640190fd5b600c5460ff1615611535576040805162461bcd60e51b8152602060048201526012602482015271537572766579205465726d696e617465642160701b604482015290519081900360640190fd5b60135460ff161561157b576040805162461bcd60e51b81526020600482015260176024820152600080516020613c33833981519152604482015290519081900360640190fd5b6000600a54116115c0576040805162461bcd60e51b81526020600482015260136024820152600080516020613cf6833981519152604482015290519081900360640190fd5b600a544310611606576040805162461bcd60e51b815260206004820152600d60248201526c53757276657920656e6465642160981b604482015290519081900360640190fd5b600154604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561166057600080fd5b505af1158015611674573d6000803e3d6000fd5b505050506040513d602081101561168a57600080fd5b5050336000818152600d60209081526040918290208054850190819055600f805486019055825185815292519093927f68e07974e86f9190b39c5e1783e6ba66b3d0d7ccf507de51450f14e594d1686892908290030190a26116ea613b5b565b5050565b60606116f984611ba0565b611702846122fa565b61170b84611ba0565b6040516020018080711139b7bab931b2a637b1b0ba34b7b7111d1160711b81525060120184805190602001908083835b6020831061175a5780518252601f19909201916020918201910161173b565b51815160209384036101000a60001901801990921691161790527411161139b7bab931b2a637b1b0ba34b7b724b2111d60591b919093019081528551601590910192860191508083835b602083106117c35780518252601f1990920191602091820191016117a4565b51815160209384036101000a60001901801990921691161790526c16113637b1b0ba34b7b7111d1160991b919093019081528451600d90910192850191508083835b602083106118245780518252601f199092019160209182019101611805565b6001836020036101000a038019825116818451168082178552505050505050905001935050505060405160208183030381529060405290509392505050565b60005460ff166118a45760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b60005461010090046001600160a01b031633146118f25760405162461bcd60e51b8152600401808060200182810382526022815260200180613c7a6022913960400191505060405180910390fd5b600a541561193a576040805162461bcd60e51b815260206004820152601060248201526f416c726561647920737461727465642160801b604482015290519081900360640190fd5b600c805460ff1960ff60a81b19909116600160a81b17166001179055565b60005460ff166119995760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b600c54600160a81b900460ff16156119eb576040805162461bcd60e51b815260206004820152601060248201526f5375727665792064697361626c65642160801b604482015290519081900360640190fd5b6000600a5411611a30576040805162461bcd60e51b81526020600482015260136024820152600080516020613cf6833981519152604482015290519081900360640190fd5b60135460ff16611a8c57600a54431015611a8c576040805162461bcd60e51b8152602060048201526018602482015277537572766579206973207374696c6c2072756e6e696e672160401b604482015290519081900360640190fd5b600c5460ff16158015611aa95750600c54600160a81b900460ff16155b15611abb57611ab66109da565b610bce565b610bce6001613700565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109cf5780601f106109a4576101008083540402835291602001916109cf565b600a5490565b60028054604080516020601f60001961010060018716150201909416859004938401819004810282018101909252828152606093909290918301828280156109cf5780601f106109a4576101008083540402835291602001916109cf565b60045490565b600554600160a01b900460ff1690565b604080518082018252601081526f181899199a1a9b1b9c1cb0b131b232b360811b60208201528151602a80825260608281019094526001600160a01b03851692918491602082018180368337019050509050600360fc1b81600081518110611c0457fe5b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611c2d57fe5b60200101906001600160f81b031916908160001a90535060005b6014811015611d13578260048583600c0160208110611c6257fe5b1a60f81b6001600160f81b031916901c60f81c60ff1681518110611c8257fe5b602001015160f81c60f81b828260020260020181518110611c9f57fe5b60200101906001600160f81b031916908160001a905350828482600c0160208110611cc657fe5b825191901a600f16908110611cd757fe5b602001015160f81c60f81b828260020260030181518110611cf457fe5b60200101906001600160f81b031916908160001a905350600101611c47565b50925050505b919050565b606080829050600281511015611d4e5750506040805180820190915260028152615b5d60f01b6020820152611d19565b605b60f81b6001600160f81b03191681600081518110611d6a57fe5b01602001516001600160f81b03191614611d9e5750506040805180820190915260028152615b5d60f01b6020820152611d19565b8051605d60f81b9082906000198101908110611db657fe5b01602001516001600160f81b03191614611dea5750506040805180820190915260028152615b5d60f01b6020820152611d19565b5090919050565b60035460ff1690565b60005460ff16611e3b5760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b600c54600160a81b900460ff1615611e8d576040805162461bcd60e51b815260206004820152601060248201526f5375727665792064697361626c65642160801b604482015290519081900360640190fd5b600c5460ff1615611eda576040805162461bcd60e51b8152602060048201526012602482015271537572766579205465726d696e617465642160701b604482015290519081900360640190fd5b60135460ff1615611f20576040805162461bcd60e51b81526020600482015260176024820152600080516020613c33833981519152604482015290519081900360640190fd5b6000600a5411611f65576040805162461bcd60e51b81526020600482015260136024820152600080516020613cf6833981519152604482015290519081900360640190fd5b600a544310611fab576040805162461bcd60e51b815260206004820152600d60248201526c53757276657920656e6465642160981b604482015290519081900360640190fd5b336000908152600d6020526040902054811115612005576040805162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e742066756e64732160681b604482015290519081900360640190fd5b336000818152600d6020908152604080832080548690039055600f80548690039055600e82529182902080548501908190556010805486019055825185815292519093927f66ac89bb1a67976b7989a763cdec43b50a592dc86bb59f48d08e26572cb1522192908290030190a26116ea613b5b565b60005460ff166120bb5760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b600c54600160a81b900460ff161561210d576040805162461bcd60e51b815260206004820152601060248201526f5375727665792064697361626c65642160801b604482015290519081900360640190fd5b600c5460ff161561215a576040805162461bcd60e51b8152602060048201526012602482015271537572766579205465726d696e617465642160701b604482015290519081900360640190fd5b60135460ff16156121a0576040805162461bcd60e51b81526020600482015260176024820152600080516020613c33833981519152604482015290519081900360640190fd5b6000600a54116121e5576040805162461bcd60e51b81526020600482015260136024820152600080516020613cf6833981519152604482015290519081900360640190fd5b600a54431061222b576040805162461bcd60e51b815260206004820152600d60248201526c53757276657920656e6465642160981b604482015290519081900360640190fd5b336000908152600e6020526040902054811115612285576040805162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e742066756e64732160681b604482015290519081900360640190fd5b336000818152600e6020908152604080832080548690039055601080548690039055600d8252918290208054850190819055600f805486019055825185815292519093927f483d089c46398a02a8985779ec41436d62364736e8a9b40a10183fa12867839292908290030190a26116ea613b5b565b60608161231f57506040805180820190915260018152600360fc1b6020820152611d19565b8160005b811561233757600101600a82049150612323565b60608167ffffffffffffffff8111801561235057600080fd5b506040519080825280601f01601f19166020018201604052801561237b576020820181803683370190505b50905060001982015b8515611d1357600a860660300160f81b828280600190039350815181106123a757fe5b60200101906001600160f81b031916908160001a905350600a86049550612384565b600c54600160a81b900460ff1690565b60005460ff161561241b5760405162461bcd60e51b8152600401808060200182810382526021815260200180613d166021913960400191505060405180910390fd5b60005461010090046001600160a01b031633146124695760405162461bcd60e51b8152600401808060200182810382526029815260200180613c9c6029913960400191505060405180910390fd5b6003805460048890556005805460ff60a01b1916600160a01b891515021790556008805460ff199081168815151761ff001916610100881515810291909117909255600c8054610100600160a81b03199081166001600160a01b0389811686029190911790925560005494168c82168402179091168c1515179093556127479291041663841d0ed78a612531576040518060400160405280601e81526020017f6765744d696e696d756d426c6f636b4e756d626572466f72537572766579000081525061254b565b604051806060016040528060278152602001613c53602791395b604051806020016040528060008152506040518363ffffffff1660e01b8152600401808060200180602001838103835285818151815260200191508051906020019080838360005b838110156125ab578181015183820152602001612593565b50505050905090810190601f1680156125d85780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561260b5781810151838201526020016125f3565b50505050905090810190601f1680156126385780820380516001836020036101000a031916815260200191505b5094505050505060006040518083038186803b15801561265757600080fd5b505afa15801561266b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561269457600080fd5b8101908080516040519392919084600160201b8211156126b357600080fd5b9083019060208201858111156126c857600080fd5b8251600160201b8111828201881017156126e157600080fd5b82525081516020918201929091019080838360005b8381101561270e5781810151838201526020016126f6565b50505050905090810190601f16801561273b5780820380516001836020036101000a031916815260200191505b50604052505050612c4e565b600b5560125550506000805460ff191660011790555050505050565b6001600160a01b03166000908152600d6020908152604080832054600e909252909120549091565b600b5490565b60005461010090046001600160a01b031690565b60005460ff166127e65760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b600c54600160a81b900460ff1615612838576040805162461bcd60e51b815260206004820152601060248201526f5375727665792064697361626c65642160801b604482015290519081900360640190fd5b600c5460ff1615612885576040805162461bcd60e51b8152602060048201526012602482015271537572766579205465726d696e617465642160701b604482015290519081900360640190fd5b60135460ff16156128cb576040805162461bcd60e51b81526020600482015260176024820152600080516020613c33833981519152604482015290519081900360640190fd5b6000600a5411612910576040805162461bcd60e51b81526020600482015260136024820152600080516020613cf6833981519152604482015290519081900360640190fd5b600a544310612956576040805162461bcd60e51b815260206004820152600d60248201526c53757276657920656e6465642160981b604482015290519081900360640190fd5b600154604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b1580156129b057600080fd5b505af11580156129c4573d6000803e3d6000fd5b505050506040513d60208110156129da57600080fd5b5050336000818152600e602090815260409182902080548501908190556010805486019055825185815292519093927f4e855894dd91aeb0192726b247db8c42f6d1275c4094286dfeadd2005971a1b492908290030190a26116ea613b5b565b60125490565b600854610100900460ff1690565b60005460ff16612a8f5760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b600c54600160a81b900460ff1615612ae1576040805162461bcd60e51b815260206004820152601060248201526f5375727665792064697361626c65642160801b604482015290519081900360640190fd5b6000600a5411612b26576040805162461bcd60e51b81526020600482015260136024820152600080516020613cf6833981519152604482015290519081900360640190fd5b60135460ff16612b8257600a54431015612b82576040805162461bcd60e51b8152602060048201526018602482015277537572766579206973207374696c6c2072756e6e696e672160401b604482015290519081900360640190fd5b60005461010090046001600160a01b03163314612bdd576040805162461bcd60e51b8152602060048201526014602482015273556e617574686f72697a6564204163636573732160601b604482015290519081900360640190fd5b600c5460ff1615612c2b576040805162461bcd60e51b8152602060048201526013602482015272416c7265616479207465726d696e617465642160681b604482015290519081900360640190fd5b600c805460ff19166001179055565b60035461010090046001600160a01b031690565b60006020825110611d1957506020015190565b60005460ff16612ca25760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b60005461010090046001600160a01b03163314612cf05760405162461bcd60e51b8152600401808060200182810382526022815260200180613c7a6022913960400191505060405180910390fd5b600a5415612d38576040805162461bcd60e51b815260206004820152601060248201526f416c726561647920737461727465642160801b604482015290519081900360640190fd5b600c54600160a81b900460ff1615612d8b576040805162461bcd60e51b8152602060048201526011602482015270416c72656164792064697361626c65642160781b604482015290519081900360640190fd5b600b544301600a55565b6005546001600160a01b031690565b600c5460ff1690565b600c5461010090046001600160a01b031690565b60005460ff16612e025760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b600c54600160a81b900460ff1615612e54576040805162461bcd60e51b815260206004820152601060248201526f5375727665792064697361626c65642160801b604482015290519081900360640190fd5b600c5460ff1615612ea1576040805162461bcd60e51b8152602060048201526012602482015271537572766579205465726d696e617465642160701b604482015290519081900360640190fd5b60135460ff1615612ee7576040805162461bcd60e51b81526020600482015260176024820152600080516020613c33833981519152604482015290519081900360640190fd5b6000600a5411612f2c576040805162461bcd60e51b81526020600482015260136024820152600080516020613cf6833981519152604482015290519081900360640190fd5b600a544310612f72576040805162461bcd60e51b815260206004820152600d60248201526c53757276657920656e6465642160981b604482015290519081900360640190fd5b336000908152600e6020526040902054811115612fcc576040805162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e742066756e64732160681b604482015290519081900360640190fd5b6001546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561302057600080fd5b505af1158015613034573d6000803e3d6000fd5b505050506040513d602081101561304a57600080fd5b5050336000818152600e6020908152604091829020805485900390819055601080548690039055825185815292519093927fa369065c2bc9cea922be2bf705101c039bc3af5575b8548b4d16d6a0b1893e2592908290030190a25050565b60005460ff166130e95760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b600c54600160a81b900460ff161561313b576040805162461bcd60e51b815260206004820152601060248201526f5375727665792064697361626c65642160801b604482015290519081900360640190fd5b600c5460ff1615613188576040805162461bcd60e51b8152602060048201526012602482015271537572766579205465726d696e617465642160701b604482015290519081900360640190fd5b60135460ff16156131ce576040805162461bcd60e51b81526020600482015260176024820152600080516020613c33833981519152604482015290519081900360640190fd5b6000600a5411613213576040805162461bcd60e51b81526020600482015260136024820152600080516020613cf6833981519152604482015290519081900360640190fd5b600a544310613259576040805162461bcd60e51b815260206004820152600d60248201526c53757276657920656e6465642160981b604482015290519081900360640190fd5b336000908152600e6020908152604080832054600d90925290912054016132b3576040805162461bcd60e51b81526020600482015260096024820152684e6f20766f7465732160b81b604482015290519081900360640190fd5b336000818152600d6020908152604080832054600e835281842054600154835163a9059cbb60e01b8152600481019790975281830160248801529251919590946001600160a01b039093169363a9059cbb9360448084019492938390030190829087803b15801561332357600080fd5b505af1158015613337573d6000803e3d6000fd5b505050506040513d602081101561334d57600080fd5b5050336000818152600d60209081526040808320839055600e825280832092909255600f805486900390556010805485900390558151848601815291517f1dd395e89b5da0e80f0242ec498fdfcaa6bc77d32b4417d89ec195e160fd7ad89281900390910190a25050565b60005460ff166133f95760405162461bcd60e51b8152600401808060200182810382526031815260200180613cc56031913960400191505060405180910390fd5b600c54600160a81b900460ff161561344b576040805162461bcd60e51b815260206004820152601060248201526f5375727665792064697361626c65642160801b604482015290519081900360640190fd5b600c5460ff1615613498576040805162461bcd60e51b8152602060048201526012602482015271537572766579205465726d696e617465642160701b604482015290519081900360640190fd5b60135460ff16156134de576040805162461bcd60e51b81526020600482015260176024820152600080516020613c33833981519152604482015290519081900360640190fd5b6000600a5411613523576040805162461bcd60e51b81526020600482015260136024820152600080516020613cf6833981519152604482015290519081900360640190fd5b600a544310613569576040805162461bcd60e51b815260206004820152600d60248201526c53757276657920656e6465642160981b604482015290519081900360640190fd5b336000908152600d60205260409020548111156135c3576040805162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e742066756e64732160681b604482015290519081900360640190fd5b6001546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561361757600080fd5b505af115801561362b573d6000803e3d6000fd5b505050506040513d602081101561364157600080fd5b5050336000818152600d6020908152604091829020805485900390819055600f80548690039055825185815292519093927fc4e9f6c43fa16caaa3278b92f5fadf533efad8e8124fa4253fd9490cdc0742b492908290030190a25050565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109cf5780601f106109a4576101008083540402835291602001916109cf565b8015806137285750336000908152600e6020908152604080832054600d909252909120540115155b613770576040805162461bcd60e51b81526020600482015260146024820152734e6f7468696e6720746f2057697468647261772160601b604482015290519081900360640190fd5b80158061378d57503360009081526011602052604090205460ff16155b6137d4576040805162461bcd60e51b8152602060048201526013602482015272416c726561647920576974686472617765642160681b604482015290519081900360640190fd5b336000908152600e6020908152604080832054600d90925290912054011580159061380f57503360009081526011602052604090205460ff16155b156138c357600154336000818152600e6020908152604080832054600d835281842054825163a9059cbb60e01b81526004810196909652016024850152516001600160a01b039094169363a9059cbb93604480820194918390030190829087803b15801561387c57600080fd5b505af1158015613890573d6000803e3d6000fd5b505050506040513d60208110156138a657600080fd5b5050336000908152601160205260409020805460ff191660011790555b50565b60078054604080516020600260018516156101000260001901909416849004601f810182900482028301820190935282825260609460069361395e93928301828280156139545780601f1061392957610100808354040283529160200191613954565b820191906000526020600020905b81548152906001019060200180831161393757829003601f168201915b5050505050611d1e565b600960405160200180806b1131b7b232a730b6b2911d1160a11b815250600c01858054600181600116156101000203166002900480156139d55780601f106139b35761010080835404028352918201916139d5565b820191906000526020600020905b8154815290600101906020018083116139c1575b5050807411161136b2ba3437b229b4b3b730ba3ab932911d1160591b81525060150184805460018160011615610100020316600290048015613a4e5780601f10613a2c576101008083540402835291820191613a4e565b820191906000526020600020905b815481529060010190602001808311613a3a575b5050807f222c2272657475726e416269506172616d65746572734172726179223a000000815250601d0183805190602001908083835b60208310613aa35780518252601f199092019160209182019101613a84565b6001836020036101000a038019825116818451168082178552505050505050905001806c16113932b83630b1b2b9911d1160991b815250600d0182805460018160011615610100020316600290048015613b345780601f10613b12576101008083540402835291820191613b34565b820191906000526020600020905b815481529060010190602001808311613b20575b5050601160f91b815260408051601e19818403018152600190920190529550505050505090565b6012541580613b7b5750601254600f54108015613b7b5750601254601054105b15613b8557610bce565b6013805460ff19166001179055610bce6109da565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613bdb57805160ff1916838001178555613c08565b82800160010185558215613c08579182015b82811115613c08578251825591602001919060010190613bed565b50613c14929150613c18565b5090565b6109d791905b80821115613c145760008155600101613c1e56fe566f7465732048617264204361702072656163686564210000000000000000006765744d696e696d756d426c6f636b4e756d626572466f72456d657267656e63795375727665794f6e6c792050726f78792063616e2063616c6c20746869732066756e6374696f6e214f6e6c79204f726967696e616c2050726f78792063616e2063616c6c2074686973206d6574686f64215374696c6c2077616974696e6720666f7220736574436f6c6c61746572616c4461746120746f2062652063616c6c656421537572766579204e6f7420537461727465642100000000000000000000000000736574436f6c6c61746572616c4461746120616c72656164792063616c6c656421a2646970667358221220cc7f3bf856466276233180424b6f508fe3d144c7a0a548366500787677c07fa564736f6c6343000608003343616e6e6f742068617665207a65726f206164647265737320666f722066756e6374696f6e616c69747920746f20736574206f72206f6e652074696d652066756e6374696f6e616c69747920746f2063616c6c636f64654e616d6520697320616c7265616479207573656420627920616e6f746865722066756e6374696f6e616c69747943616e6e6f74206861766520656d70747920737472696e6720666f72206d6574686f645369676e617475726543616e6e6f74207265706c61636520756e6578697374696e67206f7220696e6163746976652066756e6374696f6e616c6974794f6e6c792050726f78792063616e2063616c6c20746869732066756e6374696f6e616c6974794f6e652054696d652046756e6374696f6e616c697479206d6574686f64207369676e617475726520616c6c6f7765642069732063616c6c4f6e6554696d65286164647265737329a26469706673582212206b900863d1b72a8b7c1d3692f37b10d62ed3c830cf261066e61a771a30868fdb64736f6c63430006080033
Deployed Bytecode Sourcemap
185:3571:6:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;185:3571:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;2465:651:6;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2465:651:6;-1:-1:-1;;;;;2465:651:6;;:::i;:::-;;3346:251;;;:::i;3251:89::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3251:89:6;;;;;;;;;;;;;;483:403;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;483:403:6;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;483:403:6;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;483:403:6;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;483:403:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;483:403:6;;-1:-1:-1;;;;;483:403:6;;;;;;;;-1:-1:-1;483:403:6;;;;-1:-1:-1;483:403:6;;;;-1:-1:-1;;;;11:28;;8:2;;;52:1;49;42:12;8:2;483:403:6;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;483:403:6;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;483:403:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;483:403:6;;;;;;;;-1:-1:-1;483:403:6;;-1:-1:-1;;;;;11:28;;8:2;;;52:1;49;42:12;8:2;483:403:6;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;483:403:6;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;483:403:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;483:403:6;;;;;;;;-1:-1:-1;483:403:6;;-1:-1:-1;;;;;11:28;;8:2;;;52:1;49;42:12;8:2;483:403:6;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;483:403:6;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;483:403:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;483:403:6;;-1:-1:-1;483:403:6;;-1:-1:-1;;;;;483:403:6:i;3122:123::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;3122:123:6;-1:-1:-1;;;;;3122:123:6;;:::i;:::-;;;;;;;;;;;;;;;;;;2465:651;409:6;;-1:-1:-1;;;;;409:6:6;387:10;:29;379:80;;;;-1:-1:-1;;;379:80:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2557:27:6;::::1;;::::0;;;:10:::1;:27;::::0;;;;;::::1;;2549:60;;;::::0;;-1:-1:-1;;;2549:60:6;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;2549:60:6;;;;;;;;;;;;;::::1;;2620:34;2683:15;2620:79;;2710:22;2735:8;-1:-1:-1::0;;;;;2735:26:6::1;;:28;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;2735:28:6;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;2735:28:6;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;2735:28:6;;-1:-1:-1;2782:18:6;2774:54:::1;;;::::0;;-1:-1:-1;;;2774:54:6;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;2848:8;-1:-1:-1::0;;;;;2848:19:6::1;;:21;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;2848:21:6;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;2848:21:6;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;2848:21:6;2847:22:::1;2839:56;;;::::0;;-1:-1:-1;;;2839:56:6;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;2839:56:6;;;;;;;;;;;;;::::1;;2910:8;-1:-1:-1::0;;;;;2910:30:6::1;;:32;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;2910:32:6;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;2910:32:6;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;2910:32:6;2906:130:::1;;2982:14;2966:12;:30;;2958:67;;;::::0;;-1:-1:-1;;;2958:67:6;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3055:8;-1:-1:-1::0;;;;;3055:21:6::1;;:23;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;3055:23:6;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3055:23:6;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;3055:23:6;3054:24:::1;3046:63;;;::::0;;-1:-1:-1;;;3046:63:6;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;469:1;;2465:651:::0;:::o;3346:251::-;3418:1;3400:6;-1:-1:-1;;;;;3400:6:6;:20;;:44;;-1:-1:-1;3424:6:6;;-1:-1:-1;;;;;3424:6:6;3434:10;3424:20;3400:44;3464:1;3446:6;-1:-1:-1;;;;;3446:6:6;:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3446:77:6;;;;3392:132;;;;;-1:-1:-1;;;3392:132:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3392:132:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3561:1:6;3543:6;-1:-1:-1;;;;;3543:6:6;:20;:47;;3588:1;3543:47;;;3567:10;3543:47;3534:6;:56;;-1:-1:-1;;;;;;3534:56:6;-1:-1:-1;;;;;3534:56:6;;;;;;;;;;3346:251::o;3251:89::-;3301:7;3327:6;-1:-1:-1;;;;;3327:6:6;3251:89;:::o;483:403::-;675:7;409:6;;-1:-1:-1;;;;;409:6:6;387:10;:29;379:80;;;;-1:-1:-1;;;379:80:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;701:178:::1;713:8;723;733:15;750:8;797;807;817:15;834:24;860:8;870:6;::::0;::::1;;;;;;;-1:-1:-1::0;;;;;870:6:6::1;768:109;;;;;:::i;:::-;;;;;;-1:-1:-1::0;;;;;768:109:6::1;-1:-1:-1::0;;;;;768:109:6::1;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;768:109:6::1;-1:-1:-1::0;;;;;768:109:6::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11:::0;;::::1;84:18:::0;71:11;;::::1;64:39:::0;52:2:::1;45:10;8:100;;;12:14;768:109:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;768:109:6;;::::1;::::0;;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;23:1:-1::1;8:100;33:3;30:1;27:10;8:100;;;90:11:::0;;::::1;84:18:::0;71:11;;::::1;64:39:::0;52:2:::1;45:10;8:100;;;12:14;768:109:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;768:109:6;;::::1;::::0;;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;23:1:-1::1;8:100;33:3;30:1;27:10;8:100;;;90:11:::0;;::::1;84:18:::0;71:11;;::::1;64:39:::0;52:2:::1;45:10;8:100;;;12:14;768:109:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;768:109:6;;::::1;::::0;;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;23:1:-1::1;8:100;33:3;30:1;27:10;8:100;;;90:11:::0;;::::1;84:18:::0;71:11;;::::1;64:39:::0;52:2:::1;45:10;8:100;;;12:14;768:109:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;768:109:6;701:11;:178::i;:::-;694:185:::0;483:403;-1:-1:-1;;;;;;483:403:6:o;3122:123::-;-1:-1:-1;;;;;3218:20:6;3195:4;3218:20;;;:10;:20;;;;;;;;;3122:123::o;2131:328::-;2290:7;2310:64;2328:8;2338;2348:15;2365:8;2310:17;:64::i;:::-;-1:-1:-1;;;;;;2385:27:6;;;;;;2415:4;2385:27;;;;;;;;:34;;-1:-1:-1;;2385:34:6;;;;;;:27;2131:328;-1:-1:-1;;;;2131:328:6:o;892:1233::-;1040:16;1060:28;1075:8;1060:28;;;;;;;;;;;;:14;:28::i;:::-;1059:29;1040:48;;1098:16;1118:28;1133:8;1118:28;;;;;;;;;;;;:14;:28::i;:::-;1117:29;1098:48;;1166:11;:43;;;;1182:11;1181:12;:28;;;;;1198:11;1197:12;1181:28;1165:77;;1238:4;1165:77;;;-1:-1:-1;;;;;1213:22:6;;;;1165:77;1157:173;;;;-1:-1:-1;;;1157:173:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1349:22:6;;;;:62;;;1376:35;1391:15;1376:35;;;;;;;;;;;;:14;:35::i;:::-;1375:36;1349:62;1341:119;;;;-1:-1:-1;;;1341:119:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1479:11;:26;;;;1494:11;1479:26;:91;;1515:55;1530:15;1515:55;;;;;;;;;;;;;-1:-1:-1;;;1515:55:6;;;:14;:55::i;:::-;1479:91;;;1508:4;1479:91;1471:175;;;;-1:-1:-1;;;1471:175:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1657:49;1746:6;;;;;;;;;-1:-1:-1;;;;;1746:6:6;-1:-1:-1;;;;;1736:53:6;;:55;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1736:55:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1736:55:6;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1736:55:6;;-1:-1:-1;1811:11:6;:64;;;;-1:-1:-1;1826:49:6;;-1:-1:-1;;;1826:49:6;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1826:39:6;;;;;1866:8;;1826:49;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1826:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1826:49:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1826:49:6;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1826:49:6;1811:64;:108;;1915:4;1811:108;;;1878:34;1893:8;1903;1878:14;:34::i;:::-;1803:170;;;;-1:-1:-1;;;1803:170:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1992:11;:70;;2058:4;1992:70;;;2006:49;;-1:-1:-1;;;2006:49:6;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2006:39:6;;;;;2046:8;;2006:49;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2006:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2006:49:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2006:49:6;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2006:49:6;1992:70;1984:134;;;;-1:-1:-1;;;1984:134:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;892:1233;;;;;;;:::o;3603:151::-;3728:19;;;;;;;3705;;;;;;;;;;:42;;3603:151::o;-1:-1:-1:-;;;;;;;;:::o
Swarm Source
ipfs://6b900863d1b72a8b7c1d3692f37b10d62ed3c830cf261066e61a771a30868fdb
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.