UNPKG

mustafair-carvid-package-hackathon

Version:

CARV ID implementation files for MustaFair decentralized social media platform

432 lines (431 loc) 37.4 kB
{ "_format": "hh-sol-artifact-1", "contractName": "CarvIdPostVoting", "sourceName": "contracts/CarvIdPostVoting.sol", "abi": [ { "inputs": [ { "internalType": "address", "name": "_carvIdContract", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "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": true, "internalType": "uint256", "name": "postId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "likes", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "dislikes", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalVotes", "type": "uint256" } ], "name": "PostUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "postId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "voter", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isLike", "type": "bool" } ], "name": "PostVoteCast", "type": "event" }, { "inputs": [], "name": "carvIdContract", "outputs": [ { "internalType": "contract IModularCarvID", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAllPosts", "outputs": [ { "internalType": "uint256[5]", "name": "postIds", "type": "uint256[5]" }, { "internalType": "bool[5]", "name": "isActive", "type": "bool[5]" }, { "internalType": "uint256[5]", "name": "likes", "type": "uint256[5]" }, { "internalType": "uint256[5]", "name": "dislikes", "type": "uint256[5]" }, { "internalType": "uint256[5]", "name": "totalVotes", "type": "uint256[5]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "postId", "type": "uint256" } ], "name": "getPost", "outputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "bool", "name": "isActive", "type": "bool" }, { "internalType": "uint256", "name": "likes", "type": "uint256" }, { "internalType": "uint256", "name": "dislikes", "type": "uint256" }, { "internalType": "uint256", "name": "totalVotes", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "postId", "type": "uint256" }, { "internalType": "address", "name": "user", "type": "address" } ], "name": "getUserVote", "outputs": [ { "internalType": "bool", "name": "hasVoted", "type": "bool" }, { "internalType": "bool", "name": "isLike", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "hasUserCarvId", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "postId", "type": "uint256" }, { "internalType": "address", "name": "user", "type": "address" } ], "name": "hasUserVoted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "posts", "outputs": [ { "internalType": "uint256", "name": "postId", "type": "uint256" }, { "internalType": "bool", "name": "isActive", "type": "bool" }, { "internalType": "uint256", "name": "likes", "type": "uint256" }, { "internalType": "uint256", "name": "dislikes", "type": "uint256" }, { "internalType": "uint256", "name": "totalVotes", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "postId", "type": "uint256" } ], "name": "togglePostStatus", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_carvIdContract", "type": "address" } ], "name": "updateCarvIdContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "postId", "type": "uint256" }, { "internalType": "bool", "name": "isLike", "type": "bool" } ], "name": "voteOnPost", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "votes", "outputs": [ { "internalType": "bool", "name": "hasVoted", "type": "bool" }, { "internalType": "bool", "name": "isLike", "type": "bool" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x608060405234801561001057600080fd5b50604051611d7e380380611d7e833981810160405281019061003291906102d8565b33600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a55760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161009c9190610314565b60405180910390fd5b6100b4816101b160201b60201c565b506001808190555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600190505b600581116101aa576040518060a0016040528082815260200160011515815260200160008152602001600081526020016000815250600260008381526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff02191690831515021790555060408201518160020155606082015181600301556080820151816004015590505080806101a290610368565b915050610104565b50506103b0565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006102a58261027a565b9050919050565b6102b58161029a565b81146102c057600080fd5b50565b6000815190506102d2816102ac565b92915050565b6000602082840312156102ee576102ed610275565b5b60006102fc848285016102c3565b91505092915050565b61030e8161029a565b82525050565b60006020820190506103296000830184610305565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b60006103738261035e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036103a5576103a461032f565b5b600182019050919050565b6119bf806103bf6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806340731c241161008c578063c987e17411610066578063c987e17414610258578063d23254b414610274578063dc296ae1146102a6578063f2fde38b146102d6576100ea565b806340731c24146101fc578063715018a6146102305780638da5cb5b1461023a576100ea565b80631cbcf0f6116100c85780631cbcf0f6146101705780631f68937b146101a057806327fa31d1146101bc57806330561100146101da576100ea565b806303c7881a146100ef57806307d25a09146101205780630b1e7f831461013c575b600080fd5b61010960048036038101906101049190611039565b6102f2565b604051610117929190611094565b60405180910390f35b61013a600480360381019061013591906110bd565b6103fb565b005b610156600480360381019061015191906110ea565b610447565b604051610167959493929190611126565b60405180910390f35b61018a600480360381019061018591906110bd565b61048a565b6040516101979190611179565b60405180910390f35b6101ba60048036038101906101b591906111c0565b610544565b005b6101c46108ff565b6040516101d1919061125f565b60405180910390f35b6101e2610925565b6040516101f39594939291906113d0565b60405180910390f35b610216600480360381019061021191906110ea565b610a91565b604051610227959493929190611126565b60405180910390f35b610238610b7c565b005b610242610b90565b60405161024f9190611436565b60405180910390f35b610272600480360381019061026d91906110ea565b610bb9565b005b61028e60048036038101906102899190611039565b610c67565b60405161029d93929190611451565b60405180910390f35b6102c060048036038101906102bb9190611039565b610cb8565b6040516102cd9190611179565b60405180910390f35b6102f060048036038101906102eb91906110bd565b610d74565b005b60008060018410158015610307575060058411155b610346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033d906114e5565b60405180910390fd5b60006003600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff1615151515815260200160018201548152505090508060000151816020015192509250509250929050565b610403610dfa565b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60026020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16908060020154908060030154908060040154905085565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637a00d3c4836040518263ffffffff1660e01b81526004016104e79190611436565b600060405180830381865afa92505050801561052657506040513d6000823e3d601f19601f8201168201806040525081019061052391906116b1565b60015b610533576000905061053f565b60008414159450505050505b919050565b61054d3361048a565b61058c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058390611780565b60405180910390fd5b6001821015801561059e575060058211155b6105dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d4906114e5565b60405180910390fd5b6002600083815260200190815260200160002060010160009054906101000a900460ff16610640576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610637906117ec565b60405180910390fd5b6003600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16156106e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d890611858565b60405180910390fd5b60405180606001604052806001151581526020018215158152602001428152506003600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff0219169083151502179055506040820151816001015590505080156107d5576002600083815260200190815260200160002060020160008154809291906107cb906118a7565b9190505550610802565b6002600083815260200190815260200160002060030160008154809291906107fc906118a7565b91905055505b600260008381526020019081526020016000206004016000815480929190610829906118a7565b91905055503373ffffffffffffffffffffffffffffffffffffffff16827f66483dd85d319543af5176d9e5c29584a3c8ef2a9f71061078b571b3461f74d6836040516108759190611179565b60405180910390a3817f78237da86a38d75c4290215b8a0a48816a07773e694baf179e09ca71332281f36002600085815260200190815260200160002060020154600260008681526020019081526020016000206003015460026000878152602001908152602001600020600401546040516108f3939291906118ef565b60405180910390a25050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61092d610f4d565b610935610f6f565b61093d610f4d565b610945610f4d565b61094d610f4d565b60005b6005811015610a895760006001826109689190611926565b90506000600260008381526020019081526020016000206040518060a0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016002820154815260200160038201548152602001600482015481525050905080600001518884600581106109e7576109e661195a565b5b6020020181815250508060200151878460058110610a0857610a0761195a565b5b6020020190151590811515815250508060400151868460058110610a2f57610a2e61195a565b5b6020020181815250508060600151858460058110610a5057610a4f61195a565b5b6020020181815250508060800151848460058110610a7157610a7061195a565b5b60200201818152505050508080600101915050610950565b509091929394565b600080600080600060018610158015610aab575060058611155b610aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae1906114e5565b60405180910390fd5b6000600260008881526020019081526020016000206040518060a0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016002820154815260200160038201548152602001600482015481525050905080600001518160200151826040015183606001518460800151955095509550955095505091939590929450565b610b84610dfa565b610b8e6000610e81565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610bc1610dfa565b60018110158015610bd3575060058111155b610c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c09906114e5565b60405180910390fd5b6002600082815260200190815260200160002060010160009054906101000a900460ff16156002600083815260200190815260200160002060010160006101000a81548160ff02191690831515021790555050565b6003602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060010154905083565b600060018310158015610ccc575060058311155b610d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d02906114e5565b60405180910390fd5b6003600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16905092915050565b610d7c610dfa565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610dee5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610de59190611436565b60405180910390fd5b610df781610e81565b50565b610e02610f45565b73ffffffffffffffffffffffffffffffffffffffff16610e20610b90565b73ffffffffffffffffffffffffffffffffffffffff1614610e7f57610e43610f45565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610e769190611436565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6040518060a00160405280600590602082028036833780820191505090505090565b6040518060a00160405280600590602082028036833780820191505090505090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b610fb881610fa5565b8114610fc357600080fd5b50565b600081359050610fd581610faf565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061100682610fdb565b9050919050565b61101681610ffb565b811461102157600080fd5b50565b6000813590506110338161100d565b92915050565b600080604083850312156110505761104f610f9b565b5b600061105e85828601610fc6565b925050602061106f85828601611024565b9150509250929050565b60008115159050919050565b61108e81611079565b82525050565b60006040820190506110a96000830185611085565b6110b66020830184611085565b9392505050565b6000602082840312156110d3576110d2610f9b565b5b60006110e184828501611024565b91505092915050565b600060208284031215611100576110ff610f9b565b5b600061110e84828501610fc6565b91505092915050565b61112081610fa5565b82525050565b600060a08201905061113b6000830188611117565b6111486020830187611085565b6111556040830186611117565b6111626060830185611117565b61116f6080830184611117565b9695505050505050565b600060208201905061118e6000830184611085565b92915050565b61119d81611079565b81146111a857600080fd5b50565b6000813590506111ba81611194565b92915050565b600080604083850312156111d7576111d6610f9b565b5b60006111e585828601610fc6565b92505060206111f6858286016111ab565b9150509250929050565b6000819050919050565b600061122561122061121b84610fdb565b611200565b610fdb565b9050919050565b60006112378261120a565b9050919050565b60006112498261122c565b9050919050565b6112598161123e565b82525050565b60006020820190506112746000830184611250565b92915050565b600060059050919050565b600081905092915050565b6000819050919050565b6112a381610fa5565b82525050565b60006112b5838361129a565b60208301905092915050565b6000602082019050919050565b6112d78161127a565b6112e18184611285565b92506112ec82611290565b8060005b8381101561131d57815161130487826112a9565b965061130f836112c1565b9250506001810190506112f0565b505050505050565b600060059050919050565b600081905092915050565b6000819050919050565b61134e81611079565b82525050565b60006113608383611345565b60208301905092915050565b6000602082019050919050565b61138281611325565b61138c8184611330565b92506113978261133b565b8060005b838110156113c85781516113af8782611354565b96506113ba8361136c565b92505060018101905061139b565b505050505050565b6000610320820190506113e660008301886112ce565b6113f360a0830187611379565b6114016101408301866112ce565b61140f6101e08301856112ce565b61141d6102808301846112ce565b9695505050505050565b61143081610ffb565b82525050565b600060208201905061144b6000830184611427565b92915050565b60006060820190506114666000830186611085565b6114736020830185611085565b6114806040830184611117565b949350505050565b600082825260208201905092915050565b7f496e76616c696420706f73742049440000000000000000000000000000000000600082015250565b60006114cf600f83611488565b91506114da82611499565b602082019050919050565b600060208201905081810360008301526114fe816114c2565b9050919050565b60008151905061151481610faf565b92915050565b6000819050919050565b61152d8161151a565b811461153857600080fd5b50565b60008151905061154a81611524565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6115a38261155a565b810181811067ffffffffffffffff821117156115c2576115c161156b565b5b80604052505050565b60006115d5610f91565b90506115e1828261159a565b919050565b600067ffffffffffffffff8211156116015761160061156b565b5b61160a8261155a565b9050602081019050919050565b60005b8381101561163557808201518184015260208101905061161a565b60008484015250505050565b600061165461164f846115e6565b6115cb565b9050828152602081018484840111156116705761166f611555565b5b61167b848285611617565b509392505050565b600082601f83011261169857611697611550565b5b81516116a8848260208601611641565b91505092915050565b600080600080608085870312156116cb576116ca610f9b565b5b60006116d987828801611505565b94505060206116ea8782880161153b565b93505060406116fb8782880161153b565b925050606085015167ffffffffffffffff81111561171c5761171b610fa0565b5b61172887828801611683565b91505092959194509250565b7f4f6e6c7920434152562049442075736572732063616e20766f74650000000000600082015250565b600061176a601b83611488565b915061177582611734565b602082019050919050565b600060208201905081810360008301526117998161175d565b9050919050565b7f506f7374206973206e6f74206163746976650000000000000000000000000000600082015250565b60006117d6601283611488565b91506117e1826117a0565b602082019050919050565b60006020820190508181036000830152611805816117c9565b9050919050565b7f416c726561647920766f746564206f6e207468697320706f7374000000000000600082015250565b6000611842601a83611488565b915061184d8261180c565b602082019050919050565b6000602082019050818103600083015261187181611835565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006118b282610fa5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036118e4576118e3611878565b5b600182019050919050565b60006060820190506119046000830186611117565b6119116020830185611117565b61191e6040830184611117565b949350505050565b600061193182610fa5565b915061193c83610fa5565b925082820190508082111561195457611953611878565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220c144c0e33fb90e3057f83dcbfb53a9f360e97a49ca92a2d68a56a5f0c75995e064736f6c634300081c0033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806340731c241161008c578063c987e17411610066578063c987e17414610258578063d23254b414610274578063dc296ae1146102a6578063f2fde38b146102d6576100ea565b806340731c24146101fc578063715018a6146102305780638da5cb5b1461023a576100ea565b80631cbcf0f6116100c85780631cbcf0f6146101705780631f68937b146101a057806327fa31d1146101bc57806330561100146101da576100ea565b806303c7881a146100ef57806307d25a09146101205780630b1e7f831461013c575b600080fd5b61010960048036038101906101049190611039565b6102f2565b604051610117929190611094565b60405180910390f35b61013a600480360381019061013591906110bd565b6103fb565b005b610156600480360381019061015191906110ea565b610447565b604051610167959493929190611126565b60405180910390f35b61018a600480360381019061018591906110bd565b61048a565b6040516101979190611179565b60405180910390f35b6101ba60048036038101906101b591906111c0565b610544565b005b6101c46108ff565b6040516101d1919061125f565b60405180910390f35b6101e2610925565b6040516101f39594939291906113d0565b60405180910390f35b610216600480360381019061021191906110ea565b610a91565b604051610227959493929190611126565b60405180910390f35b610238610b7c565b005b610242610b90565b60405161024f9190611436565b60405180910390f35b610272600480360381019061026d91906110ea565b610bb9565b005b61028e60048036038101906102899190611039565b610c67565b60405161029d93929190611451565b60405180910390f35b6102c060048036038101906102bb9190611039565b610cb8565b6040516102cd9190611179565b60405180910390f35b6102f060048036038101906102eb91906110bd565b610d74565b005b60008060018410158015610307575060058411155b610346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033d906114e5565b60405180910390fd5b60006003600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff1615151515815260200160018201548152505090508060000151816020015192509250509250929050565b610403610dfa565b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60026020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16908060020154908060030154908060040154905085565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637a00d3c4836040518263ffffffff1660e01b81526004016104e79190611436565b600060405180830381865afa92505050801561052657506040513d6000823e3d601f19601f8201168201806040525081019061052391906116b1565b60015b610533576000905061053f565b60008414159450505050505b919050565b61054d3361048a565b61058c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058390611780565b60405180910390fd5b6001821015801561059e575060058211155b6105dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d4906114e5565b60405180910390fd5b6002600083815260200190815260200160002060010160009054906101000a900460ff16610640576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610637906117ec565b60405180910390fd5b6003600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16156106e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d890611858565b60405180910390fd5b60405180606001604052806001151581526020018215158152602001428152506003600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff0219169083151502179055506040820151816001015590505080156107d5576002600083815260200190815260200160002060020160008154809291906107cb906118a7565b9190505550610802565b6002600083815260200190815260200160002060030160008154809291906107fc906118a7565b91905055505b600260008381526020019081526020016000206004016000815480929190610829906118a7565b91905055503373ffffffffffffffffffffffffffffffffffffffff16827f66483dd85d319543af5176d9e5c29584a3c8ef2a9f71061078b571b3461f74d6836040516108759190611179565b60405180910390a3817f78237da86a38d75c4290215b8a0a48816a07773e694baf179e09ca71332281f36002600085815260200190815260200160002060020154600260008681526020019081526020016000206003015460026000878152602001908152602001600020600401546040516108f3939291906118ef565b60405180910390a25050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61092d610f4d565b610935610f6f565b61093d610f4d565b610945610f4d565b61094d610f4d565b60005b6005811015610a895760006001826109689190611926565b90506000600260008381526020019081526020016000206040518060a0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016002820154815260200160038201548152602001600482015481525050905080600001518884600581106109e7576109e661195a565b5b6020020181815250508060200151878460058110610a0857610a0761195a565b5b6020020190151590811515815250508060400151868460058110610a2f57610a2e61195a565b5b6020020181815250508060600151858460058110610a5057610a4f61195a565b5b6020020181815250508060800151848460058110610a7157610a7061195a565b5b60200201818152505050508080600101915050610950565b509091929394565b600080600080600060018610158015610aab575060058611155b610aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae1906114e5565b60405180910390fd5b6000600260008881526020019081526020016000206040518060a0016040529081600082015481526020016001820160009054906101000a900460ff161515151581526020016002820154815260200160038201548152602001600482015481525050905080600001518160200151826040015183606001518460800151955095509550955095505091939590929450565b610b84610dfa565b610b8e6000610e81565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610bc1610dfa565b60018110158015610bd3575060058111155b610c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c09906114e5565b60405180910390fd5b6002600082815260200190815260200160002060010160009054906101000a900460ff16156002600083815260200190815260200160002060010160006101000a81548160ff02191690831515021790555050565b6003602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060010154905083565b600060018310158015610ccc575060058311155b610d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d02906114e5565b60405180910390fd5b6003600084815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16905092915050565b610d7c610dfa565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610dee5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610de59190611436565b60405180910390fd5b610df781610e81565b50565b610e02610f45565b73ffffffffffffffffffffffffffffffffffffffff16610e20610b90565b73ffffffffffffffffffffffffffffffffffffffff1614610e7f57610e43610f45565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610e769190611436565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6040518060a00160405280600590602082028036833780820191505090505090565b6040518060a00160405280600590602082028036833780820191505090505090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b610fb881610fa5565b8114610fc357600080fd5b50565b600081359050610fd581610faf565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061100682610fdb565b9050919050565b61101681610ffb565b811461102157600080fd5b50565b6000813590506110338161100d565b92915050565b600080604083850312156110505761104f610f9b565b5b600061105e85828601610fc6565b925050602061106f85828601611024565b9150509250929050565b60008115159050919050565b61108e81611079565b82525050565b60006040820190506110a96000830185611085565b6110b66020830184611085565b9392505050565b6000602082840312156110d3576110d2610f9b565b5b60006110e184828501611024565b91505092915050565b600060208284031215611100576110ff610f9b565b5b600061110e84828501610fc6565b91505092915050565b61112081610fa5565b82525050565b600060a08201905061113b6000830188611117565b6111486020830187611085565b6111556040830186611117565b6111626060830185611117565b61116f6080830184611117565b9695505050505050565b600060208201905061118e6000830184611085565b92915050565b61119d81611079565b81146111a857600080fd5b50565b6000813590506111ba81611194565b92915050565b600080604083850312156111d7576111d6610f9b565b5b60006111e585828601610fc6565b92505060206111f6858286016111ab565b9150509250929050565b6000819050919050565b600061122561122061121b84610fdb565b611200565b610fdb565b9050919050565b60006112378261120a565b9050919050565b60006112498261122c565b9050919050565b6112598161123e565b82525050565b60006020820190506112746000830184611250565b92915050565b600060059050919050565b600081905092915050565b6000819050919050565b6112a381610fa5565b82525050565b60006112b5838361129a565b60208301905092915050565b6000602082019050919050565b6112d78161127a565b6112e18184611285565b92506112ec82611290565b8060005b8381101561131d57815161130487826112a9565b965061130f836112c1565b9250506001810190506112f0565b505050505050565b600060059050919050565b600081905092915050565b6000819050919050565b61134e81611079565b82525050565b60006113608383611345565b60208301905092915050565b6000602082019050919050565b61138281611325565b61138c8184611330565b92506113978261133b565b8060005b838110156113c85781516113af8782611354565b96506113ba8361136c565b92505060018101905061139b565b505050505050565b6000610320820190506113e660008301886112ce565b6113f360a0830187611379565b6114016101408301866112ce565b61140f6101e08301856112ce565b61141d6102808301846112ce565b9695505050505050565b61143081610ffb565b82525050565b600060208201905061144b6000830184611427565b92915050565b60006060820190506114666000830186611085565b6114736020830185611085565b6114806040830184611117565b949350505050565b600082825260208201905092915050565b7f496e76616c696420706f73742049440000000000000000000000000000000000600082015250565b60006114cf600f83611488565b91506114da82611499565b602082019050919050565b600060208201905081810360008301526114fe816114c2565b9050919050565b60008151905061151481610faf565b92915050565b6000819050919050565b61152d8161151a565b811461153857600080fd5b50565b60008151905061154a81611524565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6115a38261155a565b810181811067ffffffffffffffff821117156115c2576115c161156b565b5b80604052505050565b60006115d5610f91565b90506115e1828261159a565b919050565b600067ffffffffffffffff8211156116015761160061156b565b5b61160a8261155a565b9050602081019050919050565b60005b8381101561163557808201518184015260208101905061161a565b60008484015250505050565b600061165461164f846115e6565b6115cb565b9050828152602081018484840111156116705761166f611555565b5b61167b848285611617565b509392505050565b600082601f83011261169857611697611550565b5b81516116a8848260208601611641565b91505092915050565b600080600080608085870312156116cb576116ca610f9b565b5b60006116d987828801611505565b94505060206116ea8782880161153b565b93505060406116fb8782880161153b565b925050606085015167ffffffffffffffff81111561171c5761171b610fa0565b5b61172887828801611683565b91505092959194509250565b7f4f6e6c7920434152562049442075736572732063616e20766f74650000000000600082015250565b600061176a601b83611488565b915061177582611734565b602082019050919050565b600060208201905081810360008301526117998161175d565b9050919050565b7f506f7374206973206e6f74206163746976650000000000000000000000000000600082015250565b60006117d6601283611488565b91506117e1826117a0565b602082019050919050565b60006020820190508181036000830152611805816117c9565b9050919050565b7f416c726561647920766f746564206f6e207468697320706f7374000000000000600082015250565b6000611842601a83611488565b915061184d8261180c565b602082019050919050565b6000602082019050818103600083015261187181611835565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006118b282610fa5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036118e4576118e3611878565b5b600182019050919050565b60006060820190506119046000830186611117565b6119116020830185611117565b61191e6040830184611117565b949350505050565b600061193182610fa5565b915061193c83610fa5565b925082820190508082111561195457611953611878565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220c144c0e33fb90e3057f83dcbfb53a9f360e97a49ca92a2d68a56a5f0c75995e064736f6c634300081c0033", "linkReferences": {}, "deployedLinkReferences": {} }