@gooddollar/goodcontracts
Version:
GoodDollar Contracts
500 lines • 1.07 MB
JSON
{
"contractName": "InvitesV1",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "inviter",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "invitee",
"type": "address"
}
],
"name": "InviteeJoined",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "inviter",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "invitee",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "bountyPaid",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "inviterLevel",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bool",
"name": "earnedLevel",
"type": "bool"
}
],
"name": "InviterBounty",
"type": "event"
},
{
"inputs": [],
"name": "active",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "avatar",
"outputs": [
{
"internalType": "address payable",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "codeToUser",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "goodDollar",
"outputs": [
{
"internalType": "contract cERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "identity",
"outputs": [
{
"internalType": "contract IIdentity",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "levelExpirationEnabled",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "levels",
"outputs": [
{
"internalType": "uint256",
"name": "toNext",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "bounty",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "daysToComplete",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "stats",
"outputs": [
{
"internalType": "uint256",
"name": "totalApprovedInvites",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalBountiesPaid",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalInvited",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "users",
"outputs": [
{
"internalType": "address",
"name": "invitedBy",
"type": "address"
},
{
"internalType": "bytes32",
"name": "inviteCode",
"type": "bytes32"
},
{
"internalType": "bool",
"name": "bountyPaid",
"type": "bool"
},
{
"internalType": "uint256",
"name": "level",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "levelStarted",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalApprovedInvites",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalEarned",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "joinedAt",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address payable",
"name": "_avatar",
"type": "address"
},
{
"internalType": "address",
"name": "_identity",
"type": "address"
},
{
"internalType": "address",
"name": "_gd",
"type": "address"
},
{
"internalType": "uint256",
"name": "level0Bounty",
"type": "uint256"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "_isEnabled",
"type": "bool"
}
],
"name": "setLevelExpirationEnabled",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_myCode",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_inviterCode",
"type": "bytes32"
}
],
"name": "join",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_invitee",
"type": "address"
}
],
"name": "canCollectBountyFor",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "_inviter",
"type": "address"
}
],
"name": "getInvitees",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "_inviter",
"type": "address"
}
],
"name": "getPendingInvitees",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "_inviter",
"type": "address"
}
],
"name": "getPendingBounties",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "_invitee",
"type": "address"
}
],
"name": "bountyFor",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "collectBounties",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_lvl",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_toNext",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_bounty",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_daysToComplete",
"type": "uint256"
}
],
"name": "setLevel",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "_active",
"type": "bool"
}
],
"name": "setActive",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "end",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "version",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "pure",
"type": "function",
"constant": true
}
],
"metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"inviter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"invitee\",\"type\":\"address\"}],\"name\":\"InviteeJoined\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"inviter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"invitee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bountyPaid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inviterLevel\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"earnedLevel\",\"type\":\"bool\"}],\"name\":\"InviterBounty\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"active\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"avatar\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_invitee\",\"type\":\"address\"}],\"name\":\"bountyFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_invitee\",\"type\":\"address\"}],\"name\":\"canCollectBountyFor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"codeToUser\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectBounties\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"end\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_inviter\",\"type\":\"address\"}],\"name\":\"getInvitees\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_inviter\",\"type\":\"address\"}],\"name\":\"getPendingBounties\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_inviter\",\"type\":\"address\"}],\"name\":\"getPendingInvitees\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"goodDollar\",\"outputs\":[{\"internalType\":\"contract cERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"identity\",\"outputs\":[{\"internalType\":\"contract IIdentity\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_avatar\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_identity\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_gd\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"level0Bounty\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_myCode\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_inviterCode\",\"type\":\"bytes32\"}],\"name\":\"join\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"levelExpirationEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"levels\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"toNext\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bounty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"daysToComplete\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_active\",\"type\":\"bool\"}],\"name\":\"setActive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_lvl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_toNext\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bounty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_daysToComplete\",\"type\":\"uint256\"}],\"name\":\"setLevel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isEnabled\",\"type\":\"bool\"}],\"name\":\"setLevelExpirationEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stats\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalApprovedInvites\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalBountiesPaid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalInvited\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"users\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"invitedBy\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"inviteCode\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"bountyPaid\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"levelStarted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalApprovedInvites\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalEarned\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"joinedAt\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"bountyFor(address)\":{\"details\":\"pay bounty for the inviter of _invitee invitee need to be whitelisted\"},\"collectBounties()\":{\"details\":\"collect bounties for invitees by msg.sender that are now whitelisted\"},\"version()\":{\"details\":\"1.2.0 - final changes before release\"}},\"title\":\"InvitesV1 contract that handles invites with pre allocated bounty pool 1.1 adds invitee bonus\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/invite/InvitesV1.sol\":\"InvitesV1\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/Interfaces.sol\":{\"keccak256\":\"0xe501727b0e5e15fe639129ab4b1abc59a14ebd3ddd05bb7056ac4fc26a8f3ee7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90d8797740cfd3933ae849f3144e30f9133a55b26634b3efefa8206cd91f62d8\",\"dweb:/ipfs/QmYLeetoyiPej9acnGzjLLwgVnEg4d2Eg1Xb4k3A1mJqj6\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/invite/InvitesV1.sol\":{\"keccak256\":\"0xfa188cd1a93abd6aa3d4f08bd67bbfcc437abf90be8af5993398e564e7482f2d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e78dc63e85533c0a83f27d06e36d3ccda09851e093e09171b69352cce00f488\",\"dweb:/ipfs/QmbX7PvYrrvv3ADbZ8kxTH8hZ8XySBeABfcWky6gBXtMP8\"]},\"@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol\":{\"keccak256\":\"0xe9ecc18d06bcc5aa48c40a98333540248b6c1c18ecb6262329c06d3f0cbb45ae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a81bcbe4f867a4eaf7ec375508a9901ea7517b9854c9a542c242050beda5127\",\"dweb:/ipfs/QmS499VRDhAgMg1pK96PiyRpP3gJZzzMcoNBbe8AV3JNw3\"]},\"@openzeppelin/contracts-upgradeable/proxy/Initializable.sol\":{\"keccak256\":\"0xae7044b7c89ed74327b0979ae6f317c65d87b8d17a42d0c62d698d77d5de5511\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d676c978d8ecee5c4510f045b747d94f3a1381e39feb870d2675d5b6d45a371b\",\"dweb:/ipfs/QmUAokuHWPVAf14QkhPtSdYFyNa8HVje9CBEzwCcxH3xkP\"]}},\"version\":1}",
"bytecode": "0x608060405234801561001057600080fd5b50611bc9806100206000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063a87430ba116100c3578063ba6f56801161007c578063ba6f56801461029f578063cf756fdf146102b2578063d80528ae146102c5578063e951a3aa146102cd578063e9881a5e146102ed578063efbe1c1c146103005761014d565b8063a87430ba14610215578063acec338a1461023c578063af6346b01461024f578063b2596a6714610257578063b6567cd514610279578063b9fb2d181461028c5761014d565b806354fd4d501161011557806354fd4d50146101c25780635aef7de6146101d75780635b419a65146101df5780636d619ef8146101f25780638da5cb5b14610205578063a1df6fd31461020d5761014d565b806302fb0c5e14610152578063119e5bf31461017057806321132aad146101855780632c159a1a1461019a57806341155d5e146101a2575b600080fd5b61015a610308565b60405161016791906119a5565b60405180910390f35b610178610318565b60405161016791906118ea565b610198610193366004611830565b610327565b005b610178610382565b6101b56101b03660046117c4565b610391565b6040516101679190611b36565b6101ca610448565b60405161016791906119b0565b610178610467565b6101986101ed366004611880565b610476565b61015a6102003660046117c4565b6105ec565b610178610b10565b61015a610b1f565b6102286102233660046117c4565b610b28565b604051610167989796959493929190611917565b61019861024a366004611830565b610b7b565b610198610bd8565b61026a610265366004611868565b610d61565b60405161016793929190611b57565b6101986102873660046117c4565b610d82565b61019861029a3660046118b9565b6110a0565b6101786102ad366004611868565b6110ff565b6101986102c03660046117e0565b61111a565b61026a61122d565b6102e06102db3660046117c4565b611239565b6040516101679190611958565b6102e06102fb3660046117c4565b6113fd565b610198611476565b600754600160a01b900460ff1681565b6007546001600160a01b031681565b6005546001600160a01b031633148061034a57506003546001600160a01b031633145b61036f5760405162461bcd60e51b815260040161036690611a7e565b60405180910390fd5b6010805460ff1916911515919091179055565b6006546001600160a01b031681565b6001600160a01b038116600090815260026020908152604080832060040180548251818502810185019093528083526060938301828280156103fc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116103de575b505050505090506000805b82518110156104405761042c83828151811061041f57fe5b60200260200101516105ec565b15610438576001909101905b600101610407565b509392505050565b6040805180820190915260058152640312e322e360dc1b602082015290565b6003546001600160a01b031681565b600754600160a01b900460ff1661048c57600080fd5b3360009081526002602052604090206001810154156104bd5760405162461bcd60e51b815260040161036690611a51565b6000838152600160205260409020546001600160a01b0316156104f25760405162461bcd60e51b815260040161036690611aca565b6000828152600160208190526040808320549184018690554260068501819055600985015585835290912080546001600160a01b031916331790556001600160a01b031680156105b05781546001600160a01b0382166001600160a01b031991821681178455600090815260026020908152604082206003810180546001818101835591855283852001805486163390811790915560049092018054808301825590855292909320909101805490931617909155600a805490910190555b60405133906001600160a01b038316907fd8c638d8979e2ba5dba1f0d66246ee4b1c54b838f0e0a2b601365345eb23b05190600090a350505050565b60006105f6611715565b6001600160a01b03808416600090815260026020818152604092839020835161016081018552815490951685526001810154858301529182015460ff1615158484015260038201805484518184028101840190955280855292936060860193909283018282801561069057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610672575b50505050508152602001600482018054806020026020016040519081016040528092919081815260200182805480156106f257602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116106d4575b505050505081526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201600580602002604051908101604052809291908260058015610769576020028201915b815481526020019060010190808311610755575b505050505081525050905061077c611715565b81516001600160a01b03908116600090815260026020818152604092839020835161016081018552815490951685526001810154858301529182015460ff1615158484015260038201805484518184028101840190955280855292936060860193909283018282801561081857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116107fa575b505050505081526020016004820180548060200260200160405190810160405280929190818152602001828054801561087a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161085c575b505050505081526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a82016005806020026040519081016040528092919082600580156108f1576020028201915b8154815260200190600101908083116108dd575b5050505050815250509050610904611782565b60a08083015160009081526004602090815260409182902082516080810184528154815260018201549281019290925260028101548284015282519384019092529160608301906003830160058282826020028201915b81548152602001906001019080831161095b5750505091909252505060105491925060009160ff1615156001149050801561099a575060008260400151115b80156109d157506109ca620151806109c48560c0015187610120015161162190919063ffffffff16565b9061166a565b8260400151105b905083604001511580156109ee575083516001600160a01b031615155b8015610a755750600654604051633af32abf60e01b81526001600160a01b0390911690633af32abf90610a259089906004016118ea565b60206040518083038186803b158015610a3d57600080fd5b505afa158015610a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a75919061184c565b8015610afc57506006548451604051633af32abf60e01b81526001600160a01b0390921691633af32abf91610aac916004016118ea565b60206040518083038186803b158015610ac457600080fd5b505afa158015610ad8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afc919061184c565b8015610b06575080155b9695505050505050565b6005546001600160a01b031681565b60105460ff1681565b6002602081905260009182526040909120805460018201549282015460058301546006840154600785015460088601546009909601546001600160a01b03909516969560ff909416949293919290919088565b6005546001600160a01b0316331480610b9e57506003546001600160a01b031633145b610bba5760405162461bcd60e51b815260040161036690611a7e565b60078054911515600160a01b0260ff60a01b19909216919091179055565b600754600160a01b900460ff16610bee57600080fd5b336000908152600260205260408120905b6004820154811015610d5d57610c37826004018281548110610c1d57fe5b6000918252602090912001546001600160a01b03166105ec565b15610c6857610c68826004018281548110610c4e57fe5b6000918252602090912001546001600160a01b0316610d82565b60026000836004018381548110610c7b57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190206002015460ff1615610d5557600482015460001901811015610d25576004820180546000198101908110610ccf57fe5b6000918252602090912001546004830180546001600160a01b039092169183908110610cf757fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600019015b81600401805480610d3257fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b600101610bff565b5050565b60046020526000908152604090208054600182015460029092015490919083565b600754600160a01b900460ff16610d9857600080fd5b610da1816105ec565b610dbd5760405162461bcd60e51b815260040161036690611b01565b6001600160a01b03808216600090815260026020526040808220805490931682529020610de8611782565b600582810154600090815260046020908152604091829020825160808101845281548152600182015492810192909252600281015482840152825160a081019384905291939092606085019291600385019182845b815481526020019060010190808311610e3d5750505050508152505090506000808260400151118015610e77575082600601548460090154115b8015610ea75750610ea0620151806109c48560060154876009015461162190919063ffffffff16565b8260400151105b60028501805460ff1916600190811790915560078501805482019055602084015160088087018054830190558054909201909155600980549091019055825190915060009015801590610eff57508251600785015410155b8015610f09575081155b15610f24575060058301805460019081019091554260068501555b6007548554602085015160405163a9059cbb60e01b81526001600160a01b039384169363a9059cbb93610f5c939116916004016118fe565b602060405180830381600087803b158015610f7657600080fd5b505af1158015610f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fae919061184c565b5060075460208401516001600160a01b039091169063a9059cbb908890610fd690600261166a565b6040518363ffffffff1660e01b8152600401610ff39291906118fe565b602060405180830381600087803b15801561100d57600080fd5b505af1158015611021573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611045919061184c565b508454602084015160058601546040516001600160a01b03808b169416927f6081787cd1bd02ab1576c52f03e8710d792d460e7881c3155d77d23893f3768b92611090928790611b3f565b60405180910390a3505050505050565b6005546001600160a01b03163314806110c357506003546001600160a01b031633145b6110df5760405162461bcd60e51b815260040161036690611a7e565b600093845260046020526040909320918255600282019290925560010155565b6001602052600090815260409020546001600160a01b031681565b600054610100900460ff168061113357506111336116ac565b80611141575060005460ff16155b61115d5760405162461bcd60e51b815260040161036690611a03565b600054610100900460ff16158015611188576000805460ff1961ff0019909116610100171660011790555b60058054336001600160a01b0319918216179091556006805482166001600160a01b0387811691909117909155600780546000805260046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ed869055600160a01b60ff60a01b19909116178316868316179055600380549092169087161790556010805460ff191690558015611226576000805461ff00191690555b5050505050565b600854600954600a5483565b60608060026000846001600160a01b03166001600160a01b031681526020019081526020016000206004018054806020026020016040519081016040528092919081815260200182805480156112b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161129a575b5050505050905060008060005b835181101561131b57600260008583815181106112de57fe5b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff16611313576001909101905b6001016112c5565b5060608167ffffffffffffffff8111801561133557600080fd5b5060405190808252806020026020018201604052801561135f578160200160208202803683370190505b50905060005b84518110156113f3576002600086838151811061137e57fe5b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff166113eb578481815181106113b857fe5b60200260200101518285815181106113cc57fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611365565b5095945050505050565b6001600160a01b03811660009081526002602090815260409182902060030180548351818402810184019094528084526060939283018282801561146a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161144c575b50505050509050919050565b6005546001600160a01b031633148061149957506003546001600160a01b031633145b6114b55760405162461bcd60e51b815260040161036690611a7e565b600754600160a01b900460ff166114cb57600080fd5b6007546040516370a0823160e01b81526000916001600160a01b0316906370a08231906114fc9030906004016118ea565b60206040518083038186803b15801561151457600080fd5b505afa158015611528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154c91906118a1565b60075460035460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb9261158492169085906004016118fe565b602060405180830381600087803b15801561159e57600080fd5b505af11580156115b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d6919061184c565b506003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611610573d6000803e3d6000fd5b50506007805460ff60a01b19169055565b600061166383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116b2565b9392505050565b600061166383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116de565b303b1590565b600081848411156116d65760405162461bcd60e51b815260040161036691906119b0565b505050900390565b600081836116ff5760405162461bcd60e51b815260040161036691906119b0565b50600083858161170b57fe5b0495945050505050565b60405180610160016040528060006001600160a01b03168152602001600080191681526020016000151581526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000815260200161177d6117a6565b905290565b604051806080016040528060008152602001600081526020016000815260200161177d5b6040518060a001604052806005906020820280368337509192915050565b6000602082840312156117d5578081fd5b813561166381611b6d565b600080600080608085870312156117f5578283fd5b843561180081611b6d565b9350602085013561181081611b6d565b9250604085013561182081611b6d565b9396929550929360600135925050565b600060208284031215611841578081fd5b813561166381611b85565b60006020828403121561185d578081fd5b815161166381611b85565b600060208284031215611879578081fd5b5035919050565b60008060408385031215611892578182fd5b50508035926020909101359150565b6000602082840312156118b2578081fd5b5051919050565b600080600080608085870312156118ce578384fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03989098168852602088019690965293151560408701526060860192909252608085015260a084015260c083015260e08201526101000190565b6020808252825182820181905260009190848201906040850190845b818110156119995783516001600160a01b031683529284019291840191600101611974565b50909695505050505050565b901515815260200190565b6000602080835283518082850152825b818110156119dc578581018301518582016040015282016119c0565b818111156119ed5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252601390820152721d5cd95c88185b1c9958591e481a9bda5b9959606a1b604082015260600190565b6020808252602c908201527f4f6e6c79206f776e6572206f72206176617461722063616e20706572666f726d60408201526b103a3434b99030b1ba34b7b760a11b606082015260800190565b6020808252601a908201527f696e7669746520636f646520616c726561647920696e20757365000000000000604082015260600190565b6020808252818101527f75736572206e6f7420656c6c6967626c6520666f7220626f756e747920796574604082015260600190565b90815260200190565b92835260208301919091521515604082015260600190565b9283526020830191909152604082015260600190565b6001600160a01b0381168114611b8257600080fd5b50565b8015158114611b8257600080fdfea2646970667358221220671bfd2c0da6f3f1ce9990d72211cd171c949bb830661113dc35957ff1d5ea6f64736f6c634300060c0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c8063a87430ba116100c3578063ba6f56801161007c578063ba6f56801461029f578063cf756fdf146102b2578063d80528ae146102c5578063e951a3aa146102cd578063e9881a5e146102ed578063efbe1c1c146103005761014d565b8063a87430ba14610215578063acec338a1461023c578063af6346b01461024f578063b2596a6714610257578063b6567cd514610279578063b9fb2d181461028c5761014d565b806354fd4d501161011557806354fd4d50146101c25780635aef7de6146101d75780635b419a65146101df5780636d619ef8146101f25780638da5cb5b14610205578063a1df6fd31461020d5761014d565b806302fb0c5e14610152578063119e5bf31461017057806321132aad146101855780632c159a1a1461019a57806341155d5e146101a2575b600080fd5b61015a610308565b60405161016791906119a5565b60405180910390f35b610178610318565b60405161016791906118ea565b610198610193366004611830565b610327565b005b610178610382565b6101b56101b03660046117c4565b610391565b6040516101679190611b36565b6101ca610448565b60405161016791906119b0565b610178610467565b6101986101ed366004611880565b610476565b61015a6102003660046117c4565b6105ec565b610178610b10565b61015a610b1f565b6102286102233660046117c4565b610b28565b604051610167989796959493929190611917565b61019861024a366004611830565b610b7b565b610198610bd8565b61026a610265366004611868565b610d61565b60405161016793929190611b57565b6101986102873660046117c4565b610d82565b61019861029a3660046118b9565b6110a0565b6101786102ad366004611868565b6110ff565b6101986102c03660046117e0565b61111a565b61026a61122d565b6102e06102db3660046117c4565b611239565b6040516101679190611958565b6102e06102fb3660046117c4565b6113fd565b610198611476565b600754600160a01b900460ff1681565b6007546001600160a01b031681565b6005546001600160a01b031633148061034a57506003546001600160a01b031633145b61036f5760405162461bcd60e51b815260040161036690611a7e565b60405180910390fd5b6010805460ff1916911515919091179055565b6006546001600160a01b031681565b6001600160a01b038116600090815260026020908152604080832060040180548251818502810185019093528083526060938301828280156103fc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116103de575b505050505090506000805b82518110156104405761042c83828151811061041f57fe5b60200260200101516105ec565b15610438576001909101905b600101610407565b509392505050565b6040805180820190915260058152640312e322e360dc1b602082015290565b6003546001600160a01b031681565b600754600160a01b900460ff1661048c57600080fd5b3360009081526002602052604090206001810154156104bd5760405162461bcd60e51b815260040161036690611a51565b6000838152600160205260409020546001600160a01b0316156104f25760405162461bcd60e51b815260040161036690611aca565b6000828152600160208190526040808320549184018690554260068501819055600985015585835290912080546001600160a01b031916331790556001600160a01b031680156105b05781546001600160a01b0382166001600160a01b031991821681178455600090815260026020908152604082206003810180546001818101835591855283852001805486163390811790915560049092018054808301825590855292909320909101805490931617909155600a805490910190555b60405133906001600160a01b038316907fd8c638d8979e2ba5dba1f0d66246ee4b1c54b838f0e0a2b601365345eb23b05190600090a350505050565b60006105f6611715565b6001600160a01b03808416600090815260026020818152604092839020835161016081018552815490951685526001810154858301529182015460ff1615158484015260038201805484518184028101840190955280855292936060860193909283018282801561069057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610672575b50505050508152602001600482018054806020026020016040519081016040528092919081815260200182805480156106f257602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116106d4575b505050505081526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201600580602002604051908101604052809291908260058015610769576020028201915b815481526020019060010190808311610755575b505050505081525050905061077c611715565b81516001600160a01b03908116600090815260026020818152604092839020835161016081018552815490951685526001810154858301529182015460ff1615158484015260038201805484518184028101840190955280855292936060860193909283018282801561081857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116107fa575b505050505081526020016004820180548060200260200160405190810160405280929190818152602001828054801561087a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161085c575b505050505081526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a82016005806020026040519081016040528092919082600580156108f1576020028201915b8154815260200190600101908083116108dd575b5050505050815250509050610904611782565b60a08083015160009081526004602090815260409182902082516080810184528154815260018201549281019290925260028101548284015282519384019092529160608301906003830160058282826020028201915b81548152602001906001019080831161095b5750505091909252505060105491925060009160ff1615156001149050801561099a575060008260400151115b80156109d157506109ca620151806109c48560c0015187610120015161162190919063ffffffff16565b9061166a565b8260400151105b905083604001511580156109ee575083516001600160a01b031615155b8015610a755750600654604051633af32abf60e01b81526001600160a01b0390911690633af32abf90610a259089906004016118ea565b60206040518083038186803b158015610a3d57600080fd5b505afa158015610a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a75919061184c565b8015610afc57506006548451604051633af32abf60e01b81526001600160a01b0390921691633af32abf91610aac916004016118ea565b60206040518083038186803b158015610ac457600080fd5b505afa158015610ad8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afc919061184c565b8015610b06575080155b9695505050505050565b6005546001600160a01b031681565b60105460ff1681565b6002602081905260009182526040909120805460018201549282015460058301546006840154600785015460088601546009909601546001600160a01b03909516969560ff909416949293919290919088565b6005546001600160a01b0316331480610b9e57506003546001600160a01b031633145b610bba5760405162461bcd60e51b815260040161036690611a7e565b60078054911515600160a01b0260ff60a01b19909216919091179055565b600754600160a01b900460ff16610bee57600080fd5b336000908152600260205260408120905b6004820154811015610d5d57610c37826004018281548110610c1d57fe5b6000918252602090912001546001600160a01b03166105ec565b15610c6857610c68826004018281548110610c4e57fe5b6000918252602090912001546001600160a01b0316610d82565b60026000836004018381548110610c7b57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190206002015460ff1615610d5557600482015460001901811015610d25576004820180546000198101908110610ccf57fe5b6000918252602090912001546004830180546001600160a01b039092169183908110610cf757fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600019015b81600401805480610d3257fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b600101610bff565b5050565b60046020526000908152604090208054600182015460029092015490919083565b600754600160a01b900460ff16610d9857600080fd5b610da1816105ec565b610dbd5760405162461bcd60e51b815260040161036690611b01565b6001600160a01b03808216600090815260026020526040808220805490931682529020610de8611782565b600582810154600090815260046020908152604091829020825160808101845281548152600182015492810192909252600281015482840152825160a081019384905291939092606085019291600385019182845b815481526020019060010190808311610e3d5750505050508152505090506000808260400151118015610e77575082600601548460090154115b8015610ea75750610ea0620151806109c48560060154876009015461162190919063ffffffff16565b8260400151105b60028501805460ff1916600190811790915560078501805482019055602084015160088087018054830190558054909201909155600980549091019055825190915060009015801590610eff57508251600785015410155b8015610f09575081155b15610f24575060058301805460019081019091554260068501555b6007548554602085015160405163a9059cbb60e01b81526001600160a01b039384169363a9059cbb93610f5c939116916004016118fe565b602060405180830381600087803b158015610f7657600080fd5b505af1158015610f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fae919061184c565b5060075460208401516001600160a01b039091169063a9059cbb908890610fd690600261166a565b6040518363ffffffff1660e01b8152600401610ff39291906118fe565b602060405180830381600087803b15801561100d57600080fd5b505af1158015611021573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611045919061184c565b508454602084015160058601546040516001600160a01b03808b169416927f6081787cd1bd02ab1576c52f03e8710d792d460e7881c3155d77d23893f3768b92611090928790611b3f565b60405180910390a3505050505050565b6005546001600160a01b03163314806110c357506003546001600160a01b031633145b6110df5760405162461bcd60e51b815260040161036690611a7e565b600093845260046020526040909320918255600282019290925560010155565b6001602052600090815260409020546001600160a01b031681565b600054610100900460ff168061113357506111336116ac565b80611141575060005460ff16155b61115d5760405162461bcd60e51b815260040161036690611a03565b600054610100900460ff16158015611188576000805460ff1961ff0019909116610100171660011790555b60058054336001600160a01b0319918216179091556006805482166001600160a01b0387811691909117909155600780546000805260046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ed869055600160a01b60ff60a01b19909116178316868316179055600380549092169087161790556010805460ff191690558015611226576000805461ff00191690555b5050505050565b600854600954600a5483565b60608060026000846001600160a01b03166001600160a01b031681526020019081526020016000206004018054806020026020016040519081016040528092919081815260200182805480156112b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161129a575b5050505050905060008060005b835181101561131b57600260008583815181106112de57fe5b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff16611313576001909101905b6001016112c5565b5060608167ffffffffffffffff8111801561133557600080fd5b5060405190808252806020026020018201604052801561135f578160200160208202803683370190505b50905060005b84518110156113f3576002600086838151811061137e57fe5b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff166113eb578481815181106113b857fe5b60200260200101518285815181106113cc57fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611365565b5095945050505050565b6001600160a01b03811660009081526002602090815260409182902060030180548351818402810184019094528084526060939283018282801561146a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161144c575b50505050509050919050565b6005546001600160a01b031633148061149957506003546001600160a01b031633145b6114b55760405162461bcd60e51b815260040161036690611a7e565b600754600160a01b900460ff166114cb57600080fd5b6007546040516370a0823160e01b81526000916001600160a01b0316906370a08231906114fc9030906004016118ea565b60206040518083038186803b15801561151457600080fd5b505afa158015611528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154c91906118a1565b60075460035460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb9261158492169085906004016118fe565b602060405180830381600087803b15801561159e57600080fd5b505af11580156115b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d6919061184c565b506003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611610573d6000803e3d6000fd5b50506007805460ff60a01b19169055565b600061166383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116b2565b9392505050565b600061166383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116de565b303b1590565b600081848411156116d65760405162461bcd60e51b815260040161036691906119b0565b505050900390565b600081836116ff5760405162461bcd60e51b815260040161036691906119b0565b50600083858161170b57fe5b0495945050505050565b60405180610160016040528060006001600160a01b03168152602001600080191681526020016000151581526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000815260200161177d6117a6565b905290565b604051806080016040528060008152602001600081526020016000815260200161177d5b6040518060a001604052806005906020820280368337509192915050565b6000602082840312156117d5578081fd5b813561166381611b6d565b600080600080608085870312156117f5578283fd5b843561180081611b6d565b9350602085013561181081611b6d565b9250604085013561182081611b6d565b9396929550929360600135925050565b600060208284031215611841578081fd5b813561166381611b85565b60006020828403121561185d578081fd5b815161166381611b85565b600060208284031215611879578081fd5b5035919050565b60008060408385031215611892578182fd5b50508035926020909101359150565b6000602082840312156118b2578081fd5b5051919050565b600080600080608085870312156118ce578384fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03989098168852602088019690965293151560408701526060860192909252608085015260a084015260c083015260e08201526101000190565b6020808252825182820181905260009190848201906040850190845b818110156119995783516001600160a01b031683529284019291840191600101611974565b50909695505050505050565b901515815260200190565b6000602080835283518082850152825b818110156119dc578581018301518582016040015282016119c0565b818111156119ed5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252601390820152721d5cd95c88185b1c9958591e481a9bda5b9959606a1b604082015260600190565b6020808252602c908201527f4f6e6c79206f776e6572206f72206176617461722063616e20706572666f726d60408201526b103a3434b99030b1ba34b7b760a11b606082015260800190565b6020808252601a908201527f696e7669746520636f646520616c726561647920696e20757365000000000000604082015260600190565b6020808252818101527f75736572206e6f7420656c6c6967626c6520666f7220626f756e747920796574604082015260600190565b90815260200190565b92835260208301919091521515604082015260600190565b9283526020830191909152604082015260600190565b6001600160a01b0381168114611b8257600080fd5b50565b8015158114611b8257600080fdfea2646970667358221220671bfd2c0da6f3f1ce9990d72211cd171c949bb830661113dc35957ff1d5ea6f64736f6c634300060c0033",
"immutableReferences": {},
"sourceMap": "383:6877:6:-:0;;;;;;;;;;;;;;;;;;;",
"deployedSourceMap": "383:6877:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1253:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1226:24;;;:::i;:::-;;;;;;;:::i;2228:116::-;;;;;;:::i;:::-;;:::i;:::-;;1198:25;;;:::i;4234:287::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7181:77::-;;;:::i;:::-;;;;;;;:::i;1099:29::-;;;:::i;2347:683::-;;;;;;:::i;:::-;;:::i;3033:566::-;;;;;;:::i;:::-;;:::i;1175:20::-;;;:::i;1296:34::-;;;:::i;1059:37::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;6827:78::-;;;;;;:::i;:::-;;:::i;5911:659::-;;;:::i;1132:39::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;4618:1198::-;;;;;;:::i;:::-;;:::i;6573:251::-;;;;;;:::i;:::-;;:::i;1011:45::-;;;;;;:::i;:::-;;:::i;1874:351::-;;;;;;:::i;:::-;;:::i;1274:18::-;;;:::i;3729:502::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3602:124::-;;;;;;:::i;:::-;;:::i;6908:210::-;;;:::i;1253:18::-;;;-1:-1:-1;;;1253:18:6;;;;;:::o;1226:24::-;;;-1:-1:-1;;;;;1226:24:6;;:::o;2228:116::-;1607:5;;-1:-1:-1;;;;;1607:5:6;1593:10;:19;;:43;;-1:-1:-1;1630:6:6;;-1:-1:-1;;;;;1630:6:6;1616:10;:20;1593:43;1581:110;;;;-1:-1:-1;;;1581:110:6;;;;;;;:::i;:::-;;;;;;;;;2305:22:::1;:35:::0;;-1:-1:-1;;2305:35:6::1;::::0;::::1;;::::0;;;::::1;::::0;;2228:116::o;1198:25::-;;;-1:-1:-1;;;;;1198:25:6;;:::o;4234:287::-;-1:-1:-1;;;;;4348:15:6;;4307:7;4348:15;;;:5;:15;;;;;;;;:23;;4321:50;;;;;;;;;;;;;;;;;:24;;:50;;4348:23;4321:50;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4321:50:6;;;;;;;;;;;;;;;;;;;;;;;4375:13;4401:9;4396:106;4416:7;:14;4412:1;:18;4396:106;;;4446:31;4466:7;4474:1;4466:10;;;;;;;;;;;;;;4446:19;:31::i;:::-;4442:56;;;4485:7;;;;;4442:56;4432:3;;4396:106;;;-1:-1:-1;4512:5:6;4234:287;-1:-1:-1;;;4234:287:6:o;7181:77::-;7240:14;;;;;;;;;;;;-1:-1:-1;;;7240:14:6;;;;7181:77;:::o;1099:29::-;;;-1:-1:-1;;;;;1099:29:6;;:::o;2347:683::-;1855:6;;-1:-1:-1;;;1855:6:6;;;;1847:15;;;;;;2446:10:::1;2420:17;2440::::0;;;:5:::1;:17;::::0;;;;2469:15:::1;::::0;::::1;::::0;:22;2461:54:::1;;;