My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
Latest 14 Deposits
[ Download CSV Export ]
Contract Name:
FriendtechSharesV1
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at basescan.org on 2023-08-10 */ // File: contracts/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: contracts/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: contracts/FriendtechShares.sol pragma solidity >=0.8.2 <0.9.0; // TODO: Events, final pricing model, contract FriendtechSharesV1 is Ownable { address public protocolFeeDestination; uint256 public protocolFeePercent; uint256 public subjectFeePercent; event Trade(address trader, address subject, bool isBuy, uint256 shareAmount, uint256 ethAmount, uint256 protocolEthAmount, uint256 subjectEthAmount, uint256 supply); // SharesSubject => (Holder => Balance) mapping(address => mapping(address => uint256)) public sharesBalance; // SharesSubject => Supply mapping(address => uint256) public sharesSupply; function setFeeDestination(address _feeDestination) public onlyOwner { protocolFeeDestination = _feeDestination; } function setProtocolFeePercent(uint256 _feePercent) public onlyOwner { protocolFeePercent = _feePercent; } function setSubjectFeePercent(uint256 _feePercent) public onlyOwner { subjectFeePercent = _feePercent; } function getPrice(uint256 supply, uint256 amount) public pure returns (uint256) { uint256 sum1 = supply == 0 ? 0 : (supply - 1 )* (supply) * (2 * (supply - 1) + 1) / 6; uint256 sum2 = supply == 0 && amount == 1 ? 0 : (supply - 1 + amount) * (supply + amount) * (2 * (supply - 1 + amount) + 1) / 6; uint256 summation = sum2 - sum1; return summation * 1 ether / 16000; } function getBuyPrice(address sharesSubject, uint256 amount) public view returns (uint256) { return getPrice(sharesSupply[sharesSubject], amount); } function getSellPrice(address sharesSubject, uint256 amount) public view returns (uint256) { return getPrice(sharesSupply[sharesSubject] - amount, amount); } function getBuyPriceAfterFee(address sharesSubject, uint256 amount) public view returns (uint256) { uint256 price = getBuyPrice(sharesSubject, amount); uint256 protocolFee = price * protocolFeePercent / 1 ether; uint256 subjectFee = price * subjectFeePercent / 1 ether; return price + protocolFee + subjectFee; } function getSellPriceAfterFee(address sharesSubject, uint256 amount) public view returns (uint256) { uint256 price = getSellPrice(sharesSubject, amount); uint256 protocolFee = price * protocolFeePercent / 1 ether; uint256 subjectFee = price * subjectFeePercent / 1 ether; return price - protocolFee - subjectFee; } function buyShares(address sharesSubject, uint256 amount) public payable { uint256 supply = sharesSupply[sharesSubject]; require(supply > 0 || sharesSubject == msg.sender, "Only the shares' subject can buy the first share"); uint256 price = getPrice(supply, amount); uint256 protocolFee = price * protocolFeePercent / 1 ether; uint256 subjectFee = price * subjectFeePercent / 1 ether; require(msg.value >= price + protocolFee + subjectFee, "Insufficient payment"); sharesBalance[sharesSubject][msg.sender] = sharesBalance[sharesSubject][msg.sender] + amount; sharesSupply[sharesSubject] = supply + amount; emit Trade(msg.sender, sharesSubject, true, amount, price, protocolFee, subjectFee, supply + amount); (bool success1, ) = protocolFeeDestination.call{value: protocolFee}(""); (bool success2, ) = sharesSubject.call{value: subjectFee}(""); require(success1 && success2, "Unable to send funds"); } function sellShares(address sharesSubject, uint256 amount) public payable { uint256 supply = sharesSupply[sharesSubject]; require(supply > amount, "Cannot sell the last share"); uint256 price = getPrice(supply - amount, amount); uint256 protocolFee = price * protocolFeePercent / 1 ether; uint256 subjectFee = price * subjectFeePercent / 1 ether; require(sharesBalance[sharesSubject][msg.sender] >= amount, "Insufficient shares"); sharesBalance[sharesSubject][msg.sender] = sharesBalance[sharesSubject][msg.sender] - amount; sharesSupply[sharesSubject] = supply - amount; emit Trade(msg.sender, sharesSubject, false, amount, price, protocolFee, subjectFee, supply - amount); (bool success1, ) = msg.sender.call{value: price - protocolFee - subjectFee}(""); (bool success2, ) = protocolFeeDestination.call{value: protocolFee}(""); (bool success3, ) = sharesSubject.call{value: subjectFee}(""); require(success1 && success2 && success3, "Unable to send funds"); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"trader","type":"address"},{"indexed":false,"internalType":"address","name":"subject","type":"address"},{"indexed":false,"internalType":"bool","name":"isBuy","type":"bool"},{"indexed":false,"internalType":"uint256","name":"shareAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"protocolEthAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"subjectEthAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"supply","type":"uint256"}],"name":"Trade","type":"event"},{"inputs":[{"internalType":"address","name":"sharesSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buyShares","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sharesSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getBuyPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sharesSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getBuyPriceAfterFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"supply","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"sharesSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getSellPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sharesSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getSellPriceAfterFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolFeeDestination","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sharesSubject","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sellShares","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeDestination","type":"address"}],"name":"setFeeDestination","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feePercent","type":"uint256"}],"name":"setProtocolFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feePercent","type":"uint256"}],"name":"setSubjectFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"sharesBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"sharesSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"subjectFeePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5061002d61002261003260201b60201c565b61003a60201b60201c565b6100fe565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611b508061010d6000396000f3fe6080604052600436106101095760003560e01c8063715018a611610095578063b51d053411610064578063b51d053414610382578063d6e6eb9f1461039e578063f2fde38b146103c9578063f9931be0146103f2578063fbe532341461042f57610109565b8063715018a6146102da5780638da5cb5b146102f15780639ae717811461031c578063a49834211461035957610109565b80634635256e116100dc5780634635256e146101f05780634ce7957c1461022d5780635a8a764e146102585780635cf4ee91146102815780636945b123146102be57610109565b8063020235ff1461010e5780630f026f6d1461014b5780632267a89c1461018857806324dc441d146101c5575b600080fd5b34801561011a57600080fd5b506101356004803603810190610130919061140d565b610458565b6040516101429190611466565b60405180910390f35b34801561015757600080fd5b50610172600480360381019061016d91906114ad565b61047d565b60405161017f9190611466565b60405180910390f35b34801561019457600080fd5b506101af60048036038101906101aa91906114ad565b6104f8565b6040516101bc9190611466565b60405180910390f35b3480156101d157600080fd5b506101da610573565b6040516101e79190611466565b60405180910390f35b3480156101fc57600080fd5b50610217600480360381019061021291906114ad565b610579565b6040516102249190611466565b60405180910390f35b34801561023957600080fd5b506102426105cc565b60405161024f91906114fc565b60405180910390f35b34801561026457600080fd5b5061027f600480360381019061027a9190611517565b6105f2565b005b34801561028d57600080fd5b506102a860048036038101906102a39190611544565b610604565b6040516102b59190611466565b60405180910390f35b6102d860048036038101906102d391906114ad565b61073a565b005b3480156102e657600080fd5b506102ef610b9d565b005b3480156102fd57600080fd5b50610306610bb1565b60405161031391906114fc565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e91906114ad565b610bda565b6040516103509190611466565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b9190611517565b610c38565b005b61039c600480360381019061039791906114ad565b610c4a565b005b3480156103aa57600080fd5b506103b3611173565b6040516103c09190611466565b60405180910390f35b3480156103d557600080fd5b506103f060048036038101906103eb9190611584565b611179565b005b3480156103fe57600080fd5b5061041960048036038101906104149190611584565b6111fc565b6040516104269190611466565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190611584565b611214565b005b6004602052816000526040600020602052806000526040600020600091509150505481565b60008061048a8484610579565b90506000670de0b6b3a7640000600254836104a591906115e0565b6104af9190611651565b90506000670de0b6b3a7640000600354846104ca91906115e0565b6104d49190611651565b90508082846104e39190611682565b6104ed9190611682565b935050505092915050565b6000806105058484610bda565b90506000670de0b6b3a76400006002548361052091906115e0565b61052a9190611651565b90506000670de0b6b3a76400006003548461054591906115e0565b61054f9190611651565b905080828461055e91906116b6565b61056891906116b6565b935050505092915050565b60035481565b60006105c4600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610604565b905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6105fa611260565b8060038190555050565b600080600084146106665760066001808661061f91906116b6565b600261062b91906115e0565b6106359190611682565b8560018761064391906116b6565b61064d91906115e0565b61065791906115e0565b6106619190611651565b610669565b60005b90506000808514801561067c5750600184145b6106f957600660018560018861069291906116b6565b61069c9190611682565b60026106a891906115e0565b6106b29190611682565b85876106be9190611682565b866001896106cc91906116b6565b6106d69190611682565b6106e091906115e0565b6106ea91906115e0565b6106f49190611651565b6106fc565b60005b90506000828261070c91906116b6565b9050613e80670de0b6b3a76400008261072591906115e0565b61072f9190611651565b935050505092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111806107b857503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b6107f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ee9061176d565b60405180910390fd5b60006108038284610604565b90506000670de0b6b3a76400006002548361081e91906115e0565b6108289190611651565b90506000670de0b6b3a76400006003548461084391906115e0565b61084d9190611651565b905080828461085c9190611682565b6108669190611682565b3410156108a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089f906117d9565b60405180910390fd5b84600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109309190611682565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084846109bc9190611682565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f2c76e7a47fd53e2854856ac3f0a5f3ee40d15cfaa82266357ea9779c486ab9c333876001888787878c8c610a349190611682565b604051610a48989796959493929190611814565b60405180910390a16000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051610a98906118c3565b60006040518083038185875af1925050503d8060008114610ad5576040519150601f19603f3d011682016040523d82523d6000602084013e610ada565b606091505b5050905060008773ffffffffffffffffffffffffffffffffffffffff1683604051610b04906118c3565b60006040518083038185875af1925050503d8060008114610b41576040519150601f19603f3d011682016040523d82523d6000602084013e610b46565b606091505b50509050818015610b545750805b610b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8a90611924565b60405180910390fd5b5050505050505050565b610ba5611260565b610baf60006112de565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610c3082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c2a91906116b6565b83610604565b905092915050565b610c40611260565b8060028190555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818111610cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc790611990565b60405180910390fd5b6000610ce78383610ce191906116b6565b84610604565b90506000670de0b6b3a764000060025483610d0291906115e0565b610d0c9190611651565b90506000670de0b6b3a764000060035484610d2791906115e0565b610d319190611651565b905084600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de9906119fc565b60405180910390fd5b84600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7a91906116b6565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508484610f0691906116b6565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f2c76e7a47fd53e2854856ac3f0a5f3ee40d15cfaa82266357ea9779c486ab9c333876000888787878c8c610f7e91906116b6565b604051610f92989796959493929190611814565b60405180910390a160003373ffffffffffffffffffffffffffffffffffffffff16828486610fc091906116b6565b610fca91906116b6565b604051610fd6906118c3565b60006040518083038185875af1925050503d8060008114611013576040519150601f19603f3d011682016040523d82523d6000602084013e611018565b606091505b505090506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051611064906118c3565b60006040518083038185875af1925050503d80600081146110a1576040519150601f19603f3d011682016040523d82523d6000602084013e6110a6565b606091505b5050905060008873ffffffffffffffffffffffffffffffffffffffff16846040516110d0906118c3565b60006040518083038185875af1925050503d806000811461110d576040519150601f19603f3d011682016040523d82523d6000602084013e611112565b606091505b505090508280156111205750815b80156111295750805b611168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115f90611924565b60405180910390fd5b505050505050505050565b60025481565b611181611260565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e790611a8e565b60405180910390fd5b6111f9816112de565b50565b60056020528060005260406000206000915090505481565b61121c611260565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6112686113a2565b73ffffffffffffffffffffffffffffffffffffffff16611286610bb1565b73ffffffffffffffffffffffffffffffffffffffff16146112dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d390611afa565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006113da826113af565b9050919050565b6113ea816113cf565b81146113f557600080fd5b50565b600081359050611407816113e1565b92915050565b60008060408385031215611424576114236113aa565b5b6000611432858286016113f8565b9250506020611443858286016113f8565b9150509250929050565b6000819050919050565b6114608161144d565b82525050565b600060208201905061147b6000830184611457565b92915050565b61148a8161144d565b811461149557600080fd5b50565b6000813590506114a781611481565b92915050565b600080604083850312156114c4576114c36113aa565b5b60006114d2858286016113f8565b92505060206114e385828601611498565b9150509250929050565b6114f6816113cf565b82525050565b600060208201905061151160008301846114ed565b92915050565b60006020828403121561152d5761152c6113aa565b5b600061153b84828501611498565b91505092915050565b6000806040838503121561155b5761155a6113aa565b5b600061156985828601611498565b925050602061157a85828601611498565b9150509250929050565b60006020828403121561159a576115996113aa565b5b60006115a8848285016113f8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115eb8261144d565b91506115f68361144d565b92508282026116048161144d565b9150828204841483151761161b5761161a6115b1565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061165c8261144d565b91506116678361144d565b92508261167757611676611622565b5b828204905092915050565b600061168d8261144d565b91506116988361144d565b92508282019050808211156116b0576116af6115b1565b5b92915050565b60006116c18261144d565b91506116cc8361144d565b92508282039050818111156116e4576116e36115b1565b5b92915050565b600082825260208201905092915050565b7f4f6e6c79207468652073686172657327207375626a6563742063616e2062757960008201527f2074686520666972737420736861726500000000000000000000000000000000602082015250565b60006117576030836116ea565b9150611762826116fb565b604082019050919050565b600060208201905081810360008301526117868161174a565b9050919050565b7f496e73756666696369656e74207061796d656e74000000000000000000000000600082015250565b60006117c36014836116ea565b91506117ce8261178d565b602082019050919050565b600060208201905081810360008301526117f2816117b6565b9050919050565b60008115159050919050565b61180e816117f9565b82525050565b60006101008201905061182a600083018b6114ed565b611837602083018a6114ed565b6118446040830189611805565b6118516060830188611457565b61185e6080830187611457565b61186b60a0830186611457565b61187860c0830185611457565b61188560e0830184611457565b9998505050505050505050565b600081905092915050565b50565b60006118ad600083611892565b91506118b88261189d565b600082019050919050565b60006118ce826118a0565b9150819050919050565b7f556e61626c6520746f2073656e642066756e6473000000000000000000000000600082015250565b600061190e6014836116ea565b9150611919826118d8565b602082019050919050565b6000602082019050818103600083015261193d81611901565b9050919050565b7f43616e6e6f742073656c6c20746865206c617374207368617265000000000000600082015250565b600061197a601a836116ea565b915061198582611944565b602082019050919050565b600060208201905081810360008301526119a98161196d565b9050919050565b7f496e73756666696369656e742073686172657300000000000000000000000000600082015250565b60006119e66013836116ea565b91506119f1826119b0565b602082019050919050565b60006020820190508181036000830152611a15816119d9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611a786026836116ea565b9150611a8382611a1c565b604082019050919050565b60006020820190508181036000830152611aa781611a6b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611ae46020836116ea565b9150611aef82611aae565b602082019050919050565b60006020820190508181036000830152611b1381611ad7565b905091905056fea2646970667358221220cebed752f67094eaf80084d89578d96bc6f4fdbc3356576a982a1a23262a11e864736f6c63430008120033
Deployed Bytecode
0x6080604052600436106101095760003560e01c8063715018a611610095578063b51d053411610064578063b51d053414610382578063d6e6eb9f1461039e578063f2fde38b146103c9578063f9931be0146103f2578063fbe532341461042f57610109565b8063715018a6146102da5780638da5cb5b146102f15780639ae717811461031c578063a49834211461035957610109565b80634635256e116100dc5780634635256e146101f05780634ce7957c1461022d5780635a8a764e146102585780635cf4ee91146102815780636945b123146102be57610109565b8063020235ff1461010e5780630f026f6d1461014b5780632267a89c1461018857806324dc441d146101c5575b600080fd5b34801561011a57600080fd5b506101356004803603810190610130919061140d565b610458565b6040516101429190611466565b60405180910390f35b34801561015757600080fd5b50610172600480360381019061016d91906114ad565b61047d565b60405161017f9190611466565b60405180910390f35b34801561019457600080fd5b506101af60048036038101906101aa91906114ad565b6104f8565b6040516101bc9190611466565b60405180910390f35b3480156101d157600080fd5b506101da610573565b6040516101e79190611466565b60405180910390f35b3480156101fc57600080fd5b50610217600480360381019061021291906114ad565b610579565b6040516102249190611466565b60405180910390f35b34801561023957600080fd5b506102426105cc565b60405161024f91906114fc565b60405180910390f35b34801561026457600080fd5b5061027f600480360381019061027a9190611517565b6105f2565b005b34801561028d57600080fd5b506102a860048036038101906102a39190611544565b610604565b6040516102b59190611466565b60405180910390f35b6102d860048036038101906102d391906114ad565b61073a565b005b3480156102e657600080fd5b506102ef610b9d565b005b3480156102fd57600080fd5b50610306610bb1565b60405161031391906114fc565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e91906114ad565b610bda565b6040516103509190611466565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b9190611517565b610c38565b005b61039c600480360381019061039791906114ad565b610c4a565b005b3480156103aa57600080fd5b506103b3611173565b6040516103c09190611466565b60405180910390f35b3480156103d557600080fd5b506103f060048036038101906103eb9190611584565b611179565b005b3480156103fe57600080fd5b5061041960048036038101906104149190611584565b6111fc565b6040516104269190611466565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190611584565b611214565b005b6004602052816000526040600020602052806000526040600020600091509150505481565b60008061048a8484610579565b90506000670de0b6b3a7640000600254836104a591906115e0565b6104af9190611651565b90506000670de0b6b3a7640000600354846104ca91906115e0565b6104d49190611651565b90508082846104e39190611682565b6104ed9190611682565b935050505092915050565b6000806105058484610bda565b90506000670de0b6b3a76400006002548361052091906115e0565b61052a9190611651565b90506000670de0b6b3a76400006003548461054591906115e0565b61054f9190611651565b905080828461055e91906116b6565b61056891906116b6565b935050505092915050565b60035481565b60006105c4600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610604565b905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6105fa611260565b8060038190555050565b600080600084146106665760066001808661061f91906116b6565b600261062b91906115e0565b6106359190611682565b8560018761064391906116b6565b61064d91906115e0565b61065791906115e0565b6106619190611651565b610669565b60005b90506000808514801561067c5750600184145b6106f957600660018560018861069291906116b6565b61069c9190611682565b60026106a891906115e0565b6106b29190611682565b85876106be9190611682565b866001896106cc91906116b6565b6106d69190611682565b6106e091906115e0565b6106ea91906115e0565b6106f49190611651565b6106fc565b60005b90506000828261070c91906116b6565b9050613e80670de0b6b3a76400008261072591906115e0565b61072f9190611651565b935050505092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111806107b857503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b6107f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ee9061176d565b60405180910390fd5b60006108038284610604565b90506000670de0b6b3a76400006002548361081e91906115e0565b6108289190611651565b90506000670de0b6b3a76400006003548461084391906115e0565b61084d9190611651565b905080828461085c9190611682565b6108669190611682565b3410156108a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089f906117d9565b60405180910390fd5b84600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109309190611682565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084846109bc9190611682565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f2c76e7a47fd53e2854856ac3f0a5f3ee40d15cfaa82266357ea9779c486ab9c333876001888787878c8c610a349190611682565b604051610a48989796959493929190611814565b60405180910390a16000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051610a98906118c3565b60006040518083038185875af1925050503d8060008114610ad5576040519150601f19603f3d011682016040523d82523d6000602084013e610ada565b606091505b5050905060008773ffffffffffffffffffffffffffffffffffffffff1683604051610b04906118c3565b60006040518083038185875af1925050503d8060008114610b41576040519150601f19603f3d011682016040523d82523d6000602084013e610b46565b606091505b50509050818015610b545750805b610b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8a90611924565b60405180910390fd5b5050505050505050565b610ba5611260565b610baf60006112de565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610c3082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c2a91906116b6565b83610604565b905092915050565b610c40611260565b8060028190555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818111610cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc790611990565b60405180910390fd5b6000610ce78383610ce191906116b6565b84610604565b90506000670de0b6b3a764000060025483610d0291906115e0565b610d0c9190611651565b90506000670de0b6b3a764000060035484610d2791906115e0565b610d319190611651565b905084600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de9906119fc565b60405180910390fd5b84600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7a91906116b6565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508484610f0691906116b6565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f2c76e7a47fd53e2854856ac3f0a5f3ee40d15cfaa82266357ea9779c486ab9c333876000888787878c8c610f7e91906116b6565b604051610f92989796959493929190611814565b60405180910390a160003373ffffffffffffffffffffffffffffffffffffffff16828486610fc091906116b6565b610fca91906116b6565b604051610fd6906118c3565b60006040518083038185875af1925050503d8060008114611013576040519150601f19603f3d011682016040523d82523d6000602084013e611018565b606091505b505090506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051611064906118c3565b60006040518083038185875af1925050503d80600081146110a1576040519150601f19603f3d011682016040523d82523d6000602084013e6110a6565b606091505b5050905060008873ffffffffffffffffffffffffffffffffffffffff16846040516110d0906118c3565b60006040518083038185875af1925050503d806000811461110d576040519150601f19603f3d011682016040523d82523d6000602084013e611112565b606091505b505090508280156111205750815b80156111295750805b611168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115f90611924565b60405180910390fd5b505050505050505050565b60025481565b611181611260565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e790611a8e565b60405180910390fd5b6111f9816112de565b50565b60056020528060005260406000206000915090505481565b61121c611260565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6112686113a2565b73ffffffffffffffffffffffffffffffffffffffff16611286610bb1565b73ffffffffffffffffffffffffffffffffffffffff16146112dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d390611afa565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006113da826113af565b9050919050565b6113ea816113cf565b81146113f557600080fd5b50565b600081359050611407816113e1565b92915050565b60008060408385031215611424576114236113aa565b5b6000611432858286016113f8565b9250506020611443858286016113f8565b9150509250929050565b6000819050919050565b6114608161144d565b82525050565b600060208201905061147b6000830184611457565b92915050565b61148a8161144d565b811461149557600080fd5b50565b6000813590506114a781611481565b92915050565b600080604083850312156114c4576114c36113aa565b5b60006114d2858286016113f8565b92505060206114e385828601611498565b9150509250929050565b6114f6816113cf565b82525050565b600060208201905061151160008301846114ed565b92915050565b60006020828403121561152d5761152c6113aa565b5b600061153b84828501611498565b91505092915050565b6000806040838503121561155b5761155a6113aa565b5b600061156985828601611498565b925050602061157a85828601611498565b9150509250929050565b60006020828403121561159a576115996113aa565b5b60006115a8848285016113f8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115eb8261144d565b91506115f68361144d565b92508282026116048161144d565b9150828204841483151761161b5761161a6115b1565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061165c8261144d565b91506116678361144d565b92508261167757611676611622565b5b828204905092915050565b600061168d8261144d565b91506116988361144d565b92508282019050808211156116b0576116af6115b1565b5b92915050565b60006116c18261144d565b91506116cc8361144d565b92508282039050818111156116e4576116e36115b1565b5b92915050565b600082825260208201905092915050565b7f4f6e6c79207468652073686172657327207375626a6563742063616e2062757960008201527f2074686520666972737420736861726500000000000000000000000000000000602082015250565b60006117576030836116ea565b9150611762826116fb565b604082019050919050565b600060208201905081810360008301526117868161174a565b9050919050565b7f496e73756666696369656e74207061796d656e74000000000000000000000000600082015250565b60006117c36014836116ea565b91506117ce8261178d565b602082019050919050565b600060208201905081810360008301526117f2816117b6565b9050919050565b60008115159050919050565b61180e816117f9565b82525050565b60006101008201905061182a600083018b6114ed565b611837602083018a6114ed565b6118446040830189611805565b6118516060830188611457565b61185e6080830187611457565b61186b60a0830186611457565b61187860c0830185611457565b61188560e0830184611457565b9998505050505050505050565b600081905092915050565b50565b60006118ad600083611892565b91506118b88261189d565b600082019050919050565b60006118ce826118a0565b9150819050919050565b7f556e61626c6520746f2073656e642066756e6473000000000000000000000000600082015250565b600061190e6014836116ea565b9150611919826118d8565b602082019050919050565b6000602082019050818103600083015261193d81611901565b9050919050565b7f43616e6e6f742073656c6c20746865206c617374207368617265000000000000600082015250565b600061197a601a836116ea565b915061198582611944565b602082019050919050565b600060208201905081810360008301526119a98161196d565b9050919050565b7f496e73756666696369656e742073686172657300000000000000000000000000600082015250565b60006119e66013836116ea565b91506119f1826119b0565b602082019050919050565b60006020820190508181036000830152611a15816119d9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611a786026836116ea565b9150611a8382611a1c565b604082019050919050565b60006020820190508181036000830152611aa781611a6b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611ae46020836116ea565b9150611aef82611aae565b602082019050919050565b60006020820190508181036000830152611b1381611ad7565b905091905056fea2646970667358221220cebed752f67094eaf80084d89578d96bc6f4fdbc3356576a982a1a23262a11e864736f6c63430008120033
Deployed ByteCode Sourcemap
3678:4541:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4068:68;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5388:353;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5749:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3808:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5040:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3724:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4497:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4623:409;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6112:1013;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2735:103;;;;;;;;;;;;;:::i;:::-;;2087:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5209:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4369:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7133:1083;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3768:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2993:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4177:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4233:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4068:68;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5388:353::-;5477:7;5497:13;5513:34;5525:13;5540:6;5513:11;:34::i;:::-;5497:50;;5558:19;5609:7;5588:18;;5580:5;:26;;;;:::i;:::-;:36;;;;:::i;:::-;5558:58;;5627:18;5676:7;5656:17;;5648:5;:25;;;;:::i;:::-;:35;;;;:::i;:::-;5627:56;;5723:10;5709:11;5701:5;:19;;;;:::i;:::-;:32;;;;:::i;:::-;5694:39;;;;;5388:353;;;;:::o;5749:355::-;5839:7;5859:13;5875:35;5888:13;5903:6;5875:12;:35::i;:::-;5859:51;;5921:19;5972:7;5951:18;;5943:5;:26;;;;:::i;:::-;:36;;;;:::i;:::-;5921:58;;5990:18;6039:7;6019:17;;6011:5;:25;;;;:::i;:::-;:35;;;;:::i;:::-;5990:56;;6086:10;6072:11;6064:5;:19;;;;:::i;:::-;:32;;;;:::i;:::-;6057:39;;;;;5749:355;;;;:::o;3808:32::-;;;;:::o;5040:161::-;5121:7;5148:45;5157:12;:27;5170:13;5157:27;;;;;;;;;;;;;;;;5186:6;5148:8;:45::i;:::-;5141:52;;5040:161;;;;:::o;3724:37::-;;;;;;;;;;;;;:::o;4497:118::-;1973:13;:11;:13::i;:::-;4596:11:::1;4576:17;:31;;;;4497:118:::0;:::o;4623:409::-;4694:7;4714:12;4739:1;4729:6;:11;:70;;4798:1;4793;4788;4779:6;:10;;;;:::i;:::-;4774:1;:16;;;;:::i;:::-;:20;;;;:::i;:::-;4763:6;4757:1;4748:6;:10;;;;:::i;:::-;4747:23;;;;:::i;:::-;:48;;;;:::i;:::-;:52;;;;:::i;:::-;4729:70;;;4743:1;4729:70;4714:85;;4810:12;4835:1;4825:6;:11;:26;;;;;4850:1;4840:6;:11;4825:26;:112;;4936:1;4931;4921:6;4917:1;4908:6;:10;;;;:::i;:::-;:19;;;;:::i;:::-;4903:1;:25;;;;:::i;:::-;:29;;;;:::i;:::-;4892:6;4883;:15;;;;:::i;:::-;4872:6;4868:1;4859:6;:10;;;;:::i;:::-;:19;;;;:::i;:::-;4858:41;;;;:::i;:::-;:75;;;;:::i;:::-;:79;;;;:::i;:::-;4825:112;;;4854:1;4825:112;4810:127;;4948:17;4975:4;4968;:11;;;;:::i;:::-;4948:31;;5019:5;5009:7;4997:9;:19;;;;:::i;:::-;:27;;;;:::i;:::-;4990:34;;;;;4623:409;;;;:::o;6112:1013::-;6196:14;6213:12;:27;6226:13;6213:27;;;;;;;;;;;;;;;;6196:44;;6268:1;6259:6;:10;:41;;;;6290:10;6273:27;;:13;:27;;;6259:41;6251:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;6364:13;6380:24;6389:6;6397;6380:8;:24::i;:::-;6364:40;;6415:19;6466:7;6445:18;;6437:5;:26;;;;:::i;:::-;:36;;;;:::i;:::-;6415:58;;6484:18;6533:7;6513:17;;6505:5;:25;;;;:::i;:::-;:35;;;;:::i;:::-;6484:56;;6594:10;6580:11;6572:5;:19;;;;:::i;:::-;:32;;;;:::i;:::-;6559:9;:45;;6551:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;6726:6;6683:13;:28;6697:13;6683:28;;;;;;;;;;;;;;;:40;6712:10;6683:40;;;;;;;;;;;;;;;;:49;;;;:::i;:::-;6640:13;:28;6654:13;6640:28;;;;;;;;;;;;;;;:40;6669:10;6640:40;;;;;;;;;;;;;;;:92;;;;6782:6;6773;:15;;;;:::i;:::-;6743:12;:27;6756:13;6743:27;;;;;;;;;;;;;;;:45;;;;6804:95;6810:10;6822:13;6837:4;6843:6;6851:5;6858:11;6871:10;6892:6;6883;:15;;;;:::i;:::-;6804:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;6911:13;6930:22;;;;;;;;;;;:27;;6965:11;6930:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6910:71;;;6993:13;7012;:18;;7038:10;7012:41;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6992:61;;;7072:8;:20;;;;;7084:8;7072:20;7064:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;6185:940;;;;;;6112:1013;;:::o;2735:103::-;1973:13;:11;:13::i;:::-;2800:30:::1;2827:1;2800:18;:30::i;:::-;2735:103::o:0;2087:87::-;2133:7;2160:6;;;;;;;;;;;2153:13;;2087:87;:::o;5209:171::-;5291:7;5318:54;5357:6;5327:12;:27;5340:13;5327:27;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;5365:6;5318:8;:54::i;:::-;5311:61;;5209:171;;;;:::o;4369:120::-;1973:13;:11;:13::i;:::-;4470:11:::1;4449:18;:32;;;;4369:120:::0;:::o;7133:1083::-;7218:14;7235:12;:27;7248:13;7235:27;;;;;;;;;;;;;;;;7218:44;;7290:6;7281;:15;7273:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;7338:13;7354:33;7372:6;7363;:15;;;;:::i;:::-;7380:6;7354:8;:33::i;:::-;7338:49;;7398:19;7449:7;7428:18;;7420:5;:26;;;;:::i;:::-;:36;;;;:::i;:::-;7398:58;;7467:18;7516:7;7496:17;;7488:5;:25;;;;:::i;:::-;:35;;;;:::i;:::-;7467:56;;7586:6;7542:13;:28;7556:13;7542:28;;;;;;;;;;;;;;;:40;7571:10;7542:40;;;;;;;;;;;;;;;;:50;;7534:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;7713:6;7670:13;:28;7684:13;7670:28;;;;;;;;;;;;;;;:40;7699:10;7670:40;;;;;;;;;;;;;;;;:49;;;;:::i;:::-;7627:13;:28;7641:13;7627:28;;;;;;;;;;;;;;;:40;7656:10;7627:40;;;;;;;;;;;;;;;:92;;;;7769:6;7760;:15;;;;:::i;:::-;7730:12;:27;7743:13;7730:27;;;;;;;;;;;;;;;:45;;;;7791:96;7797:10;7809:13;7824:5;7831:6;7839:5;7846:11;7859:10;7880:6;7871;:15;;;;:::i;:::-;7791:96;;;;;;;;;;;;;:::i;:::-;;;;;;;;7899:13;7918:10;:15;;7963:10;7949:11;7941:5;:19;;;;:::i;:::-;:32;;;;:::i;:::-;7918:60;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7898:80;;;7990:13;8009:22;;;;;;;;;;;:27;;8044:11;8009:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7989:71;;;8072:13;8091;:18;;8117:10;8091:41;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8071:61;;;8151:8;:20;;;;;8163:8;8151:20;:32;;;;;8175:8;8151:32;8143:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;7207:1009;;;;;;;7133:1083;;:::o;3768:33::-;;;;:::o;2993:201::-;1973:13;:11;:13::i;:::-;3102:1:::1;3082:22;;:8;:22;;::::0;3074:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3158:28;3177:8;3158:18;:28::i;:::-;2993:201:::0;:::o;4177:47::-;;;;;;;;;;;;;;;;;:::o;4233:128::-;1973:13;:11;:13::i;:::-;4338:15:::1;4313:22;;:40;;;;;;;;;;;;;;;;;;4233:128:::0;:::o;2252:132::-;2327:12;:10;:12::i;:::-;2316:23;;:7;:5;:7::i;:::-;:23;;;2308:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2252:132::o;3354:191::-;3428:16;3447:6;;;;;;;;;;;3428:25;;3473:8;3464:6;;:17;;;;;;;;;;;;;;;;;;3528:8;3497:40;;3518:8;3497:40;;;;;;;;;;;;3417:128;3354:191;:::o;659:98::-;712:7;739:10;732:17;;659:98;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:474::-;909:6;917;966:2;954:9;945:7;941:23;937:32;934:119;;;972:79;;:::i;:::-;934:119;1092:1;1117:53;1162:7;1153:6;1142:9;1138:22;1117:53;:::i;:::-;1107:63;;1063:117;1219:2;1245:53;1290:7;1281:6;1270:9;1266:22;1245:53;:::i;:::-;1235:63;;1190:118;841:474;;;;;:::o;1321:77::-;1358:7;1387:5;1376:16;;1321:77;;;:::o;1404:118::-;1491:24;1509:5;1491:24;:::i;:::-;1486:3;1479:37;1404:118;;:::o;1528:222::-;1621:4;1659:2;1648:9;1644:18;1636:26;;1672:71;1740:1;1729:9;1725:17;1716:6;1672:71;:::i;:::-;1528:222;;;;:::o;1756:122::-;1829:24;1847:5;1829:24;:::i;:::-;1822:5;1819:35;1809:63;;1868:1;1865;1858:12;1809:63;1756:122;:::o;1884:139::-;1930:5;1968:6;1955:20;1946:29;;1984:33;2011:5;1984:33;:::i;:::-;1884:139;;;;:::o;2029:474::-;2097:6;2105;2154:2;2142:9;2133:7;2129:23;2125:32;2122:119;;;2160:79;;:::i;:::-;2122:119;2280:1;2305:53;2350:7;2341:6;2330:9;2326:22;2305:53;:::i;:::-;2295:63;;2251:117;2407:2;2433:53;2478:7;2469:6;2458:9;2454:22;2433:53;:::i;:::-;2423:63;;2378:118;2029:474;;;;;:::o;2509:118::-;2596:24;2614:5;2596:24;:::i;:::-;2591:3;2584:37;2509:118;;:::o;2633:222::-;2726:4;2764:2;2753:9;2749:18;2741:26;;2777:71;2845:1;2834:9;2830:17;2821:6;2777:71;:::i;:::-;2633:222;;;;:::o;2861:329::-;2920:6;2969:2;2957:9;2948:7;2944:23;2940:32;2937:119;;;2975:79;;:::i;:::-;2937:119;3095:1;3120:53;3165:7;3156:6;3145:9;3141:22;3120:53;:::i;:::-;3110:63;;3066:117;2861:329;;;;:::o;3196:474::-;3264:6;3272;3321:2;3309:9;3300:7;3296:23;3292:32;3289:119;;;3327:79;;:::i;:::-;3289:119;3447:1;3472:53;3517:7;3508:6;3497:9;3493:22;3472:53;:::i;:::-;3462:63;;3418:117;3574:2;3600:53;3645:7;3636:6;3625:9;3621:22;3600:53;:::i;:::-;3590:63;;3545:118;3196:474;;;;;:::o;3676:329::-;3735:6;3784:2;3772:9;3763:7;3759:23;3755:32;3752:119;;;3790:79;;:::i;:::-;3752:119;3910:1;3935:53;3980:7;3971:6;3960:9;3956:22;3935:53;:::i;:::-;3925:63;;3881:117;3676:329;;;;:::o;4011:180::-;4059:77;4056:1;4049:88;4156:4;4153:1;4146:15;4180:4;4177:1;4170:15;4197:410;4237:7;4260:20;4278:1;4260:20;:::i;:::-;4255:25;;4294:20;4312:1;4294:20;:::i;:::-;4289:25;;4349:1;4346;4342:9;4371:30;4389:11;4371:30;:::i;:::-;4360:41;;4550:1;4541:7;4537:15;4534:1;4531:22;4511:1;4504:9;4484:83;4461:139;;4580:18;;:::i;:::-;4461:139;4245:362;4197:410;;;;:::o;4613:180::-;4661:77;4658:1;4651:88;4758:4;4755:1;4748:15;4782:4;4779:1;4772:15;4799:185;4839:1;4856:20;4874:1;4856:20;:::i;:::-;4851:25;;4890:20;4908:1;4890:20;:::i;:::-;4885:25;;4929:1;4919:35;;4934:18;;:::i;:::-;4919:35;4976:1;4973;4969:9;4964:14;;4799:185;;;;:::o;4990:191::-;5030:3;5049:20;5067:1;5049:20;:::i;:::-;5044:25;;5083:20;5101:1;5083:20;:::i;:::-;5078:25;;5126:1;5123;5119:9;5112:16;;5147:3;5144:1;5141:10;5138:36;;;5154:18;;:::i;:::-;5138:36;4990:191;;;;:::o;5187:194::-;5227:4;5247:20;5265:1;5247:20;:::i;:::-;5242:25;;5281:20;5299:1;5281:20;:::i;:::-;5276:25;;5325:1;5322;5318:9;5310:17;;5349:1;5343:4;5340:11;5337:37;;;5354:18;;:::i;:::-;5337:37;5187:194;;;;:::o;5387:169::-;5471:11;5505:6;5500:3;5493:19;5545:4;5540:3;5536:14;5521:29;;5387:169;;;;:::o;5562:235::-;5702:34;5698:1;5690:6;5686:14;5679:58;5771:18;5766:2;5758:6;5754:15;5747:43;5562:235;:::o;5803:366::-;5945:3;5966:67;6030:2;6025:3;5966:67;:::i;:::-;5959:74;;6042:93;6131:3;6042:93;:::i;:::-;6160:2;6155:3;6151:12;6144:19;;5803:366;;;:::o;6175:419::-;6341:4;6379:2;6368:9;6364:18;6356:26;;6428:9;6422:4;6418:20;6414:1;6403:9;6399:17;6392:47;6456:131;6582:4;6456:131;:::i;:::-;6448:139;;6175:419;;;:::o;6600:170::-;6740:22;6736:1;6728:6;6724:14;6717:46;6600:170;:::o;6776:366::-;6918:3;6939:67;7003:2;6998:3;6939:67;:::i;:::-;6932:74;;7015:93;7104:3;7015:93;:::i;:::-;7133:2;7128:3;7124:12;7117:19;;6776:366;;;:::o;7148:419::-;7314:4;7352:2;7341:9;7337:18;7329:26;;7401:9;7395:4;7391:20;7387:1;7376:9;7372:17;7365:47;7429:131;7555:4;7429:131;:::i;:::-;7421:139;;7148:419;;;:::o;7573:90::-;7607:7;7650:5;7643:13;7636:21;7625:32;;7573:90;;;:::o;7669:109::-;7750:21;7765:5;7750:21;:::i;:::-;7745:3;7738:34;7669:109;;:::o;7784:985::-;8067:4;8105:3;8094:9;8090:19;8082:27;;8119:71;8187:1;8176:9;8172:17;8163:6;8119:71;:::i;:::-;8200:72;8268:2;8257:9;8253:18;8244:6;8200:72;:::i;:::-;8282:66;8344:2;8333:9;8329:18;8320:6;8282:66;:::i;:::-;8358:72;8426:2;8415:9;8411:18;8402:6;8358:72;:::i;:::-;8440:73;8508:3;8497:9;8493:19;8484:6;8440:73;:::i;:::-;8523;8591:3;8580:9;8576:19;8567:6;8523:73;:::i;:::-;8606;8674:3;8663:9;8659:19;8650:6;8606:73;:::i;:::-;8689;8757:3;8746:9;8742:19;8733:6;8689:73;:::i;:::-;7784:985;;;;;;;;;;;:::o;8775:147::-;8876:11;8913:3;8898:18;;8775:147;;;;:::o;8928:114::-;;:::o;9048:398::-;9207:3;9228:83;9309:1;9304:3;9228:83;:::i;:::-;9221:90;;9320:93;9409:3;9320:93;:::i;:::-;9438:1;9433:3;9429:11;9422:18;;9048:398;;;:::o;9452:379::-;9636:3;9658:147;9801:3;9658:147;:::i;:::-;9651:154;;9822:3;9815:10;;9452:379;;;:::o;9837:170::-;9977:22;9973:1;9965:6;9961:14;9954:46;9837:170;:::o;10013:366::-;10155:3;10176:67;10240:2;10235:3;10176:67;:::i;:::-;10169:74;;10252:93;10341:3;10252:93;:::i;:::-;10370:2;10365:3;10361:12;10354:19;;10013:366;;;:::o;10385:419::-;10551:4;10589:2;10578:9;10574:18;10566:26;;10638:9;10632:4;10628:20;10624:1;10613:9;10609:17;10602:47;10666:131;10792:4;10666:131;:::i;:::-;10658:139;;10385:419;;;:::o;10810:176::-;10950:28;10946:1;10938:6;10934:14;10927:52;10810:176;:::o;10992:366::-;11134:3;11155:67;11219:2;11214:3;11155:67;:::i;:::-;11148:74;;11231:93;11320:3;11231:93;:::i;:::-;11349:2;11344:3;11340:12;11333:19;;10992:366;;;:::o;11364:419::-;11530:4;11568:2;11557:9;11553:18;11545:26;;11617:9;11611:4;11607:20;11603:1;11592:9;11588:17;11581:47;11645:131;11771:4;11645:131;:::i;:::-;11637:139;;11364:419;;;:::o;11789:169::-;11929:21;11925:1;11917:6;11913:14;11906:45;11789:169;:::o;11964:366::-;12106:3;12127:67;12191:2;12186:3;12127:67;:::i;:::-;12120:74;;12203:93;12292:3;12203:93;:::i;:::-;12321:2;12316:3;12312:12;12305:19;;11964:366;;;:::o;12336:419::-;12502:4;12540:2;12529:9;12525:18;12517:26;;12589:9;12583:4;12579:20;12575:1;12564:9;12560:17;12553:47;12617:131;12743:4;12617:131;:::i;:::-;12609:139;;12336:419;;;:::o;12761:225::-;12901:34;12897:1;12889:6;12885:14;12878:58;12970:8;12965:2;12957:6;12953:15;12946:33;12761:225;:::o;12992:366::-;13134:3;13155:67;13219:2;13214:3;13155:67;:::i;:::-;13148:74;;13231:93;13320:3;13231:93;:::i;:::-;13349:2;13344:3;13340:12;13333:19;;12992:366;;;:::o;13364:419::-;13530:4;13568:2;13557:9;13553:18;13545:26;;13617:9;13611:4;13607:20;13603:1;13592:9;13588:17;13581:47;13645:131;13771:4;13645:131;:::i;:::-;13637:139;;13364:419;;;:::o;13789:182::-;13929:34;13925:1;13917:6;13913:14;13906:58;13789:182;:::o;13977:366::-;14119:3;14140:67;14204:2;14199:3;14140:67;:::i;:::-;14133:74;;14216:93;14305:3;14216:93;:::i;:::-;14334:2;14329:3;14325:12;14318:19;;13977:366;;;:::o;14349:419::-;14515:4;14553:2;14542:9;14538:18;14530:26;;14602:9;14596:4;14592:20;14588:1;14577:9;14573:17;14566:47;14630:131;14756:4;14630:131;:::i;:::-;14622:139;;14349:419;;;:::o
Swarm Source
ipfs://cebed752f67094eaf80084d89578d96bc6f4fdbc3356576a982a1a23262a11e8
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.