Contract
0x3e5d9d8a63cc8a88748f229999cf59487e90721e
15
[ Download CSV Export ]
OVERVIEW
A decentralized platform that allows hedging swaps on financial markets providing a coverage to those working with commodities and investment opportunities for those who contribute to the shared liquidity of the project.
Latest 25 internal transaction
[ Download CSV Export ]
Contract Name:
MetalSwap
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Optimistic.Etherscan.io on 2023-06-02 */ // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); } // File: https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/standards/IL2StandardERC20.sol pragma solidity ^0.8.9; interface IL2StandardERC20 is IERC20, IERC165 { function l1Token() external returns (address); function mint(address _to, uint256 _amount) external; function burn(address _from, uint256 _amount) external; event Mint(address indexed _account, uint256 _amount); event Burn(address indexed _account, uint256 _amount); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the default value returned by this function, unless * it's overridden. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} } // File: https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/standards/L2StandardERC20.sol pragma solidity ^0.8.9; contract L2StandardERC20 is IL2StandardERC20, ERC20 { address public l1Token; address public l2Bridge; /** * @param _l2Bridge Address of the L2 standard bridge. * @param _l1Token Address of the corresponding L1 token. * @param _name ERC20 name. * @param _symbol ERC20 symbol. */ constructor( address _l2Bridge, address _l1Token, string memory _name, string memory _symbol ) ERC20(_name, _symbol) { l1Token = _l1Token; l2Bridge = _l2Bridge; } modifier onlyL2Bridge() { require(msg.sender == l2Bridge, "Only L2 Bridge can mint and burn"); _; } // slither-disable-next-line external-function function supportsInterface(bytes4 _interfaceId) public pure returns (bool) { bytes4 firstSupportedInterface = bytes4(keccak256("supportsInterface(bytes4)")); // ERC165 bytes4 secondSupportedInterface = IL2StandardERC20.l1Token.selector ^ IL2StandardERC20.mint.selector ^ IL2StandardERC20.burn.selector; return _interfaceId == firstSupportedInterface || _interfaceId == secondSupportedInterface; } // slither-disable-next-line external-function function mint(address _to, uint256 _amount) public virtual onlyL2Bridge { _mint(_to, _amount); emit Mint(_to, _amount); } // slither-disable-next-line external-function function burn(address _from, uint256 _amount) public virtual onlyL2Bridge { _burn(_from, _amount); emit Burn(_from, _amount); } } // File: Optimism_Swap_System/contracts/tokens/XMT_OP.sol // SPDX-License-Identifier: MIT pragma solidity ^0.8.17; contract MetalSwap is L2StandardERC20 { constructor () L2StandardERC20(0x4200000000000000000000000000000000000010, 0x3E5D9D8a63CC8a88748f229999CF59487e90721e, "MetalSwap", "XMT") { } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"l1Token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2Bridge","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50734200000000000000000000000000000000000010733e5d9d8a63cc8a88748f229999cf59487e90721e6040518060400160405280600981526020017f4d6574616c5377617000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f584d54000000000000000000000000000000000000000000000000000000000081525081818160039081620000bb9190620003d6565b508060049081620000cd9190620003d6565b50505082600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050620004bd565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620001de57607f821691505b602082108103620001f457620001f362000196565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200025e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200021f565b6200026a86836200021f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620002b7620002b1620002ab8462000282565b6200028c565b62000282565b9050919050565b6000819050919050565b620002d38362000296565b620002eb620002e282620002be565b8484546200022c565b825550505050565b600090565b62000302620002f3565b6200030f818484620002c8565b505050565b5b8181101562000337576200032b600082620002f8565b60018101905062000315565b5050565b601f82111562000386576200035081620001fa565b6200035b846200020f565b810160208510156200036b578190505b620003836200037a856200020f565b83018262000314565b50505b505050565b600082821c905092915050565b6000620003ab600019846008026200038b565b1980831691505092915050565b6000620003c6838362000398565b9150826002028217905092915050565b620003e1826200015c565b67ffffffffffffffff811115620003fd57620003fc62000167565b5b620004098254620001c5565b620004168282856200033b565b600060209050601f8311600181146200044e576000841562000439578287015190505b620004458582620003b8565b865550620004b5565b601f1984166200045e86620001fa565b60005b82811015620004885784890151825560018201915060208501945060208101905062000461565b86831015620004a85784890151620004a4601f89168262000398565b8355505b6001600288020188555050505b505050505050565b611bf280620004cd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a9059cbb11610066578063a9059cbb146102d5578063ae1f6aaf14610305578063c01e1bd614610323578063dd62ed3e1461034157610100565b806370a082311461023b57806395d89b411461026b5780639dc29fac14610289578063a457c2d7146102a557610100565b806323b872dd116100d357806323b872dd146101a1578063313ce567146101d157806339509351146101ef57806340c10f191461021f57610100565b806301ffc9a71461010557806306fdde0314610135578063095ea7b31461015357806318160ddd14610183575b600080fd5b61011f600480360381019061011a91906111f1565b610371565b60405161012c9190611239565b60405180910390f35b61013d610447565b60405161014a91906112e4565b60405180910390f35b61016d6004803603810190610168919061139a565b6104d9565b60405161017a9190611239565b60405180910390f35b61018b6104fc565b60405161019891906113e9565b60405180910390f35b6101bb60048036038101906101b69190611404565b610506565b6040516101c89190611239565b60405180910390f35b6101d9610535565b6040516101e69190611473565b60405180910390f35b6102096004803603810190610204919061139a565b61053e565b6040516102169190611239565b60405180910390f35b6102396004803603810190610234919061139a565b610575565b005b6102556004803603810190610250919061148e565b610661565b60405161026291906113e9565b60405180910390f35b6102736106a9565b60405161028091906112e4565b60405180910390f35b6102a3600480360381019061029e919061139a565b61073b565b005b6102bf60048036038101906102ba919061139a565b610827565b6040516102cc9190611239565b60405180910390f35b6102ef60048036038101906102ea919061139a565b61089e565b6040516102fc9190611239565b60405180910390f35b61030d6108c1565b60405161031a91906114ca565b60405180910390f35b61032b6108e7565b60405161033891906114ca565b60405180910390f35b61035b600480360381019061035691906114e5565b61090d565b60405161036891906113e9565b60405180910390f35b6000807f01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e290506000639dc29fac60e01b6340c10f1960e01b63c01e1bd660e01b18189050817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061043e5750807bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b92505050919050565b60606003805461045690611554565b80601f016020809104026020016040519081016040528092919081815260200182805461048290611554565b80156104cf5780601f106104a4576101008083540402835291602001916104cf565b820191906000526020600020905b8154815290600101906020018083116104b257829003601f168201915b5050505050905090565b6000806104e4610994565b90506104f181858561099c565b600191505092915050565b6000600254905090565b600080610511610994565b905061051e858285610b65565b610529858585610bf1565b60019150509392505050565b60006012905090565b600080610549610994565b905061056a81858561055b858961090d565b61056591906115b4565b61099c565b600191505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105fc90611634565b60405180910390fd5b61060f8282610e67565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161065591906113e9565b60405180910390a25050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546106b890611554565b80601f01602080910402602001604051908101604052809291908181526020018280546106e490611554565b80156107315780601f1061070657610100808354040283529160200191610731565b820191906000526020600020905b81548152906001019060200180831161071457829003601f168201915b5050505050905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c290611634565b60405180910390fd5b6107d58282610fbd565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405161081b91906113e9565b60405180910390a25050565b600080610832610994565b90506000610840828661090d565b905083811015610885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087c906116c6565b60405180910390fd5b610892828686840361099c565b60019250505092915050565b6000806108a9610994565b90506108b6818585610bf1565b600191505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0290611758565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a71906117ea565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610b5891906113e9565b60405180910390a3505050565b6000610b71848461090d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610beb5781811015610bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd490611856565b60405180910390fd5b610bea848484840361099c565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c57906118e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc69061197a565b60405180910390fd5b610cda83838361118a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5790611a0c565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e4e91906113e9565b60405180910390a3610e6184848461118f565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecd90611a78565b60405180910390fd5b610ee26000838361118a565b8060026000828254610ef491906115b4565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610fa591906113e9565b60405180910390a3610fb96000838361118f565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361102c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102390611b0a565b60405180910390fd5b6110388260008361118a565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156110be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b590611b9c565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161117191906113e9565b60405180910390a36111858360008461118f565b505050565b505050565b505050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6111ce81611199565b81146111d957600080fd5b50565b6000813590506111eb816111c5565b92915050565b60006020828403121561120757611206611194565b5b6000611215848285016111dc565b91505092915050565b60008115159050919050565b6112338161121e565b82525050565b600060208201905061124e600083018461122a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561128e578082015181840152602081019050611273565b60008484015250505050565b6000601f19601f8301169050919050565b60006112b682611254565b6112c0818561125f565b93506112d0818560208601611270565b6112d98161129a565b840191505092915050565b600060208201905081810360008301526112fe81846112ab565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061133182611306565b9050919050565b61134181611326565b811461134c57600080fd5b50565b60008135905061135e81611338565b92915050565b6000819050919050565b61137781611364565b811461138257600080fd5b50565b6000813590506113948161136e565b92915050565b600080604083850312156113b1576113b0611194565b5b60006113bf8582860161134f565b92505060206113d085828601611385565b9150509250929050565b6113e381611364565b82525050565b60006020820190506113fe60008301846113da565b92915050565b60008060006060848603121561141d5761141c611194565b5b600061142b8682870161134f565b935050602061143c8682870161134f565b925050604061144d86828701611385565b9150509250925092565b600060ff82169050919050565b61146d81611457565b82525050565b60006020820190506114886000830184611464565b92915050565b6000602082840312156114a4576114a3611194565b5b60006114b28482850161134f565b91505092915050565b6114c481611326565b82525050565b60006020820190506114df60008301846114bb565b92915050565b600080604083850312156114fc576114fb611194565b5b600061150a8582860161134f565b925050602061151b8582860161134f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061156c57607f821691505b60208210810361157f5761157e611525565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115bf82611364565b91506115ca83611364565b92508282019050808211156115e2576115e1611585565b5b92915050565b7f4f6e6c79204c32204272696467652063616e206d696e7420616e64206275726e600082015250565b600061161e60208361125f565b9150611629826115e8565b602082019050919050565b6000602082019050818103600083015261164d81611611565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006116b060258361125f565b91506116bb82611654565b604082019050919050565b600060208201905081810360008301526116df816116a3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061174260248361125f565b915061174d826116e6565b604082019050919050565b6000602082019050818103600083015261177181611735565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006117d460228361125f565b91506117df82611778565b604082019050919050565b60006020820190508181036000830152611803816117c7565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611840601d8361125f565b915061184b8261180a565b602082019050919050565b6000602082019050818103600083015261186f81611833565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006118d260258361125f565b91506118dd82611876565b604082019050919050565b60006020820190508181036000830152611901816118c5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061196460238361125f565b915061196f82611908565b604082019050919050565b6000602082019050818103600083015261199381611957565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006119f660268361125f565b9150611a018261199a565b604082019050919050565b60006020820190508181036000830152611a25816119e9565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000611a62601f8361125f565b9150611a6d82611a2c565b602082019050919050565b60006020820190508181036000830152611a9181611a55565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611af460218361125f565b9150611aff82611a98565b604082019050919050565b60006020820190508181036000830152611b2381611ae7565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611b8660228361125f565b9150611b9182611b2a565b604082019050919050565b60006020820190508181036000830152611bb581611b79565b905091905056fea2646970667358221220a5c7429904a771650b0623ef3f23931f3d873d00b0826dbc6903137d0b6deec164736f6c63430008120033
Deployed ByteCode Sourcemap
20960:209:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19957:454;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8054:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10414:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9183:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11195:261;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9025:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11865:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20471:146;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9354:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8273:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20677:152;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12606:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9687:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19298:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19269:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9943:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19957:454;20026:4;20043:30;20083:38;20043:79;;20143:31;20272:30;;;20226;;;20177:33;;;:79;:125;20143:159;;20336:23;20320:39;;;:12;:39;;;;:83;;;;20379:24;20363:40;;;:12;:40;;;;20320:83;20313:90;;;;19957:454;;;:::o;8054:100::-;8108:13;8141:5;8134:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8054:100;:::o;10414:201::-;10497:4;10514:13;10530:12;:10;:12::i;:::-;10514:28;;10553:32;10562:5;10569:7;10578:6;10553:8;:32::i;:::-;10603:4;10596:11;;;10414:201;;;;:::o;9183:108::-;9244:7;9271:12;;9264:19;;9183:108;:::o;11195:261::-;11292:4;11309:15;11327:12;:10;:12::i;:::-;11309:30;;11350:38;11366:4;11372:7;11381:6;11350:15;:38::i;:::-;11399:27;11409:4;11415:2;11419:6;11399:9;:27::i;:::-;11444:4;11437:11;;;11195:261;;;;;:::o;9025:93::-;9083:5;9108:2;9101:9;;9025:93;:::o;11865:238::-;11953:4;11970:13;11986:12;:10;:12::i;:::-;11970:28;;12009:64;12018:5;12025:7;12062:10;12034:25;12044:5;12051:7;12034:9;:25::i;:::-;:38;;;;:::i;:::-;12009:8;:64::i;:::-;12091:4;12084:11;;;11865:238;;;;:::o;20471:146::-;19832:8;;;;;;;;;;;19818:22;;:10;:22;;;19810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20554:19:::1;20560:3;20565:7;20554:5;:19::i;:::-;20596:3;20591:18;;;20601:7;20591:18;;;;;;:::i;:::-;;;;;;;;20471:146:::0;;:::o;9354:127::-;9428:7;9455:9;:18;9465:7;9455:18;;;;;;;;;;;;;;;;9448:25;;9354:127;;;:::o;8273:104::-;8329:13;8362:7;8355:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8273:104;:::o;20677:152::-;19832:8;;;;;;;;;;;19818:22;;:10;:22;;;19810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20762:21:::1;20768:5;20775:7;20762:5;:21::i;:::-;20806:5;20801:20;;;20813:7;20801:20;;;;;;:::i;:::-;;;;;;;;20677:152:::0;;:::o;12606:436::-;12699:4;12716:13;12732:12;:10;:12::i;:::-;12716:28;;12755:24;12782:25;12792:5;12799:7;12782:9;:25::i;:::-;12755:52;;12846:15;12826:16;:35;;12818:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;12939:60;12948:5;12955:7;12983:15;12964:16;:34;12939:8;:60::i;:::-;13030:4;13023:11;;;;12606:436;;;;:::o;9687:193::-;9766:4;9783:13;9799:12;:10;:12::i;:::-;9783:28;;9822;9832:5;9839:2;9843:6;9822:9;:28::i;:::-;9868:4;9861:11;;;9687:193;;;;:::o;19298:23::-;;;;;;;;;;;;;:::o;19269:22::-;;;;;;;;;;;;;:::o;9943:151::-;10032:7;10059:11;:18;10071:5;10059:18;;;;;;;;;;;;;;;:27;10078:7;10059:27;;;;;;;;;;;;;;;;10052:34;;9943:151;;;;:::o;1596:98::-;1649:7;1676:10;1669:17;;1596:98;:::o;16599:346::-;16718:1;16701:19;;:5;:19;;;16693:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16799:1;16780:21;;:7;:21;;;16772:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16883:6;16853:11;:18;16865:5;16853:18;;;;;;;;;;;;;;;:27;16872:7;16853:27;;;;;;;;;;;;;;;:36;;;;16921:7;16905:32;;16914:5;16905:32;;;16930:6;16905:32;;;;;;:::i;:::-;;;;;;;;16599:346;;;:::o;17236:419::-;17337:24;17364:25;17374:5;17381:7;17364:9;:25::i;:::-;17337:52;;17424:17;17404:16;:37;17400:248;;17486:6;17466:16;:26;;17458:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17570:51;17579:5;17586:7;17614:6;17595:16;:25;17570:8;:51::i;:::-;17400:248;17326:329;17236:419;;;:::o;13512:806::-;13625:1;13609:18;;:4;:18;;;13601:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13702:1;13688:16;;:2;:16;;;13680:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13757:38;13778:4;13784:2;13788:6;13757:20;:38::i;:::-;13808:19;13830:9;:15;13840:4;13830:15;;;;;;;;;;;;;;;;13808:37;;13879:6;13864:11;:21;;13856:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13996:6;13982:11;:20;13964:9;:15;13974:4;13964:15;;;;;;;;;;;;;;;:38;;;;14199:6;14182:9;:13;14192:2;14182:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;14249:2;14234:26;;14243:4;14234:26;;;14253:6;14234:26;;;;;;:::i;:::-;;;;;;;;14273:37;14293:4;14299:2;14303:6;14273:19;:37::i;:::-;13590:728;13512:806;;;:::o;14605:548::-;14708:1;14689:21;;:7;:21;;;14681:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;14759:49;14788:1;14792:7;14801:6;14759:20;:49::i;:::-;14837:6;14821:12;;:22;;;;;;;:::i;:::-;;;;;;;;15014:6;14992:9;:18;15002:7;14992:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;15068:7;15047:37;;15064:1;15047:37;;;15077:6;15047:37;;;;;;:::i;:::-;;;;;;;;15097:48;15125:1;15129:7;15138:6;15097:19;:48::i;:::-;14605:548;;:::o;15486:675::-;15589:1;15570:21;;:7;:21;;;15562:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15642:49;15663:7;15680:1;15684:6;15642:20;:49::i;:::-;15704:22;15729:9;:18;15739:7;15729:18;;;;;;;;;;;;;;;;15704:43;;15784:6;15766:14;:24;;15758:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15903:6;15886:14;:23;15865:9;:18;15875:7;15865:18;;;;;;;;;;;;;;;:44;;;;16020:6;16004:12;;:22;;;;;;;;;;;16081:1;16055:37;;16064:7;16055:37;;;16085:6;16055:37;;;;;;:::i;:::-;;;;;;;;16105:48;16125:7;16142:1;16146:6;16105:19;:48::i;:::-;15551:610;15486:675;;:::o;18255:91::-;;;;:::o;18950:90::-;;;;:::o;88:117:1:-;197:1;194;187:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:246::-;1879:1;1889:113;1903:6;1900:1;1897:13;1889:113;;;1988:1;1983:3;1979:11;1973:18;1969:1;1964:3;1960:11;1953:39;1925:2;1922:1;1918:10;1913:15;;1889:113;;;2036:1;2027:6;2022:3;2018:16;2011:27;1860:184;1798:246;;;:::o;2050:102::-;2091:6;2142:2;2138:7;2133:2;2126:5;2122:14;2118:28;2108:38;;2050:102;;;:::o;2158:377::-;2246:3;2274:39;2307:5;2274:39;:::i;:::-;2329:71;2393:6;2388:3;2329:71;:::i;:::-;2322:78;;2409:65;2467:6;2462:3;2455:4;2448:5;2444:16;2409:65;:::i;:::-;2499:29;2521:6;2499:29;:::i;:::-;2494:3;2490:39;2483:46;;2250:285;2158:377;;;;:::o;2541:313::-;2654:4;2692:2;2681:9;2677:18;2669:26;;2741:9;2735:4;2731:20;2727:1;2716:9;2712:17;2705:47;2769:78;2842:4;2833:6;2769:78;:::i;:::-;2761:86;;2541:313;;;;:::o;2860:126::-;2897:7;2937:42;2930:5;2926:54;2915:65;;2860:126;;;:::o;2992:96::-;3029:7;3058:24;3076:5;3058:24;:::i;:::-;3047:35;;2992:96;;;:::o;3094:122::-;3167:24;3185:5;3167:24;:::i;:::-;3160:5;3157:35;3147:63;;3206:1;3203;3196:12;3147:63;3094:122;:::o;3222:139::-;3268:5;3306:6;3293:20;3284:29;;3322:33;3349:5;3322:33;:::i;:::-;3222:139;;;;:::o;3367:77::-;3404:7;3433:5;3422:16;;3367:77;;;:::o;3450:122::-;3523:24;3541:5;3523:24;:::i;:::-;3516:5;3513:35;3503:63;;3562:1;3559;3552:12;3503:63;3450:122;:::o;3578:139::-;3624:5;3662:6;3649:20;3640:29;;3678:33;3705:5;3678:33;:::i;:::-;3578:139;;;;:::o;3723:474::-;3791:6;3799;3848:2;3836:9;3827:7;3823:23;3819:32;3816:119;;;3854:79;;:::i;:::-;3816:119;3974:1;3999:53;4044:7;4035:6;4024:9;4020:22;3999:53;:::i;:::-;3989:63;;3945:117;4101:2;4127:53;4172:7;4163:6;4152:9;4148:22;4127:53;:::i;:::-;4117:63;;4072:118;3723:474;;;;;:::o;4203:118::-;4290:24;4308:5;4290:24;:::i;:::-;4285:3;4278:37;4203:118;;:::o;4327:222::-;4420:4;4458:2;4447:9;4443:18;4435:26;;4471:71;4539:1;4528:9;4524:17;4515:6;4471:71;:::i;:::-;4327:222;;;;:::o;4555:619::-;4632:6;4640;4648;4697:2;4685:9;4676:7;4672:23;4668:32;4665:119;;;4703:79;;:::i;:::-;4665:119;4823:1;4848:53;4893:7;4884:6;4873:9;4869:22;4848:53;:::i;:::-;4838:63;;4794:117;4950:2;4976:53;5021:7;5012:6;5001:9;4997:22;4976:53;:::i;:::-;4966:63;;4921:118;5078:2;5104:53;5149:7;5140:6;5129:9;5125:22;5104:53;:::i;:::-;5094:63;;5049:118;4555:619;;;;;:::o;5180:86::-;5215:7;5255:4;5248:5;5244:16;5233:27;;5180:86;;;:::o;5272:112::-;5355:22;5371:5;5355:22;:::i;:::-;5350:3;5343:35;5272:112;;:::o;5390:214::-;5479:4;5517:2;5506:9;5502:18;5494:26;;5530:67;5594:1;5583:9;5579:17;5570:6;5530:67;:::i;:::-;5390:214;;;;:::o;5610:329::-;5669:6;5718:2;5706:9;5697:7;5693:23;5689:32;5686:119;;;5724:79;;:::i;:::-;5686:119;5844:1;5869:53;5914:7;5905:6;5894:9;5890:22;5869:53;:::i;:::-;5859:63;;5815:117;5610:329;;;;:::o;5945:118::-;6032:24;6050:5;6032:24;:::i;:::-;6027:3;6020:37;5945:118;;:::o;6069:222::-;6162:4;6200:2;6189:9;6185:18;6177:26;;6213:71;6281:1;6270:9;6266:17;6257:6;6213:71;:::i;:::-;6069:222;;;;:::o;6297:474::-;6365:6;6373;6422:2;6410:9;6401:7;6397:23;6393:32;6390:119;;;6428:79;;:::i;:::-;6390:119;6548:1;6573:53;6618:7;6609:6;6598:9;6594:22;6573:53;:::i;:::-;6563:63;;6519:117;6675:2;6701:53;6746:7;6737:6;6726:9;6722:22;6701:53;:::i;:::-;6691:63;;6646:118;6297:474;;;;;:::o;6777:180::-;6825:77;6822:1;6815:88;6922:4;6919:1;6912:15;6946:4;6943:1;6936:15;6963:320;7007:6;7044:1;7038:4;7034:12;7024:22;;7091:1;7085:4;7081:12;7112:18;7102:81;;7168:4;7160:6;7156:17;7146:27;;7102:81;7230:2;7222:6;7219:14;7199:18;7196:38;7193:84;;7249:18;;:::i;:::-;7193:84;7014:269;6963:320;;;:::o;7289:180::-;7337:77;7334:1;7327:88;7434:4;7431:1;7424:15;7458:4;7455:1;7448:15;7475:191;7515:3;7534:20;7552:1;7534:20;:::i;:::-;7529:25;;7568:20;7586:1;7568:20;:::i;:::-;7563:25;;7611:1;7608;7604:9;7597:16;;7632:3;7629:1;7626:10;7623:36;;;7639:18;;:::i;:::-;7623:36;7475:191;;;;:::o;7672:182::-;7812:34;7808:1;7800:6;7796:14;7789:58;7672:182;:::o;7860:366::-;8002:3;8023:67;8087:2;8082:3;8023:67;:::i;:::-;8016:74;;8099:93;8188:3;8099:93;:::i;:::-;8217:2;8212:3;8208:12;8201:19;;7860:366;;;:::o;8232:419::-;8398:4;8436:2;8425:9;8421:18;8413:26;;8485:9;8479:4;8475:20;8471:1;8460:9;8456:17;8449:47;8513:131;8639:4;8513:131;:::i;:::-;8505:139;;8232:419;;;:::o;8657:224::-;8797:34;8793:1;8785:6;8781:14;8774:58;8866:7;8861:2;8853:6;8849:15;8842:32;8657:224;:::o;8887:366::-;9029:3;9050:67;9114:2;9109:3;9050:67;:::i;:::-;9043:74;;9126:93;9215:3;9126:93;:::i;:::-;9244:2;9239:3;9235:12;9228:19;;8887:366;;;:::o;9259:419::-;9425:4;9463:2;9452:9;9448:18;9440:26;;9512:9;9506:4;9502:20;9498:1;9487:9;9483:17;9476:47;9540:131;9666:4;9540:131;:::i;:::-;9532:139;;9259:419;;;:::o;9684:223::-;9824:34;9820:1;9812:6;9808:14;9801:58;9893:6;9888:2;9880:6;9876:15;9869:31;9684:223;:::o;9913:366::-;10055:3;10076:67;10140:2;10135:3;10076:67;:::i;:::-;10069:74;;10152:93;10241:3;10152:93;:::i;:::-;10270:2;10265:3;10261:12;10254:19;;9913:366;;;:::o;10285:419::-;10451:4;10489:2;10478:9;10474:18;10466:26;;10538:9;10532:4;10528:20;10524:1;10513:9;10509:17;10502:47;10566:131;10692:4;10566:131;:::i;:::-;10558:139;;10285:419;;;:::o;10710:221::-;10850:34;10846:1;10838:6;10834:14;10827:58;10919:4;10914:2;10906:6;10902:15;10895:29;10710:221;:::o;10937:366::-;11079:3;11100:67;11164:2;11159:3;11100:67;:::i;:::-;11093:74;;11176:93;11265:3;11176:93;:::i;:::-;11294:2;11289:3;11285:12;11278:19;;10937:366;;;:::o;11309:419::-;11475:4;11513:2;11502:9;11498:18;11490:26;;11562:9;11556:4;11552:20;11548:1;11537:9;11533:17;11526:47;11590:131;11716:4;11590:131;:::i;:::-;11582:139;;11309:419;;;:::o;11734:179::-;11874:31;11870:1;11862:6;11858:14;11851:55;11734:179;:::o;11919:366::-;12061:3;12082:67;12146:2;12141:3;12082:67;:::i;:::-;12075:74;;12158:93;12247:3;12158:93;:::i;:::-;12276:2;12271:3;12267:12;12260:19;;11919:366;;;:::o;12291:419::-;12457:4;12495:2;12484:9;12480:18;12472:26;;12544:9;12538:4;12534:20;12530:1;12519:9;12515:17;12508:47;12572:131;12698:4;12572:131;:::i;:::-;12564:139;;12291:419;;;:::o;12716:224::-;12856:34;12852:1;12844:6;12840:14;12833:58;12925:7;12920:2;12912:6;12908:15;12901:32;12716:224;:::o;12946:366::-;13088:3;13109:67;13173:2;13168:3;13109:67;:::i;:::-;13102:74;;13185:93;13274:3;13185:93;:::i;:::-;13303:2;13298:3;13294:12;13287:19;;12946:366;;;:::o;13318:419::-;13484:4;13522:2;13511:9;13507:18;13499:26;;13571:9;13565:4;13561:20;13557:1;13546:9;13542:17;13535:47;13599:131;13725:4;13599:131;:::i;:::-;13591:139;;13318:419;;;:::o;13743:222::-;13883:34;13879:1;13871:6;13867:14;13860:58;13952:5;13947:2;13939:6;13935:15;13928:30;13743:222;:::o;13971:366::-;14113:3;14134:67;14198:2;14193:3;14134:67;:::i;:::-;14127:74;;14210:93;14299:3;14210:93;:::i;:::-;14328:2;14323:3;14319:12;14312:19;;13971:366;;;:::o;14343:419::-;14509:4;14547:2;14536:9;14532:18;14524:26;;14596:9;14590:4;14586:20;14582:1;14571:9;14567:17;14560:47;14624:131;14750:4;14624:131;:::i;:::-;14616:139;;14343:419;;;:::o;14768:225::-;14908:34;14904:1;14896:6;14892:14;14885:58;14977:8;14972:2;14964:6;14960:15;14953:33;14768:225;:::o;14999:366::-;15141:3;15162:67;15226:2;15221:3;15162:67;:::i;:::-;15155:74;;15238:93;15327:3;15238:93;:::i;:::-;15356:2;15351:3;15347:12;15340:19;;14999:366;;;:::o;15371:419::-;15537:4;15575:2;15564:9;15560:18;15552:26;;15624:9;15618:4;15614:20;15610:1;15599:9;15595:17;15588:47;15652:131;15778:4;15652:131;:::i;:::-;15644:139;;15371:419;;;:::o;15796:181::-;15936:33;15932:1;15924:6;15920:14;15913:57;15796:181;:::o;15983:366::-;16125:3;16146:67;16210:2;16205:3;16146:67;:::i;:::-;16139:74;;16222:93;16311:3;16222:93;:::i;:::-;16340:2;16335:3;16331:12;16324:19;;15983:366;;;:::o;16355:419::-;16521:4;16559:2;16548:9;16544:18;16536:26;;16608:9;16602:4;16598:20;16594:1;16583:9;16579:17;16572:47;16636:131;16762:4;16636:131;:::i;:::-;16628:139;;16355:419;;;:::o;16780:220::-;16920:34;16916:1;16908:6;16904:14;16897:58;16989:3;16984:2;16976:6;16972:15;16965:28;16780:220;:::o;17006:366::-;17148:3;17169:67;17233:2;17228:3;17169:67;:::i;:::-;17162:74;;17245:93;17334:3;17245:93;:::i;:::-;17363:2;17358:3;17354:12;17347:19;;17006:366;;;:::o;17378:419::-;17544:4;17582:2;17571:9;17567:18;17559:26;;17631:9;17625:4;17621:20;17617:1;17606:9;17602:17;17595:47;17659:131;17785:4;17659:131;:::i;:::-;17651:139;;17378:419;;;:::o;17803:221::-;17943:34;17939:1;17931:6;17927:14;17920:58;18012:4;18007:2;17999:6;17995:15;17988:29;17803:221;:::o;18030:366::-;18172:3;18193:67;18257:2;18252:3;18193:67;:::i;:::-;18186:74;;18269:93;18358:3;18269:93;:::i;:::-;18387:2;18382:3;18378:12;18371:19;;18030:366;;;:::o;18402:419::-;18568:4;18606:2;18595:9;18591:18;18583:26;;18655:9;18649:4;18645:20;18641:1;18630:9;18626:17;18619:47;18683:131;18809:4;18683:131;:::i;:::-;18675:139;;18402:419;;;:::o
Swarm Source
ipfs://a5c7429904a771650b0623ef3f23931f3d873d00b0826dbc6903137d0b6deec1
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.