Contract Overview
Balance:
0 ETH
ETH Value:
$0.00
My Name Tag:
Not Available
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
Contract Name:
DFSRegistry
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Arbiscan on 2022-05-17 */ // SPDX-License-Identifier: MIT pragma solidity =0.8.10; abstract contract IDFSRegistry { function getAddr(bytes4 _id) public view virtual returns (address); function addNewContract( bytes32 _id, address _contractAddr, uint256 _waitPeriod ) public virtual; function startContractChange(bytes32 _id, address _newContractAddr) public virtual; function approveContractChange(bytes32 _id) public virtual; function cancelContractChange(bytes32 _id) public virtual; function changeWaitPeriod(bytes32 _id, uint256 _newWaitPeriod) public virtual; } interface IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint256 digits); function totalSupply() external view returns (uint256 supply); function balanceOf(address _owner) external view returns (uint256 balance); function transfer(address _to, uint256 _value) external returns (bool success); function transferFrom( address _from, address _to, uint256 _value ) external returns (bool success); function approve(address _spender, uint256 _value) external returns (bool success); function allowance(address _owner, address _spender) external view returns (uint256 remaining); event Approval(address indexed _owner, address indexed _spender, uint256 _value); } library Address { //insufficient balance error InsufficientBalance(uint256 available, uint256 required); //unable to send value, recipient may have reverted error SendingValueFail(); //insufficient balance for call error InsufficientBalanceForCall(uint256 available, uint256 required); //call to non-contract error NonContractCall(); function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { uint256 balance = address(this).balance; if (balance < amount){ revert InsufficientBalance(balance, amount); } // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{value: amount}(""); if (!(success)){ revert SendingValueFail(); } } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { uint256 balance = address(this).balance; if (balance < value){ revert InsufficientBalanceForCall(balance, value); } return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue( address target, bytes memory data, uint256 weiValue, string memory errorMessage ) private returns (bytes memory) { if (!(isContract(target))){ revert NonContractCall(); } // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{value: weiValue}(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn( token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value) ); } /// @dev Edited so it always first approves 0 and then the value, because of non standard tokens function safeApprove( IERC20 token, address spender, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0)); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); _callOptionalReturn( token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance) ); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender).sub( value, "SafeERC20: decreased allowance below zero" ); _callOptionalReturn( token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance) ); } function _callOptionalReturn(IERC20 token, bytes memory data) private { bytes memory returndata = address(token).functionCall( data, "SafeERC20: low-level call failed" ); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } contract ArbitrumAuthAddresses { address internal constant ADMIN_VAULT_ADDR = 0xd47D8D97cAd12A866900eEc6Cde1962529F25351; address internal constant ADMIN_ADDR = 0x6AFEA85cFAB61e3a55Ad2e4537252Ec05796BEfa; } contract AuthHelper is ArbitrumAuthAddresses { } contract AdminVault is AuthHelper { address public owner; address public admin; error SenderNotAdmin(); constructor() { owner = msg.sender; admin = ADMIN_ADDR; } /// @notice Admin is able to change owner /// @param _owner Address of new owner function changeOwner(address _owner) public { if (admin != msg.sender){ revert SenderNotAdmin(); } owner = _owner; } /// @notice Admin is able to set new admin /// @param _admin Address of multisig that becomes new admin function changeAdmin(address _admin) public { if (admin != msg.sender){ revert SenderNotAdmin(); } admin = _admin; } } contract AdminAuth is AuthHelper { using SafeERC20 for IERC20; AdminVault public constant adminVault = AdminVault(ADMIN_VAULT_ADDR); error SenderNotOwner(); error SenderNotAdmin(); modifier onlyOwner() { if (adminVault.owner() != msg.sender){ revert SenderNotOwner(); } _; } modifier onlyAdmin() { if (adminVault.admin() != msg.sender){ revert SenderNotAdmin(); } _; } /// @notice withdraw stuck funds function withdrawStuckFunds(address _token, address _receiver, uint256 _amount) public onlyOwner { if (_token == 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE) { payable(_receiver).transfer(_amount); } else { IERC20(_token).safeTransfer(_receiver, _amount); } } /// @notice Destroy the contract function kill() public onlyAdmin { selfdestruct(payable(msg.sender)); } } contract DFSRegistry is AdminAuth { error EntryAlreadyExistsError(bytes4); error EntryNonExistentError(bytes4); error EntryNotInChangeError(bytes4); error ChangeNotReadyError(uint256,uint256); error EmptyPrevAddrError(bytes4); error AlreadyInContractChangeError(bytes4); error AlreadyInWaitPeriodChangeError(bytes4); event AddNewContract(address,bytes4,address,uint256); event RevertToPreviousAddress(address,bytes4,address,address); event StartContractChange(address,bytes4,address,address); event ApproveContractChange(address,bytes4,address,address); event CancelContractChange(address,bytes4,address,address); event StartWaitPeriodChange(address,bytes4,uint256); event ApproveWaitPeriodChange(address,bytes4,uint256,uint256); event CancelWaitPeriodChange(address,bytes4,uint256,uint256); struct Entry { address contractAddr; uint256 waitPeriod; uint256 changeStartTime; bool inContractChange; bool inWaitPeriodChange; bool exists; } mapping(bytes4 => Entry) public entries; mapping(bytes4 => address) public previousAddresses; mapping(bytes4 => address) public pendingAddresses; mapping(bytes4 => uint256) public pendingWaitTimes; /// @notice Given an contract id returns the registered address /// @dev Id is keccak256 of the contract name /// @param _id Id of contract function getAddr(bytes4 _id) public view returns (address) { return entries[_id].contractAddr; } /// @notice Helper function to easily query if id is registered /// @param _id Id of contract function isRegistered(bytes4 _id) public view returns (bool) { return entries[_id].exists; } /////////////////////////// OWNER ONLY FUNCTIONS /////////////////////////// /// @notice Adds a new contract to the registry /// @param _id Id of contract /// @param _contractAddr Address of the contract /// @param _waitPeriod Amount of time to wait before a contract address can be changed function addNewContract( bytes4 _id, address _contractAddr, uint256 _waitPeriod ) public onlyOwner { if (entries[_id].exists){ revert EntryAlreadyExistsError(_id); } entries[_id] = Entry({ contractAddr: _contractAddr, waitPeriod: _waitPeriod, changeStartTime: 0, inContractChange: false, inWaitPeriodChange: false, exists: true }); emit AddNewContract(msg.sender, _id, _contractAddr, _waitPeriod); } /// @notice Reverts to the previous address immediately /// @dev In case the new version has a fault, a quick way to fallback to the old contract /// @param _id Id of contract function revertToPreviousAddress(bytes4 _id) public onlyOwner { if (!(entries[_id].exists)){ revert EntryNonExistentError(_id); } if (previousAddresses[_id] == address(0)){ revert EmptyPrevAddrError(_id); } address currentAddr = entries[_id].contractAddr; entries[_id].contractAddr = previousAddresses[_id]; emit RevertToPreviousAddress(msg.sender, _id, currentAddr, previousAddresses[_id]); } /// @notice Starts an address change for an existing entry /// @dev Can override a change that is currently in progress /// @param _id Id of contract /// @param _newContractAddr Address of the new contract function startContractChange(bytes4 _id, address _newContractAddr) public onlyOwner { if (!entries[_id].exists){ revert EntryNonExistentError(_id); } if (entries[_id].inWaitPeriodChange){ revert AlreadyInWaitPeriodChangeError(_id); } entries[_id].changeStartTime = block.timestamp; // solhint-disable-line entries[_id].inContractChange = true; pendingAddresses[_id] = _newContractAddr; emit StartContractChange(msg.sender, _id, entries[_id].contractAddr, _newContractAddr); } /// @notice Changes new contract address, correct time must have passed /// @param _id Id of contract function approveContractChange(bytes4 _id) public onlyOwner { if (!entries[_id].exists){ revert EntryNonExistentError(_id); } if (!entries[_id].inContractChange){ revert EntryNotInChangeError(_id); } if (block.timestamp < (entries[_id].changeStartTime + entries[_id].waitPeriod)){// solhint-disable-line revert ChangeNotReadyError(block.timestamp, (entries[_id].changeStartTime + entries[_id].waitPeriod)); } address oldContractAddr = entries[_id].contractAddr; entries[_id].contractAddr = pendingAddresses[_id]; entries[_id].inContractChange = false; entries[_id].changeStartTime = 0; pendingAddresses[_id] = address(0); previousAddresses[_id] = oldContractAddr; emit ApproveContractChange(msg.sender, _id, oldContractAddr, entries[_id].contractAddr); } /// @notice Cancel pending change /// @param _id Id of contract function cancelContractChange(bytes4 _id) public onlyOwner { if (!entries[_id].exists){ revert EntryNonExistentError(_id); } if (!entries[_id].inContractChange){ revert EntryNotInChangeError(_id); } address oldContractAddr = pendingAddresses[_id]; pendingAddresses[_id] = address(0); entries[_id].inContractChange = false; entries[_id].changeStartTime = 0; emit CancelContractChange(msg.sender, _id, oldContractAddr, entries[_id].contractAddr); } /// @notice Starts the change for waitPeriod /// @param _id Id of contract /// @param _newWaitPeriod New wait time function startWaitPeriodChange(bytes4 _id, uint256 _newWaitPeriod) public onlyOwner { if (!entries[_id].exists){ revert EntryNonExistentError(_id); } if (entries[_id].inContractChange){ revert AlreadyInContractChangeError(_id); } pendingWaitTimes[_id] = _newWaitPeriod; entries[_id].changeStartTime = block.timestamp; // solhint-disable-line entries[_id].inWaitPeriodChange = true; emit StartWaitPeriodChange(msg.sender, _id, _newWaitPeriod); } /// @notice Changes new wait period, correct time must have passed /// @param _id Id of contract function approveWaitPeriodChange(bytes4 _id) public onlyOwner { if (!entries[_id].exists){ revert EntryNonExistentError(_id); } if (!entries[_id].inWaitPeriodChange){ revert EntryNotInChangeError(_id); } if (block.timestamp < (entries[_id].changeStartTime + entries[_id].waitPeriod)){ // solhint-disable-line revert ChangeNotReadyError(block.timestamp, (entries[_id].changeStartTime + entries[_id].waitPeriod)); } uint256 oldWaitTime = entries[_id].waitPeriod; entries[_id].waitPeriod = pendingWaitTimes[_id]; entries[_id].inWaitPeriodChange = false; entries[_id].changeStartTime = 0; pendingWaitTimes[_id] = 0; emit ApproveWaitPeriodChange(msg.sender, _id, oldWaitTime, entries[_id].waitPeriod); } /// @notice Cancel wait period change /// @param _id Id of contract function cancelWaitPeriodChange(bytes4 _id) public onlyOwner { if (!entries[_id].exists){ revert EntryNonExistentError(_id); } if (!entries[_id].inWaitPeriodChange){ revert EntryNotInChangeError(_id); } uint256 oldWaitPeriod = pendingWaitTimes[_id]; pendingWaitTimes[_id] = 0; entries[_id].inWaitPeriodChange = false; entries[_id].changeStartTime = 0; emit CancelWaitPeriodChange(msg.sender, _id, oldWaitPeriod, entries[_id].waitPeriod); } }
[{"inputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"AlreadyInContractChangeError","type":"error"},{"inputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"AlreadyInWaitPeriodChangeError","type":"error"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"ChangeNotReadyError","type":"error"},{"inputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"EmptyPrevAddrError","type":"error"},{"inputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"EntryAlreadyExistsError","type":"error"},{"inputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"EntryNonExistentError","type":"error"},{"inputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"EntryNotInChangeError","type":"error"},{"inputs":[],"name":"NonContractCall","type":"error"},{"inputs":[],"name":"SenderNotAdmin","type":"error"},{"inputs":[],"name":"SenderNotOwner","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"bytes4","name":"","type":"bytes4"},{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"AddNewContract","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"bytes4","name":"","type":"bytes4"},{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"ApproveContractChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"bytes4","name":"","type":"bytes4"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"ApproveWaitPeriodChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"bytes4","name":"","type":"bytes4"},{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"CancelContractChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"bytes4","name":"","type":"bytes4"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"CancelWaitPeriodChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"bytes4","name":"","type":"bytes4"},{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"RevertToPreviousAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"bytes4","name":"","type":"bytes4"},{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"StartContractChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"bytes4","name":"","type":"bytes4"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"StartWaitPeriodChange","type":"event"},{"inputs":[{"internalType":"bytes4","name":"_id","type":"bytes4"},{"internalType":"address","name":"_contractAddr","type":"address"},{"internalType":"uint256","name":"_waitPeriod","type":"uint256"}],"name":"addNewContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"adminVault","outputs":[{"internalType":"contract AdminVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_id","type":"bytes4"}],"name":"approveContractChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_id","type":"bytes4"}],"name":"approveWaitPeriodChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_id","type":"bytes4"}],"name":"cancelContractChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_id","type":"bytes4"}],"name":"cancelWaitPeriodChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"entries","outputs":[{"internalType":"address","name":"contractAddr","type":"address"},{"internalType":"uint256","name":"waitPeriod","type":"uint256"},{"internalType":"uint256","name":"changeStartTime","type":"uint256"},{"internalType":"bool","name":"inContractChange","type":"bool"},{"internalType":"bool","name":"inWaitPeriodChange","type":"bool"},{"internalType":"bool","name":"exists","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_id","type":"bytes4"}],"name":"getAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_id","type":"bytes4"}],"name":"isRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kill","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"pendingAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"pendingWaitTimes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"previousAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_id","type":"bytes4"}],"name":"revertToPreviousAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_id","type":"bytes4"},{"internalType":"address","name":"_newContractAddr","type":"address"}],"name":"startContractChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_id","type":"bytes4"},{"internalType":"uint256","name":"_newWaitPeriod","type":"uint256"}],"name":"startWaitPeriodChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawStuckFunds","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50611927806100206000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80638cedca71116100a2578063af8a7c3011610071578063af8a7c3014610294578063b46bcdaa146102a7578063c579d49014610339578063ca5ecb771461034c578063f4753e031461035f57600080fd5b80638cedca711461022057806393b188541461023b5780639d5143ef1461026e578063a2e5827b1461028157600080fd5b80634feb499d116100de5780634feb499d146101865780635ec9144a146101995780635f2c8d06146101ac578063756928ec146101da57600080fd5b806301a6c7481461011057806308f732e61461012557806341c0e1b51461016b5780634e60b09314610173575b600080fd5b61012361011e36600461169d565b610388565b005b61014e61013336600461169d565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b610123610546565b61012361018136600461169d565b6105f0565b61012361019436600461169d565b61084d565b6101236101a73660046116d7565b610a60565b6101cc6101ba36600461169d565b60036020526000908152604090205481565b604051908152602001610162565b6102106101e836600461169d565b6001600160e01b03191660009081526020819052604090206003015462010000900460ff1690565b6040519015158152602001610162565b61014e73d47d8d97cad12a866900eec6cde1962529f2535181565b61014e61024936600461169d565b6001600160e01b0319166000908152602081905260409020546001600160a01b031690565b61012361027c36600461170e565b610c27565b61012361028f36600461169d565b610dca565b6101236102a236600461169d565b610f7f565b6102fc6102b536600461169d565b60006020819052908152604090208054600182015460028301546003909301546001600160a01b0390921692909160ff808216916101008104821691620100009091041686565b604080516001600160a01b0390971687526020870195909552938501929092521515606084015215156080830152151560a082015260c001610162565b610123610347366004611738565b61112a565b61012361035a366004611779565b61124b565b61014e61036d36600461169d565b6001602052600090815260409020546001600160a01b031681565b336001600160a01b031673d47d8d97cad12a866900eec6cde1962529f253516001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104089190611797565b6001600160a01b03161461042f57604051630ca4a64560e11b815260040160405180910390fd5b6001600160e01b0319811660009081526020819052604090206003015462010000900460ff1661047d578060405163e23b1fcd60e01b815260040161047491906117b4565b60405180910390fd5b6001600160e01b03198116600090815260208190526040902060030154610100900460ff166104c157806040516339fdfa2d60e21b815260040161047491906117b4565b6001600160e01b03198116600090815260036020818152604080842080549085905591849052808420928301805461ff0019169055600283019390935560019190910154915190917fdf60132161e182bda81aa668f62b82e76276b31abf828ad640b8786b44b418cd9161053a913391869186916117c9565b60405180910390a15050565b336001600160a01b031673d47d8d97cad12a866900eec6cde1962529f253516001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c69190611797565b6001600160a01b0316146105ed5760405163a6c827a960e01b815260040160405180910390fd5b33ff5b336001600160a01b031673d47d8d97cad12a866900eec6cde1962529f253516001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561064c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106709190611797565b6001600160a01b03161461069757604051630ca4a64560e11b815260040160405180910390fd5b6001600160e01b0319811660009081526020819052604090206003015462010000900460ff166106dc578060405163e23b1fcd60e01b815260040161047491906117b4565b6001600160e01b0319811660009081526020819052604090206003015460ff1661071b57806040516339fdfa2d60e21b815260040161047491906117b4565b6001600160e01b031981166000908152602081905260409020600181015460029091015461074991906117f9565b4210156107a1576001600160e01b0319811660009081526020819052604090206001810154600290910154429161077f916117f9565b6040516378a2225960e11b815260048101929092526024820152604401610474565b6001600160e01b031981166000908152602081815260408083208054600280855283862080546001600160a01b03198085166001600160a01b0392831617865560038601805460ff19169055928501889055815483169091556001865284872080549092169281169283179091559490935254905191927f385ace7ff96c26a149cf999eef2d7e86289209c26363a3989502f336bf5707279261053a923392879287929091169061181f565b336001600160a01b031673d47d8d97cad12a866900eec6cde1962529f253516001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108cd9190611797565b6001600160a01b0316146108f457604051630ca4a64560e11b815260040160405180910390fd5b6001600160e01b0319811660009081526020819052604090206003015462010000900460ff16610939578060405163e23b1fcd60e01b815260040161047491906117b4565b6001600160e01b03198116600090815260208190526040902060030154610100900460ff1661097d57806040516339fdfa2d60e21b815260040161047491906117b4565b6001600160e01b03198116600090815260208190526040902060018101546002909101546109ab91906117f9565b4210156109e1576001600160e01b0319811660009081526020819052604090206001810154600290910154429161077f916117f9565b6001600160e01b03198116600090815260208181526040808320600181018054600380865284872080548455908401805461ff0019169055600290930186905591859055939092529154915190917fda8652a0ec293e550097d7a47926fd48748aab242896f473390f74315e9feea29161053a913391869186916117c9565b336001600160a01b031673d47d8d97cad12a866900eec6cde1962529f253516001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610abc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae09190611797565b6001600160a01b031614610b0757604051630ca4a64560e11b815260040160405180910390fd5b6001600160e01b0319821660009081526020819052604090206003015462010000900460ff16610b4c578160405163e23b1fcd60e01b815260040161047491906117b4565b6001600160e01b03198216600090815260208190526040902060030154610100900460ff1615610b915781604051639a1187f760e01b815260040161047491906117b4565b6001600160e01b031982166000908152602081815260408083204260028083019190915560038201805460ff19166001179055835281842080546001600160a01b038088166001600160a01b03199092169190911790915593909252905490517f222447d2c4f39c07f6105c3c2b75b5b6d67bd6ecc905b04e09e9d8428ddc6e809261053a92339287929190911690869061181f565b336001600160a01b031673d47d8d97cad12a866900eec6cde1962529f253516001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca79190611797565b6001600160a01b031614610cce57604051630ca4a64560e11b815260040160405180910390fd5b6001600160e01b0319821660009081526020819052604090206003015462010000900460ff16610d13578160405163e23b1fcd60e01b815260040161047491906117b4565b6001600160e01b0319821660009081526020819052604090206003015460ff1615610d535781604051636fd2840160e11b815260040161047491906117b4565b6001600160e01b03198216600081815260036020818152604080842086905583825292839020426002820155909101805461ff00191661010017905581513381529081019290925281018290527f6f54980de020c082334fbd596dd7662b8633c26316c828269eb0df4c06a555199060600161053a565b336001600160a01b031673d47d8d97cad12a866900eec6cde1962529f253516001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4a9190611797565b6001600160a01b031614610e7157604051630ca4a64560e11b815260040160405180910390fd5b6001600160e01b0319811660009081526020819052604090206003015462010000900460ff16610eb6578060405163e23b1fcd60e01b815260040161047491906117b4565b6001600160e01b0319811660009081526020819052604090206003015460ff16610ef557806040516339fdfa2d60e21b815260040161047491906117b4565b6001600160e01b03198116600090815260026020818152604080842080546001600160a01b031981169091559184905280842060038101805460ff1916905592830193909355905491516001600160a01b03918216927f88a187c196adbb15d3089e7ea05fa1eb509bbd8fc627cd2ac5390b6813631f989261053a9233928792879291169061181f565b336001600160a01b031673d47d8d97cad12a866900eec6cde1962529f253516001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fff9190611797565b6001600160a01b03161461102657604051630ca4a64560e11b815260040160405180910390fd5b6001600160e01b0319811660009081526020819052604090206003015462010000900460ff1661106b578060405163e23b1fcd60e01b815260040161047491906117b4565b6001600160e01b031981166000908152600160205260409020546001600160a01b03166110ad57806040516319b164cb60e01b815260040161047491906117b4565b6001600160e01b03198116600090815260208181526040808320805460019093529281902080546001600160a01b039081166001600160a01b0319851617909455549051918316927f402251201b1d88c904a19dbaf64c0a1adc3d89e7e519acc78ea57c7ba91c032a9261053a923392879287929091169061181f565b336001600160a01b031673d47d8d97cad12a866900eec6cde1962529f253516001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111aa9190611797565b6001600160a01b0316146111d157604051630ca4a64560e11b815260040160405180910390fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0384161415611232576040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561122c573d6000803e3d6000fd5b50505050565b6112466001600160a01b038416838361145f565b505050565b336001600160a01b031673d47d8d97cad12a866900eec6cde1962529f253516001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cb9190611797565b6001600160a01b0316146112f257604051630ca4a64560e11b815260040160405180910390fd5b6001600160e01b0319831660009081526020819052604090206003015462010000900460ff1615611338578260405163484513e960e01b815260040161047491906117b4565b6040805160c0810182526001600160a01b038085168252602080830185815260008486018181526060860182815260808701838152600160a089018181526001600160e01b03198e16865296859052938990209751885497166001600160a01b03199097169690961787559251918601919091555160028501555160039093018054925191511515620100000262ff0000199215156101000261ff00199515159590951661ffff19909416939093179390931716179055517f4c7de3759e234461df3ecb1c5c32e64f91ed774d22519fba69a9c41e5c978a21906114529033908690869086906001600160a01b0394851681526001600160e01b031993909316602084015292166040820152606081019190915260800190565b60405180910390a1505050565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152611246928692916000916114ef91851690849061156c565b805190915015611246578080602001905181019061150d9190611854565b6112465760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610474565b606061157b8484600085611583565b949350505050565b606061158e85611647565b6115ab5760405163304619b560e01b815260040160405180910390fd5b600080866001600160a01b031685876040516115c791906118a2565b60006040518083038185875af1925050503d8060008114611604576040519150601f19603f3d011682016040523d82523d6000602084013e611609565b606091505b5091509150811561161d57915061157b9050565b80511561162d5780518082602001fd5b8360405162461bcd60e51b815260040161047491906118be565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061157b575050151592915050565b80356001600160e01b03198116811461169857600080fd5b919050565b6000602082840312156116af57600080fd5b6116b882611680565b9392505050565b6001600160a01b03811681146116d457600080fd5b50565b600080604083850312156116ea57600080fd5b6116f383611680565b91506020830135611703816116bf565b809150509250929050565b6000806040838503121561172157600080fd5b61172a83611680565b946020939093013593505050565b60008060006060848603121561174d57600080fd5b8335611758816116bf565b92506020840135611768816116bf565b929592945050506040919091013590565b60008060006060848603121561178e57600080fd5b61175884611680565b6000602082840312156117a957600080fd5b81516116b8816116bf565b6001600160e01b031991909116815260200190565b6001600160a01b039490941684526001600160e01b03199290921660208401526040830152606082015260800190565b6000821982111561181a57634e487b7160e01b600052601160045260246000fd5b500190565b6001600160a01b0394851681526001600160e01b03199390931660208401529083166040830152909116606082015260800190565b60006020828403121561186657600080fd5b815180151581146116b857600080fd5b60005b83811015611891578181015183820152602001611879565b8381111561122c5750506000910152565b600082516118b4818460208701611876565b9190910192915050565b60208152600082518060208401526118dd816040850160208701611876565b601f01601f1916919091016040019291505056fea2646970667358221220b98968807ddd173106d0a203f791aa92a3b9271336f22564b9ffbafca8fa617c64736f6c634300080a0033
Deployed ByteCode Sourcemap
11477:8207:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19124:557;;;;;;:::i;:::-;;:::i;:::-;;12670:50;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;12670:50:0;;;;;;-1:-1:-1;;;;;545:32:1;;;527:51;;515:2;500:18;12670:50:0;;;;;;;;11377:85;;;:::i;15799:921::-;;;;;;:::i;:::-;;:::i;18172:866::-;;;;;;:::i;:::-;;:::i;15095:584::-;;;;;;:::i;:::-;;:::i;12727:50::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1195:25:1;;;1183:2;1168:18;12727:50:0;1049:177:1;13163:106:0;;;;;;:::i;:::-;-1:-1:-1;;;;;;13242:12:0;13218:4;13242:12;;;;;;;;;;:19;;;;;;;;;13163:106;;;;1396:14:1;;1389:22;1371:41;;1359:2;1344:18;13163:106:0;1231:187:1;10548:68:0;;9492:42;10548:68;;12941:110;;;;;;:::i;:::-;-1:-1:-1;;;;;;13018:12:0;12991:7;13018:12;;;;;;;;;;:25;-1:-1:-1;;;;;13018:25:0;;12941:110;17504:553;;;;;;:::i;:::-;;:::i;16802:564::-;;;;;;:::i;:::-;;:::i;14370:491::-;;;;;;:::i;:::-;;:::i;12564:39::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12564:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2193:32:1;;;2175:51;;2257:2;2242:18;;2235:34;;;;2285:18;;;2278:34;;;;2355:14;2348:22;2343:2;2328:18;;2321:50;2415:14;2408:22;2402:3;2387:19;;2380:51;2475:14;2468:22;2213:3;2447:19;;2440:51;2162:3;2147:19;12564:39:0;1906:591:1;11015:316:0;;;;;;:::i;:::-;;:::i;13595:576::-;;;;;;:::i;:::-;;:::i;12610:51::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;12610:51:0;;;19124:557;10743:10;-1:-1:-1;;;;;10721:32:0;9492:42;-1:-1:-1;;;;;10721:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10721:32:0;;10717:87;;10776:16;;-1:-1:-1;;;10776:16:0;;;;;;;;;;;10717:87;-1:-1:-1;;;;;;19201:12:0;::::1;:7;:12:::0;;;::::1;::::0;;;;;;:19:::1;;::::0;;;::::1;;;19196:85;;19265:3;19243:26;;-1:-1:-1::0;;;19243:26:0::1;;;;;;;;:::i;:::-;;;;;;;;19196:85;-1:-1:-1::0;;;;;;19296:12:0;::::1;:7;:12:::0;;;::::1;::::0;;;;;;:31:::1;;::::0;::::1;::::0;::::1;;;19291:97;;19372:3;19350:26;;-1:-1:-1::0;;;19350:26:0::1;;;;;;;;:::i;19291:97::-;-1:-1:-1::0;;;;;;19424:21:0;::::1;19400;19424::::0;;;:16:::1;:21;::::0;;;;;;;;;19458:25;;;;19494:12;;;;;;;:31;;::::1;:39:::0;;-1:-1:-1;;19494:39:0::1;::::0;;19544:28:::1;::::0;::::1;:32:::0;;;;-1:-1:-1;19649:23:0;;;::::1;::::0;19594:79;;19424:21;;19594:79:::1;::::0;::::1;::::0;19617:10:::1;::::0;19441:3;;19424:21;;19594:79:::1;:::i;:::-;;;;;;;;19185:496;19124:557:::0;:::o;11377:85::-;10889:10;-1:-1:-1;;;;;10867:32:0;9492:42;-1:-1:-1;;;;;10867:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10867:32:0;;10863:87;;10922:16;;-1:-1:-1;;;10922:16:0;;;;;;;;;;;10863:87;11442:10:::1;11421:33;15799:921:::0;10743:10;-1:-1:-1;;;;;10721:32:0;9492:42;-1:-1:-1;;;;;10721:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10721:32:0;;10717:87;;10776:16;;-1:-1:-1;;;10776:16:0;;;;;;;;;;;10717:87;-1:-1:-1;;;;;;15875:12:0;::::1;:7;:12:::0;;;::::1;::::0;;;;;;:19:::1;;::::0;;;::::1;;;15870:85;;15939:3;15917:26;;-1:-1:-1::0;;;15917:26:0::1;;;;;;;;:::i;15870:85::-;-1:-1:-1::0;;;;;;15970:12:0;::::1;:7;:12:::0;;;::::1;::::0;;;;;;:29:::1;;::::0;::::1;;15965:95;;16044:3;16022:26;;-1:-1:-1::0;;;16022:26:0::1;;;;;;;;:::i;15965:95::-;-1:-1:-1::0;;;;;;16124:12:0;::::1;:7;:12:::0;;;::::1;::::0;;;;;;:23:::1;::::0;::::1;::::0;16093:28:::1;::::0;;::::1;::::0;:54:::1;::::0;16124:23;16093:54:::1;:::i;:::-;16074:15;:74;16070:230;;;-1:-1:-1::0;;;;;;16263:12:0;::::1;:7;:12:::0;;;::::1;::::0;;;;;;:23:::1;::::0;::::1;::::0;16232:28:::1;::::0;;::::1;::::0;16214:15:::1;::::0;16232:54:::1;::::0;::::1;:::i;:::-;16194:94;::::0;-1:-1:-1;;;16194:94:0;;::::1;::::0;::::1;4669:25:1::0;;;;4710:18;;;4703:34;4642:18;;16194:94:0::1;4495:248:1::0;16070:230:0::1;-1:-1:-1::0;;;;;;16338:12:0;::::1;16312:23;16338:12:::0;;;::::1;::::0;;;;;;;:25;;16402:16:::1;:21:::0;;;;;;;;-1:-1:-1;;;;;;16374:49:0;;::::1;-1:-1:-1::0;;;;;16402:21:0;;::::1;16374:49;::::0;;16434:29:::1;::::0;::::1;:37:::0;;-1:-1:-1;;16434:37:0::1;::::0;;16482:28;;::::1;:32:::0;;;16527:34;;;::::1;::::0;;;16338:25;16572:22;;;;;:40;;;;::::1;16338:25:::0;;::::1;16572:40:::0;;::::1;::::0;;;16686:12;;;;:25;16630:82;;16338:25;;16630:82:::1;::::0;::::1;::::0;16652:10:::1;::::0;16346:3;;16338:25;;16686;;::::1;::::0;16630:82:::1;:::i;18172:866::-:0;10743:10;-1:-1:-1;;;;;10721:32:0;9492:42;-1:-1:-1;;;;;10721:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10721:32:0;;10717:87;;10776:16;;-1:-1:-1;;;10776:16:0;;;;;;;;;;;10717:87;-1:-1:-1;;;;;;18250:12:0;::::1;:7;:12:::0;;;::::1;::::0;;;;;;:19:::1;;::::0;;;::::1;;;18245:85;;18314:3;18292:26;;-1:-1:-1::0;;;18292:26:0::1;;;;;;;;:::i;18245:85::-;-1:-1:-1::0;;;;;;18345:12:0;::::1;:7;:12:::0;;;::::1;::::0;;;;;;:31:::1;;::::0;::::1;::::0;::::1;;;18340:97;;18421:3;18399:26;;-1:-1:-1::0;;;18399:26:0::1;;;;;;;;:::i;18340:97::-;-1:-1:-1::0;;;;;;18501:12:0;::::1;:7;:12:::0;;;::::1;::::0;;;;;;:23:::1;::::0;::::1;::::0;18470:28:::1;::::0;;::::1;::::0;:54:::1;::::0;18501:23;18470:54:::1;:::i;:::-;18451:15;:74;18447:231;;;-1:-1:-1::0;;;;;;18641:12:0;::::1;:7;:12:::0;;;::::1;::::0;;;;;;:23:::1;::::0;::::1;::::0;18610:28:::1;::::0;;::::1;::::0;18592:15:::1;::::0;18610:54:::1;::::0;::::1;:::i;18447:231::-;-1:-1:-1::0;;;;;;18712:12:0;::::1;18690:19;18712:12:::0;;;::::1;::::0;;;;;;;:23:::1;::::0;::::1;::::0;;18772:16:::1;:21:::0;;;;;;;;18746:47;;18814:31;;::::1;:39:::0;;-1:-1:-1;;18814:39:0::1;::::0;;18864:28:::1;::::0;;::::1;:32:::0;;;18909:25;;;;19006:12;;;;:23;;18952:78;;18712:23;;18952:78:::1;::::0;::::1;::::0;18976:10:::1;::::0;18720:3;;18712:23;;18952:78:::1;:::i;15095:584::-:0;10743:10;-1:-1:-1;;;;;10721:32:0;9492:42;-1:-1:-1;;;;;10721:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10721:32:0;;10717:87;;10776:16;;-1:-1:-1;;;10776:16:0;;;;;;;;;;;10717:87;-1:-1:-1;;;;;;15195:12:0;::::1;:7;:12:::0;;;::::1;::::0;;;;;;:19:::1;;::::0;;;::::1;;;15190:85;;15259:3;15237:26;;-1:-1:-1::0;;;15237:26:0::1;;;;;;;;:::i;15190:85::-;-1:-1:-1::0;;;;;;15289:12:0;::::1;:7;:12:::0;;;::::1;::::0;;;;;;:31:::1;;::::0;::::1;::::0;::::1;;;15285:105;;;15374:3;15343:35;;-1:-1:-1::0;;;15343:35:0::1;;;;;;;;:::i;15285:105::-;-1:-1:-1::0;;;;;;15402:12:0;::::1;:7;:12:::0;;;::::1;::::0;;;;;;;15433:15:::1;15402:28;::::0;;::::1;:46:::0;;;;15483:29:::1;::::0;::::1;:36:::0;;-1:-1:-1;;15483:36:0::1;15515:4;15483:36;::::0;;15532:21;;;;;:40;;-1:-1:-1;;;;;15532:40:0;;::::1;-1:-1:-1::0;;;;;;15532:40:0;;::::1;::::0;;;::::1;::::0;;;15627:12;;;;:25;;15590:81;;::::1;::::0;::::1;::::0;15610:10:::1;::::0;15410:3;;15627:25;;;::::1;::::0;15556:16;;15590:81:::1;:::i;17504:553::-:0;10743:10;-1:-1:-1;;;;;10721:32:0;9492:42;-1:-1:-1;;;;;10721:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10721:32:0;;10717:87;;10776:16;;-1:-1:-1;;;10776:16:0;;;;;;;;;;;10717:87;-1:-1:-1;;;;;;17604:12:0;::::1;:7;:12:::0;;;::::1;::::0;;;;;;:19:::1;;::::0;;;::::1;;;17599:85;;17668:3;17646:26;;-1:-1:-1::0;;;17646:26:0::1;;;;;;;;:::i;17599:85::-;-1:-1:-1::0;;;;;;17698:12:0;::::1;:7;:12:::0;;;::::1;::::0;;;;;;:29:::1;;::::0;::::1;;17694:101;;;17779:3;17750:33;;-1:-1:-1::0;;;17750:33:0::1;;;;;;;;:::i;17694:101::-;-1:-1:-1::0;;;;;;17807:21:0;::::1;;::::0;;;:16:::1;:21;::::0;;;;;;;:38;;;17858:12;;;;;;;17889:15:::1;17858:28;::::0;::::1;:46:::0;17939:31;;::::1;:38:::0;;-1:-1:-1;;17939:38:0::1;;;::::0;;17995:54;;18017:10:::1;5434:51:1::0;;5501:18;;;5494:61;;;;5571:18;;5564:34;;;17995:54:0::1;::::0;5422:2:1;5407:18;17995:54:0::1;5234:370:1::0;16802:564:0;10743:10;-1:-1:-1;;;;;10721:32:0;9492:42;-1:-1:-1;;;;;10721:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10721:32:0;;10717:87;;10776:16;;-1:-1:-1;;;10776:16:0;;;;;;;;;;;10717:87;-1:-1:-1;;;;;;16877:12:0;::::1;:7;:12:::0;;;::::1;::::0;;;;;;:19:::1;;::::0;;;::::1;;;16872:85;;16941:3;16919:26;;-1:-1:-1::0;;;16919:26:0::1;;;;;;;;:::i;16872:85::-;-1:-1:-1::0;;;;;;16972:12:0;::::1;:7;:12:::0;;;::::1;::::0;;;;;;:29:::1;;::::0;::::1;;16967:95;;17046:3;17024:26;;-1:-1:-1::0;;;17024:26:0::1;;;;;;;;:::i;16967:95::-;-1:-1:-1::0;;;;;;17100:21:0;::::1;17074:23;17100:21:::0;;;:16:::1;:21;::::0;;;;;;;;;-1:-1:-1;;;;;;17134:34:0;::::1;::::0;;;17179:12;;;;;;;:29:::1;::::0;::::1;:37:::0;;-1:-1:-1;;17179:37:0::1;::::0;;17227:28;;::::1;:32:::0;;;;17332:25;;17277:81;;-1:-1:-1;;;;;17100:21:0;;::::1;::::0;17277:81:::1;::::0;::::1;::::0;17298:10:::1;::::0;17117:3;;17100:21;;17332:25;::::1;::::0;17277:81:::1;:::i;14370:491::-:0;10743:10;-1:-1:-1;;;;;10721:32:0;9492:42;-1:-1:-1;;;;;10721:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10721:32:0;;10717:87;;10776:16;;-1:-1:-1;;;10776:16:0;;;;;;;;;;;10717:87;-1:-1:-1;;;;;;14449:12:0;::::1;:7;:12:::0;;;::::1;::::0;;;;;;:19:::1;;::::0;;;::::1;;;14443:87;;14514:3;14492:26;;-1:-1:-1::0;;;14492:26:0::1;;;;;;;;:::i;14443:87::-;-1:-1:-1::0;;;;;;14544:22:0;::::1;14578:1;14544:22:::0;;;:17:::1;:22;::::0;;;;;-1:-1:-1;;;;;14544:22:0::1;14540:98;;14622:3;14603:23;;-1:-1:-1::0;;;14603:23:0::1;;;;;;;;:::i;14540:98::-;-1:-1:-1::0;;;;;;14672:12:0;::::1;14650:19;14672:12:::0;;;::::1;::::0;;;;;;;:25;;;14736:22;;;;;;;;;-1:-1:-1;;;;;14736:22:0;;::::1;-1:-1:-1::0;;;;;;14708:50:0;::::1;;::::0;;;14830:22;14776:77;;14672:25;;::::1;::::0;14776:77:::1;::::0;::::1;::::0;14800:10:::1;::::0;14672:12;;:25;;14830:22;;::::1;::::0;14776:77:::1;:::i;11015:316::-:0;10743:10;-1:-1:-1;;;;;10721:32:0;9492:42;-1:-1:-1;;;;;10721:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10721:32:0;;10717:87;;10776:16;;-1:-1:-1;;;10776:16:0;;;;;;;;;;;10717:87;11137:42:::1;-1:-1:-1::0;;;;;11127:52:0;::::1;;11123:201;;;11196:36;::::0;-1:-1:-1;;;;;11196:27:0;::::1;::::0;:36;::::1;;;::::0;11224:7;;11196:36:::1;::::0;;;11224:7;11196:27;:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11015:316:::0;;;:::o;11123:201::-:1;11265:47;-1:-1:-1::0;;;;;11265:27:0;::::1;11293:9:::0;11304:7;11265:27:::1;:47::i;:::-;11015:316:::0;;;:::o;13595:576::-;10743:10;-1:-1:-1;;;;;10721:32:0;9492:42;-1:-1:-1;;;;;10721:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10721:32:0;;10717:87;;10776:16;;-1:-1:-1;;;10776:16:0;;;;;;;;;;;10717:87;-1:-1:-1;;;;;;13741:12:0;::::1;:7;:12:::0;;;::::1;::::0;;;;;;:19:::1;;::::0;;;::::1;;;13737:86;;;13807:3;13783:28;;-1:-1:-1::0;;;13783:28:0::1;;;;;;;;:::i;13737:86::-;13850:236;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;13850:236:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;13850:236:0;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13835:12:0;::::1;::::0;;;;;;;;;;:251;;;;;::::1;-1:-1:-1::0;;;;;;13835:251:0;;::::1;::::0;;;::::1;::::0;;;;;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;::::1;;::::0;::::1;-1:-1:-1::0;;13835:251:0;::::1;;;;-1:-1:-1::0;;13835:251:0;::::1;;::::0;;;;-1:-1:-1;;13835:251:0;;;;;;;;;;::::1;;;::::0;;14104:59;::::1;::::0;::::1;::::0;14119:10:::1;::::0;13843:3;;13885:13;;13925:11;;-1:-1:-1;;;;;5894:15:1;;;5876:34;;-1:-1:-1;;;;;;5946:33:1;;;;5941:2;5926:18;;5919:61;6016:15;;6011:2;5996:18;;5989:43;6063:2;6048:18;;6041:34;;;;5825:3;5810:19;;5609:472;14104:59:0::1;;;;;;;;13595:576:::0;;;:::o;7176:211::-;7320:58;;;-1:-1:-1;;;;;6278:32:1;;;7320:58:0;;;6260:51:1;6327:18;;;;6320:34;;;7320:58:0;;;;;;;;;;6233:18:1;;;;7320:58:0;;;;;;;;-1:-1:-1;;;;;7320:58:0;-1:-1:-1;;;7320:58:0;;;9033:106;;;;;;;;;;;;;;;;7293:86;;7313:5;;7320:58;-1:-1:-1;;9033:106:0;;:27;;;7320:58;;9033:27;:106::i;:::-;9154:17;;9007:132;;-1:-1:-1;9154:21:0;9150:237;;9309:10;9298:30;;;;;;;;;;;;:::i;:::-;9290:85;;;;-1:-1:-1;;;9290:85:0;;6849:2:1;9290:85:0;;;6831:21:1;6888:2;6868:18;;;6861:30;6927:34;6907:18;;;6900:62;-1:-1:-1;;;6978:18:1;;;6971:40;7028:19;;9290:85:0;6647:406:1;3198:230:0;3335:12;3367:53;3390:6;3398:4;3404:1;3407:12;3367:22;:53::i;:::-;3360:60;3198:230;-1:-1:-1;;;;3198:230:0:o;4148:1036::-;4321:12;4352:18;4363:6;4352:10;:18::i;:::-;4346:77;;4394:17;;-1:-1:-1;;;4394:17:0;;;;;;;;;;;4346:77;4496:12;4510:23;4537:6;-1:-1:-1;;;;;4537:11:0;4556:8;4566:4;4537:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4495:76;;;;4586:7;4582:595;;;4617:10;-1:-1:-1;4610:17:0;;-1:-1:-1;4610:17:0;4582:595;4731:17;;:21;4727:439;;4994:10;4988:17;5055:15;5042:10;5038:2;5034:19;5027:44;4727:439;5137:12;5130:20;;-1:-1:-1;;;5130:20:0;;;;;;;;:::i;1908:641::-;1968:4;2449:20;;2279:66;2498:23;;;;;;:42;;-1:-1:-1;;2525:15:0;;;2490:51;-1:-1:-1;;1908:641:0:o;14:173:1:-;81:20;;-1:-1:-1;;;;;;130:32:1;;120:43;;110:71;;177:1;174;167:12;110:71;14:173;;;:::o;192:184::-;250:6;303:2;291:9;282:7;278:23;274:32;271:52;;;319:1;316;309:12;271:52;342:28;360:9;342:28;:::i;:::-;332:38;192:184;-1:-1:-1;;;192:184:1:o;589:131::-;-1:-1:-1;;;;;664:31:1;;654:42;;644:70;;710:1;707;700:12;644:70;589:131;:::o;725:319::-;792:6;800;853:2;841:9;832:7;828:23;824:32;821:52;;;869:1;866;859:12;821:52;892:28;910:9;892:28;:::i;:::-;882:38;;970:2;959:9;955:18;942:32;983:31;1008:5;983:31;:::i;:::-;1033:5;1023:15;;;725:319;;;;;:::o;1649:252::-;1716:6;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1816:28;1834:9;1816:28;:::i;:::-;1806:38;1891:2;1876:18;;;;1863:32;;-1:-1:-1;;;1649:252:1:o;2502:456::-;2579:6;2587;2595;2648:2;2636:9;2627:7;2623:23;2619:32;2616:52;;;2664:1;2661;2654:12;2616:52;2703:9;2690:23;2722:31;2747:5;2722:31;:::i;:::-;2772:5;-1:-1:-1;2829:2:1;2814:18;;2801:32;2842:33;2801:32;2842:33;:::i;:::-;2502:456;;2894:7;;-1:-1:-1;;;2948:2:1;2933:18;;;;2920:32;;2502:456::o;2963:387::-;3039:6;3047;3055;3108:2;3096:9;3087:7;3083:23;3079:32;3076:52;;;3124:1;3121;3114:12;3076:52;3147:28;3165:9;3147:28;:::i;3355:251::-;3425:6;3478:2;3466:9;3457:7;3453:23;3449:32;3446:52;;;3494:1;3491;3484:12;3446:52;3526:9;3520:16;3545:31;3570:5;3545:31;:::i;3611:202::-;-1:-1:-1;;;;;;3773:33:1;;;;3755:52;;3743:2;3728:18;;3611:202::o;3818:442::-;-1:-1:-1;;;;;4065:32:1;;;;4047:51;;-1:-1:-1;;;;;;4134:33:1;;;;4129:2;4114:18;;4107:61;4199:2;4184:18;;4177:34;4242:2;4227:18;;4220:34;4034:3;4019:19;;3818:442::o;4265:225::-;4305:3;4336:1;4332:6;4329:1;4326:13;4323:136;;;4381:10;4376:3;4372:20;4369:1;4362:31;4416:4;4413:1;4406:15;4444:4;4441:1;4434:15;4323:136;-1:-1:-1;4475:9:1;;4265:225::o;4748:481::-;-1:-1:-1;;;;;5033:15:1;;;5015:34;;-1:-1:-1;;;;;;5085:33:1;;;;5080:2;5065:18;;5058:61;5155:15;;;5150:2;5135:18;;5128:43;5207:15;;;5202:2;5187:18;;5180:43;4964:3;4949:19;;4748:481::o;6365:277::-;6432:6;6485:2;6473:9;6464:7;6460:23;6456:32;6453:52;;;6501:1;6498;6491:12;6453:52;6533:9;6527:16;6586:5;6579:13;6572:21;6565:5;6562:32;6552:60;;6608:1;6605;6598:12;7058:258;7130:1;7140:113;7154:6;7151:1;7148:13;7140:113;;;7230:11;;;7224:18;7211:11;;;7204:39;7176:2;7169:10;7140:113;;;7271:6;7268:1;7265:13;7262:48;;;-1:-1:-1;;7306:1:1;7288:16;;7281:27;7058:258::o;7321:274::-;7450:3;7488:6;7482:13;7504:53;7550:6;7545:3;7538:4;7530:6;7526:17;7504:53;:::i;:::-;7573:16;;;;;7321:274;-1:-1:-1;;7321:274:1:o;7600:383::-;7749:2;7738:9;7731:21;7712:4;7781:6;7775:13;7824:6;7819:2;7808:9;7804:18;7797:34;7840:66;7899:6;7894:2;7883:9;7879:18;7874:2;7866:6;7862:15;7840:66;:::i;:::-;7967:2;7946:15;-1:-1:-1;;7942:29:1;7927:45;;;;7974:2;7923:54;;7600:383;-1:-1:-1;;7600:383:1:o
Metadata Hash
b98968807ddd173106d0a203f791aa92a3b9271336f22564b9ffbafca8fa617c
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.