{
  "contractName": "Concept",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "creationDate",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        },
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "buckets",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "fathomToken",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "assessmentExists",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "parentFactors",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "lifetime",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "data",
      "outputs": [
        {
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "conceptRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "parents",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "name": "memberData",
      "outputs": [
        {
          "name": "recentAssessment",
          "type": "address"
        },
        {
          "name": "weight",
          "type": "uint256"
        },
        {
          "name": "assessmentDate",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "cloneOf",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "DataSet",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_assessee",
          "type": "address"
        },
        {
          "name": "_weight",
          "type": "uint256"
        }
      ],
      "name": "addMember",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_member",
          "type": "address"
        }
      ],
      "name": "migrateMember",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_user",
          "type": "address"
        },
        {
          "name": "_weight",
          "type": "uint256"
        }
      ],
      "name": "addInitialMember",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_cost",
          "type": "uint256"
        },
        {
          "name": "_size",
          "type": "uint256"
        },
        {
          "name": "_waitTime",
          "type": "uint256"
        },
        {
          "name": "_timeLimit",
          "type": "uint256"
        }
      ],
      "name": "makeAssessment",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_available",
          "type": "bool"
        }
      ],
      "name": "toggleAvailability",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "integrateMember",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newParents",
          "type": "address[]"
        },
        {
          "name": "_newParentFactors",
          "type": "uint256[]"
        }
      ],
      "name": "changeParents",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "changeData",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newLifetime",
          "type": "uint256"
        }
      ],
      "name": "changeLifetime",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_member",
          "type": "address"
        }
      ],
      "name": "getWeight",
      "outputs": [
        {
          "name": "weight",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getNumberOfAvailableMembers",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getAvailableMembers",
      "outputs": [
        {
          "name": "",
          "type": "address[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getNumberOfParents",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "activeBucketNumber",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.0+commit.1d4f565a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"getNumberOfAvailableMembers\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"creationDate\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"buckets\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_available\",\"type\":\"bool\"}],\"name\":\"toggleAvailability\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"fathomToken\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"assessmentExists\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_cost\",\"type\":\"uint256\"},{\"name\":\"_size\",\"type\":\"uint256\"},{\"name\":\"_waitTime\",\"type\":\"uint256\"},{\"name\":\"_timeLimit\",\"type\":\"uint256\"}],\"name\":\"makeAssessment\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_newParents\",\"type\":\"address[]\"},{\"name\":\"_newParentFactors\",\"type\":\"uint256[]\"}],\"name\":\"changeParents\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_user\",\"type\":\"address\"},{\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"addInitialMember\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"parentFactors\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lifetime\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"data\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"conceptRegistry\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_member\",\"type\":\"address\"}],\"name\":\"migrateMember\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_newLifetime\",\"type\":\"uint256\"}],\"name\":\"changeLifetime\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"parents\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"changeData\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"memberData\",\"outputs\":[{\"name\":\"recentAssessment\",\"type\":\"address\"},{\"name\":\"weight\",\"type\":\"uint256\"},{\"name\":\"assessmentDate\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_assessee\",\"type\":\"address\"},{\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"addMember\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getAvailableMembers\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_member\",\"type\":\"address\"}],\"name\":\"getWeight\",\"outputs\":[{\"name\":\"weight\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"cloneOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"activeBucketNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumberOfParents\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"integrateMember\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"DataSet\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"See ConceptProxy.sol for the constructor and ConceptData.sol for the storage layout\\r\",\"methods\":{\"activeBucketNumber()\":{\"return\":\"the number of the period of time (bucket) the current moment is in\"},\"addInitialMember(address,uint256)\":{\"details\":\"This is only once used once on the mew-concept during the initialization of the network.\\r\"},\"changeParents(address[],uint256[])\":{\"details\":\"The restrictions on parent-concepts here NEED to be identical to the ones in the constructor\"},\"getNumberOfAvailableMembers()\":{\"return\":\"how many members are currently available to act as assessor\"},\"getWeight(address)\":{\"return\":\"the weight used for probabilistic calling of assessors\"},\"makeAssessment(uint256,uint256,uint256,uint256)\":{\"details\":\"Also sends tokens from the msg.sender to the address of the created assessment\\r\",\"params\":{\"_cost\":\"the amount of tokens paid per assessor\\r\",\"_size\":\"the number of assessors\\r\",\"_timeLimit\":\"how long until the assessment has to be finished\\r\",\"_waitTime\":\"how long to wait for enough assessors to accept\\r\"}},\"toggleAvailability(bool)\":{\"details\":\"See AssessmentData.sol for an explanation how buckets are used to discretize time.\\r\"}}},\"userdoc\":{\"methods\":{\"addInitialMember(address,uint256)\":{\"notice\":\"Called by the distributor contract to directly add users (without an assessment)\\r\"},\"addMember(address,uint256)\":{\"notice\":\"Called by completed assessments to add the assessee as member to the concept\"},\"integrateMember()\":{\"notice\":\"Called by members of the original concept who want to migrate to this one\"},\"makeAssessment(uint256,uint256,uint256,uint256)\":{\"notice\":\"Called by anyone who wants to get assessed in this concept\\r\"},\"migrateMember(address)\":{\"notice\":\"Called by cloned concepts to delete migrated members\"},\"toggleAvailability(bool)\":{\"notice\":\"Called by members to signal that they do/do not want to be called as assessor in this concept\\r\"}},\"notice\":\"The concept contract that defines the concept, initiates assessments\\r and stores data about its members\\r\"}},\"settings\":{\"compilationTarget\":{\"/builds/fathom/assess/contracts/contracts/Concept.sol\":\"Concept\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/builds/fathom/assess/contracts/contracts/Assessment.sol\":{\"keccak256\":\"0x38e344165281f6b705d538b5b1e36c9f2000896abb0e66a0e365009dfcb154ba\",\"urls\":[\"bzzr://6de365b6fcd48d7ecb26877ce7446f74c7116a66c79f97bad235c17324787cdf\"]},\"/builds/fathom/assess/contracts/contracts/AssessmentData.sol\":{\"keccak256\":\"0xda71f848916d4c5c519b9bb0cbd80fff3ebdf66d93205bbd47aa746fb7ea3149\",\"urls\":[\"bzzr://3f315e743c548f163c24067c7e11e1f9783123d02ae96390640b65bb6664443d\"]},\"/builds/fathom/assess/contracts/contracts/AssessmentProxy.sol\":{\"keccak256\":\"0x1ad6915fbc6c7ab4d0c5a3c9fddd262ff1899b80f812ef5ef1d774dfe26dfde2\",\"urls\":[\"bzzr://803ff846e154c773e8e8f0cd69cf7142b1b7d500553f6d1c253efde0d4c51297\"]},\"/builds/fathom/assess/contracts/contracts/Concept.sol\":{\"keccak256\":\"0x89c39768cf2aa6cd14f08b619c9981fbe6140d8ed926003fa72e9a07feb81533\",\"urls\":[\"bzzr://49884001aa3460e710b5d8704b055e282703516ae945469b161edea7a091415c\"]},\"/builds/fathom/assess/contracts/contracts/ConceptData.sol\":{\"keccak256\":\"0xba5f44d67c4d25679f7ce9ae139145bca84f85ea53405ae258d1f6c79f68aef9\",\"urls\":[\"bzzr://614dbf61f171bddf5d29eb27396e012d8dae15d22314652df38a92d1b5a43f5a\"]},\"/builds/fathom/assess/contracts/contracts/ConceptProxy.sol\":{\"keccak256\":\"0xed6cf5d2434e41b7c5feef082320abfc4725347802465516760b6e082bba2fb1\",\"urls\":[\"bzzr://5e9c8a3f8da6ec7ba5eac85b39942d590b69863029310ca8dbecfed477b57cc7\"]},\"/builds/fathom/assess/contracts/contracts/ConceptRegistry.sol\":{\"keccak256\":\"0x37b9ea893f2e3714ed9e386871f16aff98621f6aac2c99214cddf1ddb286462c\",\"urls\":[\"bzzr://fe2531b7de74f5795710a510315edd555d208c8e18c7efbb5c28256aa47386f4\"]},\"/builds/fathom/assess/contracts/contracts/FathomToken.sol\":{\"keccak256\":\"0xd70c8cc96ac35367bebb4ecca938968b4b585ce5ac344540b538b4e08480a4c4\",\"urls\":[\"bzzr://be7d78ab6ae00ed2e18e7df4344cb062c79566e4b94a90502fd567e97b3af9d3\"]},\"/builds/fathom/assess/contracts/contracts/Math.sol\":{\"keccak256\":\"0x0e89dc6b2d825d93107a5c9b32312b94e18cb8e693aa8e0332a8f17d118ba207\",\"urls\":[\"bzzr://2dc75be49f09ed441c84240522225c9ceccc7577d3fad4bb5d39b0666947227c\"]},\"/builds/fathom/assess/contracts/contracts/Minter.sol\":{\"keccak256\":\"0x5c6a9bbd37b0f935ee951bf87fb8f4494555e3e98c99049c51234b383dbcf3a0\",\"urls\":[\"bzzr://a4ef613b4eb19182a63b3375aaedc1a455ce290dc23406c998742f1467a6ce1f\"]},\"/builds/fathom/assess/contracts/contracts/Proxy.sol\":{\"keccak256\":\"0xca112dd4cad6b82624ac9899cbb869884c78cf0a1b08a3efc0767d93f06a1d7c\",\"urls\":[\"bzzr://b4087ee1320cc97a872fb849fd9c7f0b1c2faf43c6b681ddcd77ad705060fcd6\"]},\"/builds/fathom/assess/contracts/contracts/ProxyFactory.sol\":{\"keccak256\":\"0x19e6c1094d0556a918710647e757f878a02750ae61d182aeae8168e864f39725\",\"urls\":[\"bzzr://ec7eeaee9c749149f541e4f61421acb4bd969344a586508a3eee9da67492df06\"]},\"/builds/fathom/assess/contracts/contracts/lib/openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x1aad84a4229d5da4b9ffb4433c58b2a91ba9ffbd7b11af0500f9a9795869d865\",\"urls\":[\"bzzr://b8e6b572cd2f7e04b58bf072ec24bbef7914c947e232a390cb8f07ffb1bc8157\"]},\"/builds/fathom/assess/contracts/contracts/lib/openzeppelin-solidity/contracts/token/ERC20/BasicToken.sol\":{\"keccak256\":\"0xc6f4c1d0822f8a8a78e0cb49fdb716acf26a7356109c4dcc6d5836b873e50b2d\",\"urls\":[\"bzzr://7f6656657ed55a5f0836a10b3e8517eddd25c0b9989c78b80a29075c304b20bd\"]},\"/builds/fathom/assess/contracts/contracts/lib/openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xe0490847690823c25e2e258c1f4689b54e6d051f784aca8ef2da8c0789f2be8a\",\"urls\":[\"bzzr://d324bd158255fbdb33d2294fd179a3b0456b72d31c2ba3212b428acfc18dcf88\"]},\"/builds/fathom/assess/contracts/contracts/lib/openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol\":{\"keccak256\":\"0x225613675e94acc479c38897f053e94f287a57730bb8a56ccae598074dd4469b\",\"urls\":[\"bzzr://80293b34ebc97ac3a32572451170e70d31c93f896cbd85d249b13362978ea11f\"]},\"/builds/fathom/assess/contracts/contracts/lib/openzeppelin-solidity/contracts/token/ERC20/StandardToken.sol\":{\"keccak256\":\"0x275f9b31e4ad7f868d8bd4a8e85e2bb68d1bed3b28e919e95df08310ff4de93d\",\"urls\":[\"bzzr://4eb59cdd2161bd6e9a02c3f0e735e285723f14963cae565c3543c38ccc3bb47d\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50611e46806100206000396000f3fe6080604052600436106101455763ffffffff60e060020a600035041663051f30eb811461014a57806305b3441014610171578063092d97641461018657806312d6094f146101d25780631684ae4d1461020057806321d39c2c1461021557806335a072911461025c5780633a415933146102985780633f99fa54146103cc57806344651d921461040557806369d24f631461042f57806373d4a13a146104445780637654e921146104ce5780637cf23317146104e3578063824989c314610516578063898572a6146105405780638da5cb5b1461056a578063902dee5d1461057f5780639107d08e1461063257806398041ea31461068d5780639f73f34d146106c6578063ac6c52511461072b578063bc2f85091461075e578063cf4f155414610773578063eaa71b2214610788578063f2fde38b1461079d578063f64f3876146107d0575b600080fd5b34801561015657600080fd5b5061015f6107e5565b60408051918252519081900360200190f35b34801561017d57600080fd5b5061015f61080a565b34801561019257600080fd5b506101b6600480360360408110156101a957600080fd5b5080359060200135610810565b60408051600160a060020a039092168252519081900360200190f35b3480156101de57600080fd5b506101fe600480360360208110156101f557600080fd5b50351515610847565b005b34801561020c57600080fd5b506101b6610b1b565b34801561022157600080fd5b506102486004803603602081101561023857600080fd5b5035600160a060020a0316610b2a565b604080519115158252519081900360200190f35b34801561026857600080fd5b506101fe6004803603608081101561027f57600080fd5b5080359060208101359060408101359060600135610b3f565b3480156102a457600080fd5b506101fe600480360360408110156102bb57600080fd5b8101906020810181356401000000008111156102d657600080fd5b8201836020820111156102e857600080fd5b8035906020019184602083028401116401000000008311171561030a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561035a57600080fd5b82018360208201111561036c57600080fd5b8035906020019184602083028401116401000000008311171561038e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610f06945050505050565b3480156103d857600080fd5b506101fe600480360360408110156103ef57600080fd5b50600160a060020a038135169060200135611314565b34801561041157600080fd5b5061015f6004803603602081101561042857600080fd5b5035611510565b34801561043b57600080fd5b5061015f61152f565b34801561045057600080fd5b50610459611535565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561049357818101518382015260200161047b565b50505050905090810190601f1680156104c05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104da57600080fd5b506101b66115c3565b3480156104ef57600080fd5b506101fe6004803603602081101561050657600080fd5b5035600160a060020a03166115d2565b34801561052257600080fd5b506101fe6004803603602081101561053957600080fd5b50356116f4565b34801561054c57600080fd5b506101b66004803603602081101561056357600080fd5b5035611749565b34801561057657600080fd5b506101b6611771565b34801561058b57600080fd5b506101fe600480360360208110156105a257600080fd5b8101906020810181356401000000008111156105bd57600080fd5b8201836020820111156105cf57600080fd5b803590602001918460018302840111640100000000831117156105f157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611780945050505050565b34801561063e57600080fd5b506106656004803603602081101561065557600080fd5b5035600160a060020a03166117e3565b60408051600160a060020a039094168452602084019290925282820152519081900360600190f35b34801561069957600080fd5b506101fe600480360360408110156106b057600080fd5b50600160a060020a03813516906020013561180e565b3480156106d257600080fd5b506106db611858565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156107175781810151838201526020016106ff565b505050509050019250505060405180910390f35b34801561073757600080fd5b5061015f6004803603602081101561074e57600080fd5b5035600160a060020a03166118d2565b34801561076a57600080fd5b506101b661191f565b34801561077f57600080fd5b5061015f61192e565b34801561079457600080fd5b5061015f611954565b3480156107a957600080fd5b506101fe600480360360208110156107c057600080fd5b5035600160a060020a031661195a565b3480156107dc57600080fd5b506101fe6119cc565b6000600c60006107f361192e565b815260208101919091526040016000205490505b90565b60045481565b600c6020528160005260406000208181548110151561082b57fe5b600091825260209091200154600160a060020a03169150829050565b600061085233611c10565b90508115610a1057336000908152600b6020526040812060020154116108e8576040805160e560020a62461bcd02815260206004820152602660248201527f4d757374206861766520612077656967687420746f20746f67676c652061766160448201527f696c61626c650000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600954336000908152600b60205260409020600301544291011161097c576040805160e560020a62461bcd02815260206004820152602e60248201527f576569676874206d757374206e6f74206265206578706972656420746f20746f60448201527f67676c6520617661696c61626c65000000000000000000000000000000000000606482015290519081900360840190fd5b60005b6005811015610a0957336000908152600b6020908152604080832085850184526001019091529020541515610a01578181016000818152600c602090815260408083208054600181810183558286528486209091018054600160a060020a031916339081179091559154918552600b8452828520958552949094019091529020555b60010161097f565b5050610b18565b60005b6005811015610b1557336000908152600b60209081526040808320858501845260010190915281205490811115610b0c578282016000908152600c60205260408120805490919082906000198101908110610a6a57fe5b6000918252602090912001548254600160a060020a039091169150819083906000198601908110610a9757fe5b60009182526020808320919091018054600160a060020a031916600160a060020a039485161790559183168152600b8083526040808320888a018085526001918201865282852089905533855292855281842092845291909101909252908120558154610b08836000198301611c7f565b5050505b50600101610a13565b50505b50565b600254600160a060020a031681565b600a6020526000908152604090205460ff1681565b6005831015610b98576040805160e560020a62461bcd02815260206004820152601f60248201527f4173736573736d656e742073697a65206d757374206265203e3d206669766500604482015290519081900360640190fd5b600254604080517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152905186860292600160a060020a0316916370a08231916024808301926020929190829003018186803b158015610bfd57600080fd5b505afa158015610c11573d6000803e3d6000fd5b505050506040513d6020811015610c2757600080fd5b50511015610c7f576040805160e560020a62461bcd02815260206004820152601560248201527f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000604482015290519081900360640190fd5b600354604080517fc10f1a750000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163c10f1a75916004808301926020929190829003018186803b158015610cdd57600080fd5b505afa158015610cf1573d6000803e3d6000fd5b505050506040513d6020811015610d0757600080fd5b5051604080517fd21c307c000000000000000000000000000000000000000000000000000000008152336004820152602481018890526044810187905260648101869052608481018590529051600160a060020a039092169163d21c307c9160a4808201926020929091908290030181600087803b158015610d8857600080fd5b505af1158015610d9c573d6000803e3d6000fd5b505050506040513d6020811015610db257600080fd5b5051600160a060020a038082166000818152600a60209081526040808320805460ff1916600117905560025481517f27234ecc00000000000000000000000000000000000000000000000000000000815233600482015260248101959095528b8b0260448601523060648601529051959650909316936327234ecc936084808501949193918390030190829087803b158015610e4d57600080fd5b505af1158015610e61573d6000803e3d6000fd5b505050506040513d6020811015610e7757600080fd5b5050604080517f2fa4f69400000000000000000000000000000000000000000000000000000000815243406004820152306024820152604481018690529051600160a060020a03831691632fa4f69491606480830192600092919082900301818387803b158015610ee757600080fd5b505af1158015610efb573d6000803e3d6000fd5b505050505050505050565b600154600160a060020a03163314610f56576040805160e560020a62461bcd0281526020600482015260116024820152600080516020611dfb833981519152604482015290519081900360640190fd5b8051825114610fd5576040805160e560020a62461bcd02815260206004820152603360248201527f4e756d626572206f6620706172656e7420636f6e6365707473206d757374206d60448201527f6174636820706172656e7420666163746f727300000000000000000000000000606482015290519081900360840190fd5b815160061161102e576040805160e560020a62461bcd02815260206004820152601060248201527f546f6f206d616e7920706172656e747300000000000000000000000000000000604482015290519081900360640190fd5b6000805b8351811015611268578351309085908390811061104b57fe5b60209081029091010151600160a060020a031614156110da576040805160e560020a62461bcd02815260206004820152602260248201527f436f6e636570742063616e6e6f7420626520706172656e7420746f206974736560448201527f6c66000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6003548451600160a060020a039091169063c18e4679908690849081106110fd57fe5b906020019060200201516040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a0316815260200191505060206040518083038186803b15801561115057600080fd5b505afa158015611164573d6000803e3d6000fd5b505050506040513d602081101561117a57600080fd5b505115156111d2576040805160e560020a62461bcd02815260206004820152601d60248201527f506172656e7420636f6e6365707420646f6573206e6f74206578697374000000604482015290519081900360640190fd5b6103e883828151811015156111e357fe5b602090810290910101511115611243576040805160e560020a62461bcd02815260206004820152601c60248201527f506172656e7420666163746f72206d757374206265203c3d3130303000000000604482015290519081900360640190fd5b828181518110151561125157fe5b602090810290910101519190910190600101611032565b506103e881146112e7576040805160e560020a62461bcd028152602060048201526024808201527f506172656e7420666163746f727320646f206e6f742061646420757020746f2060448201527f3130303000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b82516112fa906006906020860190611ca3565b50815161130e906007906020850190611d08565b50505050565b600360009054906101000a9004600160a060020a0316600160a060020a031663a51af4c56040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561136557600080fd5b505afa158015611379573d6000803e3d6000fd5b505050506040513d602081101561138f57600080fd5b5051600160a060020a031633146113f0576040805160e560020a62461bcd02815260206004820152601760248201527f4469737472696275746f7220616363657373206f6e6c79000000000000000000604482015290519081900360640190fd5b600354604080517fa51af4c500000000000000000000000000000000000000000000000000000000815290513392600160a060020a03169163a51af4c5916004808301926020929190829003018186803b15801561144d57600080fd5b505afa158015611461573d6000803e3d6000fd5b505050506040513d602081101561147757600080fd5b5051600160a060020a0316141561150c576114928282611c55565b600061149d83611c10565b905060005b600581101561130e578082016000818152600c602090815260408083208054600180820183558286528486209091018054600160a060020a031916600160a060020a038c169081179091559154918552600b845282852095855294850190925290912055016114a2565b5050565b600780548290811061151e57fe5b600091825260209091200154905081565b60095481565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156115bb5780601f10611590576101008083540402835291602001916115bb565b820191906000526020600020905b81548152906001019060200180831161159e57829003601f168201915b505050505081565b600354600160a060020a031681565b600354604080517fc18e46790000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163c18e467991602480820192602092909190829003018186803b15801561163657600080fd5b505afa15801561164a573d6000803e3d6000fd5b505050506040513d602081101561166057600080fd5b505115156116b8576040805160e560020a62461bcd02815260206004820152601360248201527f436f6e6365707420616363657373206f6e6c7900000000000000000000000000604482015290519081900360640190fd5b6116c26000610847565b600160a060020a03166000908152600b602052604081208054600160a060020a03191681556002810182905560030155565b600154600160a060020a03163314611744576040805160e560020a62461bcd0281526020600482015260116024820152600080516020611dfb833981519152604482015290519081900360640190fd5b600955565b600680548290811061175757fe5b600091825260209091200154600160a060020a0316905081565b600154600160a060020a031681565b600154600160a060020a031633146117d0576040805160e560020a62461bcd0281526020600482015260116024820152600080516020611dfb833981519152604482015290519081900360640190fd5b805161150c906008906020840190611d4f565b600b60205260009081526040902080546002820154600390920154600160a060020a03909116919083565b336000908152600a602052604090205460ff161561150c57600160a060020a0382166000908152600b602052604090208054600160a060020a0319163317905561150c8282611c55565b6060600c600061186661192e565b81526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156118c857602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116118aa575b5050505050905090565b600954600160a060020a0382166000908152600b60205260408120600301549091429101111561191a5750600160a060020a0381166000908152600b60205260409020600201545b919050565b600554600160a060020a031681565b600080600560095481151561193f57fe5b049050804281151561194d57fe5b0491505090565b60065490565b600154600160a060020a031633146119aa576040805160e560020a62461bcd0281526020600482015260116024820152600080516020611dfb833981519152604482015290519081900360640190fd5b60018054600160a060020a031916600160a060020a0392909216919091179055565b600554604080517f9107d08e0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a0390921691600091829182918591639107d08e91602480820192606092909190829003018186803b158015611a3957600080fd5b505afa158015611a4d573d6000803e3d6000fd5b505050506040513d6060811015611a6357600080fd5b5080516020820151604090920151909450909250905060008211611af7576040805160e560020a62461bcd02815260206004820152602f60248201527f4d75737420686176652061206e6f6e2d7a65726f2077656967687420696e206f60448201527f726967696e616c20636f6e636570740000000000000000000000000000000000606482015290519081900360840190fd5b6009544290820111611b79576040805160e560020a62461bcd02815260206004820152603260248201527f4173736573736d656e74206d757374206e6f74206265206f6c6465722074686160448201527f6e20636f6e63657074206c69666574696d650000000000000000000000000000606482015290519081900360840190fd5b336000818152600b60205260408082206002810186905560030184905580517f7cf23317000000000000000000000000000000000000000000000000000000008152600481019390935251600160a060020a03871692637cf2331792602480830193919282900301818387803b158015611bf257600080fd5b505af1158015611c06573d6000803e3d6000fd5b5050505050505050565b6000806005600954811515611c2157fe5b600160a060020a0385166000908152600b602052604090206003015491900491508190811515611c4d57fe5b049392505050565b600160a060020a039091166000908152600b60205260409020600281019190915542600390910155565b815481835581811115610b1557600083815260209020610b15918101908301611dbc565b828054828255906000526020600020908101928215611cf8579160200282015b82811115611cf85782518254600160a060020a031916600160a060020a03909116178255602090920191600190910190611cc3565b50611d04929150611dd6565b5090565b828054828255906000526020600020908101928215611d43579160200282015b82811115611d43578251825591602001919060010190611d28565b50611d04929150611dbc565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611d9057805160ff1916838001178555611d43565b82800160010185558215611d435791820182811115611d43578251825591602001919060010190611d28565b61080791905b80821115611d045760008155600101611dc2565b61080791905b80821115611d04578054600160a060020a0319168155600101611ddc56fe4f776e657220616363657373206f6e6c79000000000000000000000000000000a165627a7a723058208ea7df9e237ac5eaaf697b52743d5ffd9aea68b127259eb9ffb890a8e38853a80029",
  "deployedBytecode": "0x6080604052600436106101455763ffffffff60e060020a600035041663051f30eb811461014a57806305b3441014610171578063092d97641461018657806312d6094f146101d25780631684ae4d1461020057806321d39c2c1461021557806335a072911461025c5780633a415933146102985780633f99fa54146103cc57806344651d921461040557806369d24f631461042f57806373d4a13a146104445780637654e921146104ce5780637cf23317146104e3578063824989c314610516578063898572a6146105405780638da5cb5b1461056a578063902dee5d1461057f5780639107d08e1461063257806398041ea31461068d5780639f73f34d146106c6578063ac6c52511461072b578063bc2f85091461075e578063cf4f155414610773578063eaa71b2214610788578063f2fde38b1461079d578063f64f3876146107d0575b600080fd5b34801561015657600080fd5b5061015f6107e5565b60408051918252519081900360200190f35b34801561017d57600080fd5b5061015f61080a565b34801561019257600080fd5b506101b6600480360360408110156101a957600080fd5b5080359060200135610810565b60408051600160a060020a039092168252519081900360200190f35b3480156101de57600080fd5b506101fe600480360360208110156101f557600080fd5b50351515610847565b005b34801561020c57600080fd5b506101b6610b1b565b34801561022157600080fd5b506102486004803603602081101561023857600080fd5b5035600160a060020a0316610b2a565b604080519115158252519081900360200190f35b34801561026857600080fd5b506101fe6004803603608081101561027f57600080fd5b5080359060208101359060408101359060600135610b3f565b3480156102a457600080fd5b506101fe600480360360408110156102bb57600080fd5b8101906020810181356401000000008111156102d657600080fd5b8201836020820111156102e857600080fd5b8035906020019184602083028401116401000000008311171561030a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561035a57600080fd5b82018360208201111561036c57600080fd5b8035906020019184602083028401116401000000008311171561038e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610f06945050505050565b3480156103d857600080fd5b506101fe600480360360408110156103ef57600080fd5b50600160a060020a038135169060200135611314565b34801561041157600080fd5b5061015f6004803603602081101561042857600080fd5b5035611510565b34801561043b57600080fd5b5061015f61152f565b34801561045057600080fd5b50610459611535565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561049357818101518382015260200161047b565b50505050905090810190601f1680156104c05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156104da57600080fd5b506101b66115c3565b3480156104ef57600080fd5b506101fe6004803603602081101561050657600080fd5b5035600160a060020a03166115d2565b34801561052257600080fd5b506101fe6004803603602081101561053957600080fd5b50356116f4565b34801561054c57600080fd5b506101b66004803603602081101561056357600080fd5b5035611749565b34801561057657600080fd5b506101b6611771565b34801561058b57600080fd5b506101fe600480360360208110156105a257600080fd5b8101906020810181356401000000008111156105bd57600080fd5b8201836020820111156105cf57600080fd5b803590602001918460018302840111640100000000831117156105f157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611780945050505050565b34801561063e57600080fd5b506106656004803603602081101561065557600080fd5b5035600160a060020a03166117e3565b60408051600160a060020a039094168452602084019290925282820152519081900360600190f35b34801561069957600080fd5b506101fe600480360360408110156106b057600080fd5b50600160a060020a03813516906020013561180e565b3480156106d257600080fd5b506106db611858565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156107175781810151838201526020016106ff565b505050509050019250505060405180910390f35b34801561073757600080fd5b5061015f6004803603602081101561074e57600080fd5b5035600160a060020a03166118d2565b34801561076a57600080fd5b506101b661191f565b34801561077f57600080fd5b5061015f61192e565b34801561079457600080fd5b5061015f611954565b3480156107a957600080fd5b506101fe600480360360208110156107c057600080fd5b5035600160a060020a031661195a565b3480156107dc57600080fd5b506101fe6119cc565b6000600c60006107f361192e565b815260208101919091526040016000205490505b90565b60045481565b600c6020528160005260406000208181548110151561082b57fe5b600091825260209091200154600160a060020a03169150829050565b600061085233611c10565b90508115610a1057336000908152600b6020526040812060020154116108e8576040805160e560020a62461bcd02815260206004820152602660248201527f4d757374206861766520612077656967687420746f20746f67676c652061766160448201527f696c61626c650000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600954336000908152600b60205260409020600301544291011161097c576040805160e560020a62461bcd02815260206004820152602e60248201527f576569676874206d757374206e6f74206265206578706972656420746f20746f60448201527f67676c6520617661696c61626c65000000000000000000000000000000000000606482015290519081900360840190fd5b60005b6005811015610a0957336000908152600b6020908152604080832085850184526001019091529020541515610a01578181016000818152600c602090815260408083208054600181810183558286528486209091018054600160a060020a031916339081179091559154918552600b8452828520958552949094019091529020555b60010161097f565b5050610b18565b60005b6005811015610b1557336000908152600b60209081526040808320858501845260010190915281205490811115610b0c578282016000908152600c60205260408120805490919082906000198101908110610a6a57fe5b6000918252602090912001548254600160a060020a039091169150819083906000198601908110610a9757fe5b60009182526020808320919091018054600160a060020a031916600160a060020a039485161790559183168152600b8083526040808320888a018085526001918201865282852089905533855292855281842092845291909101909252908120558154610b08836000198301611c7f565b5050505b50600101610a13565b50505b50565b600254600160a060020a031681565b600a6020526000908152604090205460ff1681565b6005831015610b98576040805160e560020a62461bcd02815260206004820152601f60248201527f4173736573736d656e742073697a65206d757374206265203e3d206669766500604482015290519081900360640190fd5b600254604080517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152905186860292600160a060020a0316916370a08231916024808301926020929190829003018186803b158015610bfd57600080fd5b505afa158015610c11573d6000803e3d6000fd5b505050506040513d6020811015610c2757600080fd5b50511015610c7f576040805160e560020a62461bcd02815260206004820152601560248201527f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000604482015290519081900360640190fd5b600354604080517fc10f1a750000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163c10f1a75916004808301926020929190829003018186803b158015610cdd57600080fd5b505afa158015610cf1573d6000803e3d6000fd5b505050506040513d6020811015610d0757600080fd5b5051604080517fd21c307c000000000000000000000000000000000000000000000000000000008152336004820152602481018890526044810187905260648101869052608481018590529051600160a060020a039092169163d21c307c9160a4808201926020929091908290030181600087803b158015610d8857600080fd5b505af1158015610d9c573d6000803e3d6000fd5b505050506040513d6020811015610db257600080fd5b5051600160a060020a038082166000818152600a60209081526040808320805460ff1916600117905560025481517f27234ecc00000000000000000000000000000000000000000000000000000000815233600482015260248101959095528b8b0260448601523060648601529051959650909316936327234ecc936084808501949193918390030190829087803b158015610e4d57600080fd5b505af1158015610e61573d6000803e3d6000fd5b505050506040513d6020811015610e7757600080fd5b5050604080517f2fa4f69400000000000000000000000000000000000000000000000000000000815243406004820152306024820152604481018690529051600160a060020a03831691632fa4f69491606480830192600092919082900301818387803b158015610ee757600080fd5b505af1158015610efb573d6000803e3d6000fd5b505050505050505050565b600154600160a060020a03163314610f56576040805160e560020a62461bcd0281526020600482015260116024820152600080516020611dfb833981519152604482015290519081900360640190fd5b8051825114610fd5576040805160e560020a62461bcd02815260206004820152603360248201527f4e756d626572206f6620706172656e7420636f6e6365707473206d757374206d60448201527f6174636820706172656e7420666163746f727300000000000000000000000000606482015290519081900360840190fd5b815160061161102e576040805160e560020a62461bcd02815260206004820152601060248201527f546f6f206d616e7920706172656e747300000000000000000000000000000000604482015290519081900360640190fd5b6000805b8351811015611268578351309085908390811061104b57fe5b60209081029091010151600160a060020a031614156110da576040805160e560020a62461bcd02815260206004820152602260248201527f436f6e636570742063616e6e6f7420626520706172656e7420746f206974736560448201527f6c66000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6003548451600160a060020a039091169063c18e4679908690849081106110fd57fe5b906020019060200201516040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a0316815260200191505060206040518083038186803b15801561115057600080fd5b505afa158015611164573d6000803e3d6000fd5b505050506040513d602081101561117a57600080fd5b505115156111d2576040805160e560020a62461bcd02815260206004820152601d60248201527f506172656e7420636f6e6365707420646f6573206e6f74206578697374000000604482015290519081900360640190fd5b6103e883828151811015156111e357fe5b602090810290910101511115611243576040805160e560020a62461bcd02815260206004820152601c60248201527f506172656e7420666163746f72206d757374206265203c3d3130303000000000604482015290519081900360640190fd5b828181518110151561125157fe5b602090810290910101519190910190600101611032565b506103e881146112e7576040805160e560020a62461bcd028152602060048201526024808201527f506172656e7420666163746f727320646f206e6f742061646420757020746f2060448201527f3130303000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b82516112fa906006906020860190611ca3565b50815161130e906007906020850190611d08565b50505050565b600360009054906101000a9004600160a060020a0316600160a060020a031663a51af4c56040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561136557600080fd5b505afa158015611379573d6000803e3d6000fd5b505050506040513d602081101561138f57600080fd5b5051600160a060020a031633146113f0576040805160e560020a62461bcd02815260206004820152601760248201527f4469737472696275746f7220616363657373206f6e6c79000000000000000000604482015290519081900360640190fd5b600354604080517fa51af4c500000000000000000000000000000000000000000000000000000000815290513392600160a060020a03169163a51af4c5916004808301926020929190829003018186803b15801561144d57600080fd5b505afa158015611461573d6000803e3d6000fd5b505050506040513d602081101561147757600080fd5b5051600160a060020a0316141561150c576114928282611c55565b600061149d83611c10565b905060005b600581101561130e578082016000818152600c602090815260408083208054600180820183558286528486209091018054600160a060020a031916600160a060020a038c169081179091559154918552600b845282852095855294850190925290912055016114a2565b5050565b600780548290811061151e57fe5b600091825260209091200154905081565b60095481565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156115bb5780601f10611590576101008083540402835291602001916115bb565b820191906000526020600020905b81548152906001019060200180831161159e57829003601f168201915b505050505081565b600354600160a060020a031681565b600354604080517fc18e46790000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163c18e467991602480820192602092909190829003018186803b15801561163657600080fd5b505afa15801561164a573d6000803e3d6000fd5b505050506040513d602081101561166057600080fd5b505115156116b8576040805160e560020a62461bcd02815260206004820152601360248201527f436f6e6365707420616363657373206f6e6c7900000000000000000000000000604482015290519081900360640190fd5b6116c26000610847565b600160a060020a03166000908152600b602052604081208054600160a060020a03191681556002810182905560030155565b600154600160a060020a03163314611744576040805160e560020a62461bcd0281526020600482015260116024820152600080516020611dfb833981519152604482015290519081900360640190fd5b600955565b600680548290811061175757fe5b600091825260209091200154600160a060020a0316905081565b600154600160a060020a031681565b600154600160a060020a031633146117d0576040805160e560020a62461bcd0281526020600482015260116024820152600080516020611dfb833981519152604482015290519081900360640190fd5b805161150c906008906020840190611d4f565b600b60205260009081526040902080546002820154600390920154600160a060020a03909116919083565b336000908152600a602052604090205460ff161561150c57600160a060020a0382166000908152600b602052604090208054600160a060020a0319163317905561150c8282611c55565b6060600c600061186661192e565b81526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156118c857602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116118aa575b5050505050905090565b600954600160a060020a0382166000908152600b60205260408120600301549091429101111561191a5750600160a060020a0381166000908152600b60205260409020600201545b919050565b600554600160a060020a031681565b600080600560095481151561193f57fe5b049050804281151561194d57fe5b0491505090565b60065490565b600154600160a060020a031633146119aa576040805160e560020a62461bcd0281526020600482015260116024820152600080516020611dfb833981519152604482015290519081900360640190fd5b60018054600160a060020a031916600160a060020a0392909216919091179055565b600554604080517f9107d08e0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a0390921691600091829182918591639107d08e91602480820192606092909190829003018186803b158015611a3957600080fd5b505afa158015611a4d573d6000803e3d6000fd5b505050506040513d6060811015611a6357600080fd5b5080516020820151604090920151909450909250905060008211611af7576040805160e560020a62461bcd02815260206004820152602f60248201527f4d75737420686176652061206e6f6e2d7a65726f2077656967687420696e206f60448201527f726967696e616c20636f6e636570740000000000000000000000000000000000606482015290519081900360840190fd5b6009544290820111611b79576040805160e560020a62461bcd02815260206004820152603260248201527f4173736573736d656e74206d757374206e6f74206265206f6c6465722074686160448201527f6e20636f6e63657074206c69666574696d650000000000000000000000000000606482015290519081900360840190fd5b336000818152600b60205260408082206002810186905560030184905580517f7cf23317000000000000000000000000000000000000000000000000000000008152600481019390935251600160a060020a03871692637cf2331792602480830193919282900301818387803b158015611bf257600080fd5b505af1158015611c06573d6000803e3d6000fd5b5050505050505050565b6000806005600954811515611c2157fe5b600160a060020a0385166000908152600b602052604090206003015491900491508190811515611c4d57fe5b049392505050565b600160a060020a039091166000908152600b60205260409020600281019190915542600390910155565b815481835581811115610b1557600083815260209020610b15918101908301611dbc565b828054828255906000526020600020908101928215611cf8579160200282015b82811115611cf85782518254600160a060020a031916600160a060020a03909116178255602090920191600190910190611cc3565b50611d04929150611dd6565b5090565b828054828255906000526020600020908101928215611d43579160200282015b82811115611d43578251825591602001919060010190611d28565b50611d04929150611dbc565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611d9057805160ff1916838001178555611d43565b82800160010185558215611d435791820182811115611d43578251825591602001919060010190611d28565b61080791905b80821115611d045760008155600101611dc2565b61080791905b80821115611d04578054600160a060020a0319168155600101611ddc56fe4f776e657220616363657373206f6e6c79000000000000000000000000000000a165627a7a723058208ea7df9e237ac5eaaf697b52743d5ffd9aea68b127259eb9ffb890a8e38853a80029",
  "sourceMap": "429:9342:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;429:9342:3;;;;;;;",
  "deployedSourceMap": "429:9342:3:-;;;;;;;;;-1:-1:-1;;;429:9342:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8459:127;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8459:127:3;;;;;;;;;;;;;;;;;;;;899:24:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;899:24:4;;;;2701:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2701:42:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2701:42:4;;;;;;;;;;;;-1:-1:-1;;;;;2701:42:4;;;;;;;;;;;;;;3670:1706:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3670:1706:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3670:1706:3;;;;;;;760:30:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;760:30:4;;;;1579:49;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1579:49:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1579:49:4;-1:-1:-1;;;;;1579:49:4;;;;;;;;;;;;;;;;;;;;;2704:735:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2704:735:3;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2704:735:3;;;;;;;;;;;;;;;;;;6730:1017;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6730:1017:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6730:1017:3;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;6730:1017:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6730:1017:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6730:1017:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6730:1017:3;;;;;;;;-1:-1:-1;6730:1017:3;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;6730:1017:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6730:1017:3;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6730:1017:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6730:1017:3;;-1:-1:-1;6730:1017:3;;-1:-1:-1;;;;;6730:1017:3;1557:571;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1557:571:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1557:571:3;;;;;;;;;1206:27:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1206:27:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1206:27:4;;;1463:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1463:20:4;;;;1326:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1326:17:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1326:17:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;797:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;797:38:4;;;;1119:214:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1119:214:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1119:214:3;-1:-1:-1;;;;;1119:214:3;;;7853:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7853:104:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7853:104:3;;;1076:24:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1076:24:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1076:24:4;;;733:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;733:20:4;;;;7755:90:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7755:90:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7755:90:3;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;7755:90:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7755:90:3;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7755:90:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;7755:90:3;;-1:-1:-1;7755:90:3;;-1:-1:-1;;;;;7755:90:3;2090:49:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2090:49:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2090:49:4;-1:-1:-1;;;;;2090:49:4;;;;;;;-1:-1:-1;;;;;2090:49:4;;;;;;;;;;;;;;;;;;;;;;;;;806:235:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;806:235:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;806:235:3;;;;;;;;;8594:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8594:125:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8594:125:3;;;;;;;;;;;;;;;;;8168:206;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8168:206:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8168:206:3;-1:-1:-1;;;;;8168:206:3;;;997:22:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;997:22:4;;;;8915:243:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8915:243:3;;;;8727:96;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8727:96:3;;;;6514:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6514:101:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6514:101:3;-1:-1:-1;;;;;6514:101:3;;;5475:900;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5475:900:3;;;;8459:127;8518:4;8542:7;:29;8550:20;:18;:20::i;:::-;8542:29;;;;;;;;;;;-1:-1:-1;8542:29:3;:36;;-1:-1:-1;8459:127:3;;:::o;899:24:4:-;;;;:::o;2701:42::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2701:42:4;;-1:-1:-1;2701:42:4;;-1:-1:-1;2701:42:4:o;3670:1706:3:-;3821:16;3841:29;3859:10;3841:17;:29::i;:::-;3821:49;;3885:10;3881:800;;;3931:10;3952:1;3920:22;;;:10;:22;;;;;:29;;;:33;3912:84;;;;;-1:-1:-1;;;;;3912:84:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4059:8;;4030:10;4019:22;;;;:10;:22;;;;;:37;;;4070:3;4019:48;;:54;4011:113;;;;;-1:-1:-1;;;;;4011:113:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4256:6;4251:398;3173:1:4;4264::3;:16;4251:398;;;4393:10;4382:22;;;;:10;:22;;;;;;;;4419:15;;;4382:53;;:36;;:53;;;;;;:58;4378:256;;;4473:15;;;4465:24;;;;:7;:24;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;4465:41:3;;;;;;;;;;;-1:-1:-1;;;;;;4465:41:3;4495:10;4465:41;;;;;;4585:31;;4529:22;;;:10;:22;;;;;:53;;;:36;;;;:53;;;;;:87;4378:256;4282:3;;4251:398;;;;4663:7;;;3881:800;4731:7;4726:643;3173:1:4;4740:2:3;:17;4726:643;;;4804:10;4780;4793:22;;;:10;:22;;;;;;;;4830:16;;;4793:54;;:36;;:54;;;;;;;4953:9;;4949:409;;;5018:16;;;4983:24;5010:25;;;:7;:25;;;;;5082:13;;5010:25;;4983:24;5010:25;;-1:-1:-1;;5082:16:3;;;5075:24;;;;;;;;;;;;;;;;5120:17;;-1:-1:-1;;;;;5075:24:3;;;;-1:-1:-1;5075:24:3;;5120:6;;-1:-1:-1;;5127:9:3;;;5120:17;;;;;;;;;;;;;;;;;;:30;;-1:-1:-1;;;;;;5120:30:3;-1:-1:-1;;;;;5120:30:3;;;;;;5169:22;;;;;:10;:22;;;;;;;5206:16;;;5169:54;;;-1:-1:-1;5169:36:3;;;:54;;;;;:62;;;5261:10;5250:22;;;;;;;;:54;;;:36;;;;:54;;;;;;:58;5327:15;;;;-1:-1:-1;;5327:15:3;;;:::i;:::-;;4949:409;;;-1:-1:-1;4759:4:3;;4726:643;;;;3670:1706;;;:::o;760:30:4:-;;;-1:-1:-1;;;;;760:30:4;;:::o;1579:49::-;;;;;;;;;;;;;;;:::o;2704:735:3:-;2820:1;2811:10;;;2803:54;;;;;-1:-1:-1;;;;;2803:54:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;2876:11;;:33;;;;;;2898:10;2876:33;;;;;;2912:11;;;;-1:-1:-1;;;;;2876:11:3;;:21;;:33;;;;;;;;;;;;;;:11;:33;;;5:2:-1;;;;30:1;27;20:12;5:2;2876:33:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2876:33:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2876:33:3;:47;;2868:81;;;;;-1:-1:-1;;;;;2868:81:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;2993:15;;:30;;;;;;;;2962:28;;-1:-1:-1;;;;;2993:15:3;;:28;;:30;;;;;;;;;;;;;;:15;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;2993:30:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2993:30:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2993:30:3;:172;;;;;;3055:10;2993:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2993:47:3;;;;;;:172;;;;;:30;;:172;;;;;;;;-1:-1:-1;2993:47:3;:172;;;5:2:-1;;;;30:1;27;20:12;5:2;2993:172:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2993:172:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2993:172:3;-1:-1:-1;;;;;3176:38:3;;;;;;;:16;2993:172;3176:38;;;;;;;:45;;-1:-1:-1;;3176:45:3;3217:4;3176:45;;;3232:11;;:87;;;;;3256:10;3232:87;;;;;;;;;;;3290:13;;;3232:87;;;;3313:4;3232:87;;;;;;2993:172;;-1:-1:-1;3232:11:3;;;;:23;;:87;;;;;2993:172;;3232:87;;;;;;;;:11;:87;;;5:2:-1;;;;30:1;27;20:12;5:2;3232:87:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3232:87:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;3330:101:3;;;;;;3394:12;3384:23;3330:101;;;;3418:4;3330:101;;;;;;;;;;;;-1:-1:-1;;;;;3330:48:3;;;;;:101;;;;;-1:-1:-1;;3330:101:3;;;;;;;-1:-1:-1;3330:48:3;:101;;;5:2:-1;;;;30:1;27;20:12;5:2;3330:101:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3330:101:3;;;;2704:735;;;;;:::o;6730:1017::-;524:5;;-1:-1:-1;;;;;524:5:3;510:10;:19;502:49;;;;;-1:-1:-1;;;;;502:49:3;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;502:49:3;;;;;;;;;;;;;;;6924:24;;6902:18;;:46;6894:133;;;;;-1:-1:-1;;;;;6894:133:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7046:18;;7067:1;-1:-1:-1;7038:51:3;;;;;-1:-1:-1;;;;;7038:51:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;7146:23;;7184:392;7203:11;:18;7199:1;:22;7184:392;;;7251:14;;7277:4;;7251:11;;7263:1;;7251:14;;;;;;;;;;;;;;;-1:-1:-1;;;;;7251:31:3;;;7243:78;;;;;-1:-1:-1;;;;;7243:78:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7344:15;;7374:14;;-1:-1:-1;;;;;7344:15:3;;;;:29;;7374:11;;7386:1;;7374:14;;;;;;;;;;;;;;7344:45;;;;;-1:-1:-1;;;7344:45:3;;;;;;;-1:-1:-1;;;;;7344:45:3;-1:-1:-1;;;;;7344:45:3;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7344:45:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7344:45:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7344:45:3;7336:87;;;;;;;-1:-1:-1;;;;;7336:87:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;7470:4;7446:17;7464:1;7446:20;;;;;;;;;;;;;;;;;;;:28;;7438:69;;;;;-1:-1:-1;;;;;7438:69:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;7544:17;7562:1;7544:20;;;;;;;;;;;;;;;;;;;7522:42;;;;;7223:3;;7184:392;;;-1:-1:-1;7616:4:3;7594:26;;7586:75;;;;;-1:-1:-1;;;;;7586:75:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7674:21;;;;:7;;:21;;;;;:::i;:::-;-1:-1:-1;7706:33:3;;;;:13;;:33;;;;;:::i;:::-;;562:1;6730:1017;;:::o;1557:571::-;1654:15;;;;;;;;;-1:-1:-1;;;;;1654:15:3;-1:-1:-1;;;;;1654:34:3;;:36;;;;;-1:-1:-1;;;1654:36:3;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1654:36:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1654:36:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1654:36:3;-1:-1:-1;;;;;1640:50:3;:10;:50;1632:86;;;;;-1:-1:-1;;;;;1632:86:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;1733:15;;:36;;;;;;;;1773:10;;-1:-1:-1;;;;;1733:15:3;;:34;;:36;;;;;;;;;;;;;;:15;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;1733:36:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1733:36:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1733:36:3;-1:-1:-1;;;;;1733:50:3;;1729:392;;;1800:25;1810:5;1817:7;1800:9;:25::i;:::-;1840:16;1859:24;1877:5;1859:17;:24::i;:::-;1840:43;-1:-1:-1;1903:6:3;1898:212;3173:1:4;1915::3;:16;1898:212;;;1965:15;;;1957:24;;;;:7;:24;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;1957:36:3;;;;;;;;;;;-1:-1:-1;;;;;;1957:36:3;-1:-1:-1;;;;;1957:36:3;;;;;;;;2063:31;;2012:17;;;:10;:17;;;;;:48;;;:31;;;:48;;;;;;:82;1933:3;1898:212;;1729:392;1557:571;;:::o;1206:27:4:-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1206:27:4;:::o;1463:20::-;;;;:::o;1326:17::-;;;;;;;;;;;;;;;-1:-1:-1;;1326:17:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;797:38::-;;;-1:-1:-1;;;;;797:38:4;;:::o;1119:214:3:-;1187:15;;:41;;;;;;1217:10;1187:41;;;;;;-1:-1:-1;;;;;1187:15:3;;;;:29;;:41;;;;;;;;;;;;;;;:15;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;1187:41:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1187:41:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1187:41:3;1179:73;;;;;;;-1:-1:-1;;;;;1179:73:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;1263:25;1282:5;1263:18;:25::i;:::-;-1:-1:-1;;;;;1306:19:3;;;;;:10;:19;;;;;1299:26;;-1:-1:-1;;;;;;1299:26:3;;;;;;;;;;;;1119:214::o;7853:104::-;524:5;;-1:-1:-1;;;;;524:5:3;510:10;:19;502:49;;;;;-1:-1:-1;;;;;502:49:3;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;502:49:3;;;;;;;;;;;;;;;7926:8;:23;7853:104::o;1076:24:4:-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1076:24:4;;-1:-1:-1;1076:24:4;:::o;733:20::-;;;-1:-1:-1;;;;;733:20:4;;:::o;7755:90:3:-;524:5;;-1:-1:-1;;;;;524:5:3;510:10;:19;502:49;;;;;-1:-1:-1;;;;;502:49:3;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;502:49:3;;;;;;;;;;;;;;;7825:12;;;;:4;;:12;;;;;:::i;2090:49:4:-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2090:49:4;;;;;;:::o;806:235:3:-;899:10;882:28;;;;:16;:28;;;;;;;;878:156;;;-1:-1:-1;;;;;927:21:3;;;;;;:10;:21;;;;;:51;;-1:-1:-1;;;;;;927:51:3;968:10;927:51;;;993:29;938:9;1014:7;993:9;:29::i;8594:125::-;8646:16;8682:7;:29;8690:20;:18;:20::i;:::-;8682:29;;;;;;;;;;;8675:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8675:36:3;;;;;;;;;;;;;;;;;;;;;;;8594:125;:::o;8168:206::-;8289:8;;-1:-1:-1;;;;;8252:19:3;;8224:11;8252:19;;;:10;:19;;;;;:34;;;8224:11;;8300:3;8252:45;;:51;8248:119;;;-1:-1:-1;;;;;;8329:19:3;;;;;;:10;:19;;;;;:26;;;8248:119;8168:206;;;:::o;997:22:4:-;;;-1:-1:-1;;;;;997:22:4;;:::o;8915:243:3:-;8965:4;9071:17;3173:1:4;9091:8:3;;:23;;;;;;;;9071:43;;9138:12;9132:3;:18;;;;;;;;9125:25;;;8915:243;:::o;8727:96::-;8801:7;:14;8727:96;:::o;6514:101::-;524:5;;-1:-1:-1;;;;;524:5:3;510:10;:19;502:49;;;;;-1:-1:-1;;;;;502:49:3;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;502:49:3;;;;;;;;;;;;;;;6590:5;:17;;-1:-1:-1;;;;;;6590:17:3;-1:-1:-1;;;;;6590:17:3;;;;;;;;;;6514:101::o;5475:900::-;5547:7;;5698:31;;;;;;5718:10;5698:31;;;;;;-1:-1:-1;;;;;5547:7:3;;;;5520:16;;;;;;5547:7;;5698:19;;:31;;;;;;;;;;;;;;;5547:7;5698:31;;;5:2:-1;;;;30:1;27;20:12;5:2;5698:31:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5698:31:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5698:31:3;;;;;;;;;;;;;-1:-1:-1;5698:31:3;;-1:-1:-1;5698:31:3;-1:-1:-1;5759:1:3;5750:10;;5742:70;;;;;-1:-1:-1;;;;;5742:70:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5848:8;;5859:3;5831:25;;;:31;5823:94;;;;;-1:-1:-1;;;;;5823:94:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6107:10;6096:22;;;;:10;:22;;;;;;:29;;;:38;;;6145:37;;:54;;;6212:34;;;;;;;;;;;;;-1:-1:-1;;;;;6212:22:3;;;;;:34;;;;;6096:22;;6212:34;;;;;6096:22;6212;:34;;;5:2:-1;;;;30:1;27;20:12;5:2;6212:34:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6212:34:3;;;;5475:900;;;;:::o;9398:197::-;9462:4;9479:17;3173:1:4;9499:8:3;;:23;;;;;;;-1:-1:-1;;;;;9540:17:3;;;;;;:10;:17;;;;;:32;;;9499:23;;;;-1:-1:-1;9499:23:3;;9540:47;;;;;;;;;9398:197;-1:-1:-1;;;9398:197:3:o;9603:165::-;-1:-1:-1;;;;;9673:19:3;;;;;;;:10;:19;;;;;:26;;;:36;;;;9757:3;9720:34;;;;:40;9603:165::o;429:9342::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;429:9342:3;-1:-1:-1;;;;;429:9342:3;;;;;;;;;;;-1:-1:-1;429:9342:3;;;;;;;-1:-1:-1;429:9342:3;;;-1:-1:-1;429:9342:3;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;429:9342:3;;;-1:-1:-1;429:9342:3;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;429:9342:3;;;;;;",
  "source": "pragma solidity ^0.5.0;\r\n\r\nimport \"./FathomToken.sol\";\r\nimport \"./ConceptRegistry.sol\";\r\nimport \"./Assessment.sol\";\r\nimport \"./AssessmentData.sol\";\r\nimport \"./Math.sol\";\r\nimport \"./ConceptData.sol\";\r\n\r\n\r\n/**\r\n   @notice The concept contract that defines the concept, initiates assessments\r\n     and stores data about its members\r\n    @dev See ConceptProxy.sol for the constructor and ConceptData.sol for the storage layout\r\n */\r\ncontract Concept is ConceptData {\r\n\r\n    modifier onlyOwner() {\r\n        require(msg.sender == owner, \"Owner access only\");\r\n        _;\r\n    }\r\n\r\n    // ********************************************\r\n    // EXTERNAL FUNCTIONS\r\n    // ********************************************\r\n    /// @notice Called by completed assessments to add the assessee as member to the concept\r\n    function addMember(address _assessee, uint _weight) external {\r\n        if (assessmentExists[msg.sender]) {\r\n            memberData[_assessee].recentAssessment = msg.sender;\r\n            addWeight(_assessee, _weight);\r\n        }\r\n    }\r\n\r\n    /// @notice Called by cloned concepts to delete migrated members\r\n    function migrateMember(address _member) external {\r\n        require(conceptRegistry.conceptExists(msg.sender), \"Concept access only\");\r\n        toggleAvailability(false);\r\n        delete memberData[_member];\r\n    }\r\n\r\n    /**\r\n       @notice Called by the distributor contract to directly add users (without an assessment)\r\n       @dev This is only once used once on the mew-concept during the initialization of the network.\r\n    */\r\n    function addInitialMember(address _user, uint _weight) external {\r\n        require(msg.sender == conceptRegistry.distributorAddress(), \"Distributor access only\");\r\n        if (conceptRegistry.distributorAddress() == msg.sender) {\r\n            addWeight(_user, _weight);\r\n            uint startBucket = startBucketNumber(_user);\r\n            for (uint i = 0; i < N_OF_BUCKETS; i++) {\r\n                buckets[startBucket + i].push(_user);\r\n                memberData[_user].bucketIndices[startBucket + i] = buckets[startBucket + i].length;\r\n            }\r\n        }\r\n    }\r\n\r\n    // ********************************************\r\n    // PUBLIC FUNCTIONS\r\n    // ********************************************\r\n    /**\r\n       @notice Called by anyone who wants to get assessed in this concept\r\n       @param _size the number of assessors\r\n       @param _cost the amount of tokens paid per assessor\r\n       @param _waitTime how long to wait for enough assessors to accept\r\n       @param _timeLimit how long until the assessment has to be finished\r\n       @dev Also sends tokens from the msg.sender to the address of the created assessment\r\n    */\r\n    function makeAssessment(uint _cost, uint _size, uint _waitTime, uint _timeLimit) public {\r\n        require(_size >= 5, \"Assessment size must be >= five\");\r\n        require(fathomToken.balanceOf(msg.sender) >=_cost*_size, \"Token balance too low\");\r\n\r\n        address newAssessmentAddress = conceptRegistry.proxyFactory().createAssessment(\r\n            msg.sender,\r\n            _cost,\r\n            _size,\r\n            _waitTime,\r\n            _timeLimit\r\n        );\r\n        assessmentExists[newAssessmentAddress] = true;\r\n        fathomToken.takeBalance(msg.sender, newAssessmentAddress, _cost * _size, address(this));\r\n        Assessment(newAssessmentAddress).setAssessorPool(uint(blockhash(block.number)), address(this), _size);\r\n    }\r\n\r\n    /**\r\n       @notice Called by members to signal that they do/do not want to be called as assessor in this concept\r\n       @dev See AssessmentData.sol for an explanation how buckets are used to discretize time.\r\n    */\r\n    function toggleAvailability(bool _available) public {\r\n        // startBucket: the first period of time (bucket) they caller is available in.\r\n        uint startBucket =  startBucketNumber(msg.sender);\r\n        if (_available) {\r\n            require(memberData[msg.sender].weight > 0, 'Must have a weight to toggle available');\r\n            require(memberData[msg.sender].assessmentDate + lifetime > now, 'Weight must not be expired to toggle available');\r\n            // REFACTOR this could be changed to only affect the buckets that are still live (not in the past)\r\n            for (uint i; i < N_OF_BUCKETS; i++) {\r\n                // add member to bucket, if they are not already in it\r\n                if (memberData[msg.sender].bucketIndices[startBucket + i] == 0) {\r\n                    buckets[startBucket + i].push(msg.sender);\r\n                    memberData[msg.sender].bucketIndices[startBucket + i] = buckets[startBucket + i].length;\r\n              }\r\n            }\r\n            return;\r\n        }\r\n\r\n        // Else set unavailable\r\n        for (uint bi; bi < N_OF_BUCKETS; bi++) {\r\n            uint index = memberData[msg.sender].bucketIndices[startBucket + bi];\r\n            // remove member from list if they are in it (index 0 says they are not!)\r\n            if (index > 0) {\r\n                address[] storage bucket = buckets[startBucket + bi];\r\n                address lastMember = bucket[bucket.length -1];\r\n\r\n                bucket[index - 1] = lastMember;\r\n                memberData[lastMember].bucketIndices[startBucket + bi] = index;\r\n                memberData[msg.sender].bucketIndices[startBucket + bi] = 0;\r\n                bucket.length--;\r\n            }\r\n        }\r\n    }\r\n\r\n    /// @notice Called by members of the original concept who want to migrate to this one\r\n    function integrateMember() public {\r\n        Concept original = Concept(cloneOf);\r\n        address recentAssessment;\r\n        uint weight;\r\n        uint assessmentDate;\r\n        (recentAssessment, weight, assessmentDate) = original.memberData(msg.sender);\r\n\r\n        require(weight > 0, \"Must have a non-zero weight in original concept\");\r\n        require(assessmentDate + lifetime > now, \"Assessment must not be older than concept lifetime\");\r\n        // Initial Members are not allowed to migrate\r\n        /* require(recentAssessment != address(0x0), \"Member must have an assessment in order to migrate\") */\r\n\r\n        memberData[msg.sender].weight = weight;\r\n        memberData[msg.sender].assessmentDate = assessmentDate;\r\n\r\n        original.migrateMember(msg.sender);\r\n\r\n        // by default, members are not available in the new concept\r\n        // if (available) toggleAvailable(true);\r\n    }\r\n\r\n    // ********************************************\r\n    // SETTER FUNCTIONS\r\n    // ********************************************\r\n    function transferOwnership(address _newOwner) public onlyOwner() {\r\n        owner = _newOwner;\r\n    }\r\n\r\n    /// @dev The restrictions on parent-concepts here NEED to be identical to the ones in the constructor\r\n    function changeParents(\r\n        address[] memory _newParents,\r\n        uint[] memory _newParentFactors\r\n    )\r\n        public\r\n        onlyOwner()\r\n    {\r\n        require(_newParents.length == _newParentFactors.length,\r\n            \"Number of parent concepts must match parent factors\"\r\n        );\r\n        require(_newParents.length < 6, \"Too many parents\"); // NOTE: this value is a working assumption\r\n\r\n        uint sumOfParentFactors = 0;\r\n        for (uint j=0; j < _newParents.length; j++) {\r\n            require(_newParents[j] != address(this), \"Concept cannot be parent to itself\");\r\n            require(conceptRegistry.conceptExists(_newParents[j]), \"Parent concept does not exist\");\r\n            require(_newParentFactors[j] <= 1000, \"Parent factor must be <=1000\");\r\n            sumOfParentFactors += _newParentFactors[j];\r\n        }\r\n        require(sumOfParentFactors == 1000, \"Parent factors do not add up to 1000\");\r\n\r\n        parents = _newParents;\r\n        parentFactors = _newParentFactors;\r\n    }\r\n\r\n    function changeData(bytes memory _data) public onlyOwner() {\r\n        data = _data;\r\n    }\r\n\r\n    function changeLifetime(uint _newLifetime) public onlyOwner() {\r\n        lifetime = _newLifetime;\r\n    }\r\n\r\n    // ********************************************\r\n    // GETTER FUNCTIONS\r\n    // ********************************************\r\n    /// @return the weight used for probabilistic calling of assessors\r\n    function getWeight(address _member) public view returns(uint weight) {\r\n        if (memberData[_member].assessmentDate + lifetime > now) {\r\n            weight = memberData[_member].weight;\r\n        }\r\n    }\r\n\r\n    /// @return how many members are currently available to act as assessor\r\n    function getNumberOfAvailableMembers() public view returns(uint) {\r\n        return buckets[activeBucketNumber()].length;\r\n    }\r\n\r\n    function getAvailableMembers () public view returns(address[] memory) {\r\n        return buckets[activeBucketNumber()];\r\n    }\r\n\r\n    function getNumberOfParents() public view returns(uint) {\r\n        return parents.length;\r\n    }\r\n\r\n    /// @return the number of the period of time (bucket) the current moment is in\r\n    function activeBucketNumber() public view returns(uint) {\r\n        // resolution or bucketLength: how many seconds are discretized into one bucket\r\n        uint bucketLength = lifetime / N_OF_BUCKETS;\r\n        return now / bucketLength;\r\n    }\r\n\r\n    // ********************************************\r\n    // INTERNAL FUNCTIONS\r\n    // ********************************************\r\n    /// @return the number of the first period of time (bucket) that a member can be available in\r\n    function startBucketNumber(address _user) internal view returns(uint) {\r\n        uint bucketLength = lifetime / N_OF_BUCKETS;\r\n        return memberData[_user].assessmentDate / bucketLength;\r\n    }\r\n\r\n    function addWeight(address _member, uint _weight) internal {\r\n        memberData[_member].weight = _weight;\r\n        memberData[_member].assessmentDate = now;\r\n    }\r\n}\r\n",
  "sourcePath": "/builds/fathom/assess/contracts/contracts/Concept.sol",
  "ast": {
    "absolutePath": "/builds/fathom/assess/contracts/contracts/Concept.sol",
    "exportedSymbols": {
      "Concept": [
        2247
      ]
    },
    "id": 2248,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1525,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:3"
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/FathomToken.sol",
        "file": "./FathomToken.sol",
        "id": 1526,
        "nodeType": "ImportDirective",
        "scope": 2248,
        "sourceUnit": 3063,
        "src": "27:27:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/ConceptRegistry.sol",
        "file": "./ConceptRegistry.sol",
        "id": 1527,
        "nodeType": "ImportDirective",
        "scope": 2248,
        "sourceUnit": 2683,
        "src": "56:31:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/Assessment.sol",
        "file": "./Assessment.sol",
        "id": 1528,
        "nodeType": "ImportDirective",
        "scope": 2248,
        "sourceUnit": 1296,
        "src": "89:26:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/AssessmentData.sol",
        "file": "./AssessmentData.sol",
        "id": 1529,
        "nodeType": "ImportDirective",
        "scope": 2248,
        "sourceUnit": 1439,
        "src": "117:30:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/Math.sol",
        "file": "./Math.sol",
        "id": 1530,
        "nodeType": "ImportDirective",
        "scope": 2248,
        "sourceUnit": 3285,
        "src": "149:20:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/ConceptData.sol",
        "file": "./ConceptData.sol",
        "id": 1531,
        "nodeType": "ImportDirective",
        "scope": 2248,
        "sourceUnit": 2366,
        "src": "171:27:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1532,
              "name": "ConceptData",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2313,
              "src": "449:11:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ConceptData_$2313",
                "typeString": "contract ConceptData"
              }
            },
            "id": 1533,
            "nodeType": "InheritanceSpecifier",
            "src": "449:11:3"
          }
        ],
        "contractDependencies": [
          2261,
          2313,
          5139
        ],
        "contractKind": "contract",
        "documentation": "@notice The concept contract that defines the concept, initiates assessments\r\nand stores data about its members\r\n@dev See ConceptProxy.sol for the constructor and ConceptData.sol for the storage layout\r",
        "fullyImplemented": true,
        "id": 2247,
        "linearizedBaseContracts": [
          2247,
          2313,
          2261,
          5139
        ],
        "name": "Concept",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 1544,
              "nodeType": "Block",
              "src": "491:80:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1539,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1536,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5967,
                            "src": "510:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "510:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1538,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2267,
                          "src": "524:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "510:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f776e657220616363657373206f6e6c79",
                        "id": 1540,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "531:19:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cbb7cbf9a2b22f5a3e435e50b81af3232ae86a517b686cbee2d424fa6ae6bcc9",
                          "typeString": "literal_string \"Owner access only\""
                        },
                        "value": "Owner access only"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cbb7cbf9a2b22f5a3e435e50b81af3232ae86a517b686cbee2d424fa6ae6bcc9",
                          "typeString": "literal_string \"Owner access only\""
                        }
                      ],
                      "id": 1535,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "502:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1541,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "502:49:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1542,
                  "nodeType": "ExpressionStatement",
                  "src": "502:49:3"
                },
                {
                  "id": 1543,
                  "nodeType": "PlaceholderStatement",
                  "src": "562:1:3"
                }
              ]
            },
            "documentation": null,
            "id": 1545,
            "name": "onlyOwner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1534,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "488:2:3"
            },
            "src": "470:101:3",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1571,
              "nodeType": "Block",
              "src": "867:174:3",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1552,
                      "name": "assessmentExists",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2289,
                      "src": "882:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      }
                    },
                    "id": 1555,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1553,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5967,
                        "src": "899:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1554,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "899:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "882:28:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1570,
                  "nodeType": "IfStatement",
                  "src": "878:156:3",
                  "trueBody": {
                    "id": 1569,
                    "nodeType": "Block",
                    "src": "912:122:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1562,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1556,
                                "name": "memberData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2304,
                                "src": "927:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                                  "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                                }
                              },
                              "id": 1558,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1557,
                                "name": "_assessee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1547,
                                "src": "938:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "927:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                                "typeString": "struct ConceptData.MemberData storage ref"
                              }
                            },
                            "id": 1559,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "recentAssessment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2291,
                            "src": "927:38:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1560,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5967,
                              "src": "968:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1561,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "968:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "927:51:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1563,
                        "nodeType": "ExpressionStatement",
                        "src": "927:51:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1565,
                              "name": "_assessee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1547,
                              "src": "1003:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1566,
                              "name": "_weight",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1549,
                              "src": "1014:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1564,
                            "name": "addWeight",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2246,
                            "src": "993:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 1567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "993:29:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1568,
                        "nodeType": "ExpressionStatement",
                        "src": "993:29:3"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Called by completed assessments to add the assessee as member to the concept",
            "id": 1572,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addMember",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1550,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1547,
                  "name": "_assessee",
                  "nodeType": "VariableDeclaration",
                  "scope": 1572,
                  "src": "825:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1546,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "825:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1549,
                  "name": "_weight",
                  "nodeType": "VariableDeclaration",
                  "scope": 1572,
                  "src": "844:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1548,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "844:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "824:33:3"
            },
            "returnParameters": {
              "id": 1551,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "867:0:3"
            },
            "scope": 2247,
            "src": "806:235:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1595,
              "nodeType": "Block",
              "src": "1168:165:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1580,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5967,
                              "src": "1217:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1581,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1217:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1578,
                            "name": "conceptRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2271,
                            "src": "1187:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ConceptRegistry_$2682",
                              "typeString": "contract ConceptRegistry"
                            }
                          },
                          "id": 1579,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "conceptExists",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2537,
                          "src": "1187:29:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view external returns (bool)"
                          }
                        },
                        "id": 1582,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1187:41:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6e6365707420616363657373206f6e6c79",
                        "id": 1583,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1230:21:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_428a6fe69f8b45e30a1960be85beb438081af458f3130d47043a1c786f83477d",
                          "typeString": "literal_string \"Concept access only\""
                        },
                        "value": "Concept access only"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_428a6fe69f8b45e30a1960be85beb438081af458f3130d47043a1c786f83477d",
                          "typeString": "literal_string \"Concept access only\""
                        }
                      ],
                      "id": 1577,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "1179:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1584,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1179:73:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1585,
                  "nodeType": "ExpressionStatement",
                  "src": "1179:73:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 1587,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1282:5:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1586,
                      "name": "toggleAvailability",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1927,
                      "src": "1263:18:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool)"
                      }
                    },
                    "id": 1588,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1263:25:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1589,
                  "nodeType": "ExpressionStatement",
                  "src": "1263:25:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1593,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "1299:26:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1590,
                        "name": "memberData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2304,
                        "src": "1306:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                          "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                        }
                      },
                      "id": 1592,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1591,
                        "name": "_member",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1574,
                        "src": "1317:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1306:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                        "typeString": "struct ConceptData.MemberData storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1594,
                  "nodeType": "ExpressionStatement",
                  "src": "1299:26:3"
                }
              ]
            },
            "documentation": "@notice Called by cloned concepts to delete migrated members",
            "id": 1596,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "migrateMember",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1575,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1574,
                  "name": "_member",
                  "nodeType": "VariableDeclaration",
                  "scope": 1596,
                  "src": "1142:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1573,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1142:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1141:17:3"
            },
            "returnParameters": {
              "id": 1576,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1168:0:3"
            },
            "scope": 2247,
            "src": "1119:214:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1669,
              "nodeType": "Block",
              "src": "1621:507:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1609,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1604,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5967,
                            "src": "1640:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1605,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1640:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1606,
                              "name": "conceptRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2271,
                              "src": "1654:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ConceptRegistry_$2682",
                                "typeString": "contract ConceptRegistry"
                              }
                            },
                            "id": 1607,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "distributorAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2546,
                            "src": "1654:34:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 1608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1654:36:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1640:50:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4469737472696275746f7220616363657373206f6e6c79",
                        "id": 1610,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1692:25:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c21a9566e2612b0f80d4697f2ccc1ca808aeea715ecb9b223472edb7d867dabb",
                          "typeString": "literal_string \"Distributor access only\""
                        },
                        "value": "Distributor access only"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c21a9566e2612b0f80d4697f2ccc1ca808aeea715ecb9b223472edb7d867dabb",
                          "typeString": "literal_string \"Distributor access only\""
                        }
                      ],
                      "id": 1603,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "1632:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1632:86:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1612,
                  "nodeType": "ExpressionStatement",
                  "src": "1632:86:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1618,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1613,
                          "name": "conceptRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2271,
                          "src": "1733:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ConceptRegistry_$2682",
                            "typeString": "contract ConceptRegistry"
                          }
                        },
                        "id": 1614,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "distributorAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2546,
                        "src": "1733:34:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                          "typeString": "function () view external returns (address)"
                        }
                      },
                      "id": 1615,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1733:36:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1616,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5967,
                        "src": "1773:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1617,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1773:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1733:50:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1668,
                  "nodeType": "IfStatement",
                  "src": "1729:392:3",
                  "trueBody": {
                    "id": 1667,
                    "nodeType": "Block",
                    "src": "1785:336:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1620,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1598,
                              "src": "1810:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1621,
                              "name": "_weight",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1600,
                              "src": "1817:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1619,
                            "name": "addWeight",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2246,
                            "src": "1800:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 1622,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1800:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1623,
                        "nodeType": "ExpressionStatement",
                        "src": "1800:25:3"
                      },
                      {
                        "assignments": [
                          1625
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1625,
                            "name": "startBucket",
                            "nodeType": "VariableDeclaration",
                            "scope": 1667,
                            "src": "1840:16:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1624,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "1840:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1629,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1627,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1598,
                              "src": "1877:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1626,
                            "name": "startBucketNumber",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2224,
                            "src": "1859:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 1628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1859:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1840:43:3"
                      },
                      {
                        "body": {
                          "id": 1665,
                          "nodeType": "Block",
                          "src": "1938:172:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1646,
                                    "name": "_user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1598,
                                    "src": "1987:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1640,
                                      "name": "buckets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2309,
                                      "src": "1957:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$",
                                        "typeString": "mapping(uint256 => address[] storage ref)"
                                      }
                                    },
                                    "id": 1644,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 1643,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 1641,
                                        "name": "startBucket",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1625,
                                        "src": "1965:11:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 1642,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1631,
                                        "src": "1979:1:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "1965:15:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1957:24:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 1645,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "push",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1957:29:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) returns (uint256)"
                                  }
                                },
                                "id": 1647,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1957:36:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1648,
                              "nodeType": "ExpressionStatement",
                              "src": "1957:36:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1663,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1649,
                                        "name": "memberData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2304,
                                        "src": "2012:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                                          "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                                        }
                                      },
                                      "id": 1651,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1650,
                                        "name": "_user",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1598,
                                        "src": "2023:5:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2012:17:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                                        "typeString": "struct ConceptData.MemberData storage ref"
                                      }
                                    },
                                    "id": 1652,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "bucketIndices",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2295,
                                    "src": "2012:31:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 1656,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1655,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 1653,
                                      "name": "startBucket",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1625,
                                      "src": "2044:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1654,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1631,
                                      "src": "2058:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "2044:15:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2012:48:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1657,
                                      "name": "buckets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2309,
                                      "src": "2063:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$",
                                        "typeString": "mapping(uint256 => address[] storage ref)"
                                      }
                                    },
                                    "id": 1661,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 1660,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 1658,
                                        "name": "startBucket",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1625,
                                        "src": "2071:11:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 1659,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1631,
                                        "src": "2085:1:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "2071:15:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2063:24:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 1662,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2063:31:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2012:82:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1664,
                              "nodeType": "ExpressionStatement",
                              "src": "2012:82:3"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1636,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1634,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1631,
                            "src": "1915:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1635,
                            "name": "N_OF_BUCKETS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2312,
                            "src": "1919:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1915:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1666,
                        "initializationExpression": {
                          "assignments": [
                            1631
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1631,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 1666,
                              "src": "1903:6:3",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1630,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "1903:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 1633,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1632,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1912:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1903:10:3"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1638,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "1933:3:3",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 1637,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1631,
                              "src": "1933:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1639,
                          "nodeType": "ExpressionStatement",
                          "src": "1933:3:3"
                        },
                        "nodeType": "ForStatement",
                        "src": "1898:212:3"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Called by the distributor contract to directly add users (without an assessment)\r\n@dev This is only once used once on the mew-concept during the initialization of the network.\r",
            "id": 1670,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addInitialMember",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1601,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1598,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 1670,
                  "src": "1583:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1597,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1583:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1600,
                  "name": "_weight",
                  "nodeType": "VariableDeclaration",
                  "scope": 1670,
                  "src": "1598:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1599,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1598:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1582:29:3"
            },
            "returnParameters": {
              "id": 1602,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1621:0:3"
            },
            "scope": 2247,
            "src": "1557:571:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1751,
              "nodeType": "Block",
              "src": "2792:647:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1684,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1682,
                          "name": "_size",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1674,
                          "src": "2811:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "35",
                          "id": 1683,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2820:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_5_by_1",
                            "typeString": "int_const 5"
                          },
                          "value": "5"
                        },
                        "src": "2811:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4173736573736d656e742073697a65206d757374206265203e3d2066697665",
                        "id": 1685,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2823:33:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_eab93649c905a4ae2efa44b1495097ed616053a3f2623baf8f9de87cde777b2a",
                          "typeString": "literal_string \"Assessment size must be >= five\""
                        },
                        "value": "Assessment size must be >= five"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_eab93649c905a4ae2efa44b1495097ed616053a3f2623baf8f9de87cde777b2a",
                          "typeString": "literal_string \"Assessment size must be >= five\""
                        }
                      ],
                      "id": 1681,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "2803:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1686,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2803:54:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1687,
                  "nodeType": "ExpressionStatement",
                  "src": "2803:54:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1697,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1691,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5967,
                                "src": "2898:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1692,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2898:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1689,
                              "name": "fathomToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2269,
                              "src": "2876:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_FathomToken_$3062",
                                "typeString": "contract FathomToken"
                              }
                            },
                            "id": 1690,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5581,
                            "src": "2876:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 1693,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2876:33:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1694,
                            "name": "_cost",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1672,
                            "src": "2912:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1695,
                            "name": "_size",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1674,
                            "src": "2918:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2912:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2876:47:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "546f6b656e2062616c616e636520746f6f206c6f77",
                        "id": 1698,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2925:23:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6db77ed080137442e8c2bf08f3fb90516ab2b33bdd1e6aab1e5703ba9057e3d1",
                          "typeString": "literal_string \"Token balance too low\""
                        },
                        "value": "Token balance too low"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6db77ed080137442e8c2bf08f3fb90516ab2b33bdd1e6aab1e5703ba9057e3d1",
                          "typeString": "literal_string \"Token balance too low\""
                        }
                      ],
                      "id": 1688,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "2868:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1699,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2868:81:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1700,
                  "nodeType": "ExpressionStatement",
                  "src": "2868:81:3"
                },
                {
                  "assignments": [
                    1702
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1702,
                      "name": "newAssessmentAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 1751,
                      "src": "2962:28:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1701,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2962:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1714,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1707,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5967,
                          "src": "3055:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1708,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3055:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1709,
                        "name": "_cost",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1672,
                        "src": "3080:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1710,
                        "name": "_size",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1674,
                        "src": "3100:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1711,
                        "name": "_waitTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1676,
                        "src": "3120:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1712,
                        "name": "_timeLimit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1678,
                        "src": "3144:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1703,
                            "name": "conceptRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2271,
                            "src": "2993:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ConceptRegistry_$2682",
                              "typeString": "contract ConceptRegistry"
                            }
                          },
                          "id": 1704,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "proxyFactory",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2548,
                          "src": "2993:28:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ProxyFactory_$5390_$",
                            "typeString": "function () view external returns (contract ProxyFactory)"
                          }
                        },
                        "id": 1705,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2993:30:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ProxyFactory_$5390",
                          "typeString": "contract ProxyFactory"
                        }
                      },
                      "id": 1706,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createAssessment",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5337,
                      "src": "2993:47:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (address,uint256,uint256,uint256,uint256) external returns (address)"
                      }
                    },
                    "id": 1713,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2993:172:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2962:203:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1715,
                        "name": "assessmentExists",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2289,
                        "src": "3176:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 1717,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1716,
                        "name": "newAssessmentAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1702,
                        "src": "3193:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3176:38:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1718,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3217:4:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "3176:45:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1720,
                  "nodeType": "ExpressionStatement",
                  "src": "3176:45:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1724,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5967,
                          "src": "3256:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1725,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3256:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1726,
                        "name": "newAssessmentAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1702,
                        "src": "3268:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1729,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1727,
                          "name": "_cost",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1672,
                          "src": "3290:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1728,
                          "name": "_size",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1674,
                          "src": "3298:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3290:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1731,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6022,
                            "src": "3313:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Concept_$2247",
                              "typeString": "contract Concept"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Concept_$2247",
                              "typeString": "contract Concept"
                            }
                          ],
                          "id": 1730,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3305:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1732,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3305:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1721,
                        "name": "fathomToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2269,
                        "src": "3232:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_FathomToken_$3062",
                          "typeString": "contract FathomToken"
                        }
                      },
                      "id": 1723,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "takeBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2932,
                      "src": "3232:23:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address,address,uint256,address) external returns (bool)"
                      }
                    },
                    "id": 1733,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3232:87:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1734,
                  "nodeType": "ExpressionStatement",
                  "src": "3232:87:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1741,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5957,
                                  "src": "3394:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 1742,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3394:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1740,
                              "name": "blockhash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5958,
                              "src": "3384:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (uint256) view returns (bytes32)"
                              }
                            },
                            "id": 1743,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3384:23:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 1739,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3379:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint"
                        },
                        "id": 1744,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3379:29:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1746,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6022,
                            "src": "3418:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Concept_$2247",
                              "typeString": "contract Concept"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Concept_$2247",
                              "typeString": "contract Concept"
                            }
                          ],
                          "id": 1745,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3410:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1747,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3410:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1748,
                        "name": "_size",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1674,
                        "src": "3425:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1736,
                            "name": "newAssessmentAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1702,
                            "src": "3341:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 1735,
                          "name": "Assessment",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1295,
                          "src": "3330:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Assessment_$1295_$",
                            "typeString": "type(contract Assessment)"
                          }
                        },
                        "id": 1737,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3330:32:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Assessment_$1295",
                          "typeString": "contract Assessment"
                        }
                      },
                      "id": 1738,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setAssessorPool",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 591,
                      "src": "3330:48:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,address,uint256) external"
                      }
                    },
                    "id": 1749,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3330:101:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1750,
                  "nodeType": "ExpressionStatement",
                  "src": "3330:101:3"
                }
              ]
            },
            "documentation": "@notice Called by anyone who wants to get assessed in this concept\r\n@param _size the number of assessors\r\n@param _cost the amount of tokens paid per assessor\r\n@param _waitTime how long to wait for enough assessors to accept\r\n@param _timeLimit how long until the assessment has to be finished\r\n@dev Also sends tokens from the msg.sender to the address of the created assessment\r",
            "id": 1752,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "makeAssessment",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1679,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1672,
                  "name": "_cost",
                  "nodeType": "VariableDeclaration",
                  "scope": 1752,
                  "src": "2728:10:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1671,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2728:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1674,
                  "name": "_size",
                  "nodeType": "VariableDeclaration",
                  "scope": 1752,
                  "src": "2740:10:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1673,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2740:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1676,
                  "name": "_waitTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 1752,
                  "src": "2752:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1675,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2752:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1678,
                  "name": "_timeLimit",
                  "nodeType": "VariableDeclaration",
                  "scope": 1752,
                  "src": "2768:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1677,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2768:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2727:57:3"
            },
            "returnParameters": {
              "id": 1680,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2792:0:3"
            },
            "scope": 2247,
            "src": "2704:735:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1926,
              "nodeType": "Block",
              "src": "3722:1654:3",
              "statements": [
                {
                  "assignments": [
                    1758
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1758,
                      "name": "startBucket",
                      "nodeType": "VariableDeclaration",
                      "scope": 1926,
                      "src": "3821:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1757,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3821:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1763,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1760,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5967,
                          "src": "3859:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1761,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3859:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 1759,
                      "name": "startBucketNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2224,
                      "src": "3841:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view returns (uint256)"
                      }
                    },
                    "id": 1762,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3841:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3821:49:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 1764,
                    "name": "_available",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1754,
                    "src": "3885:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1842,
                  "nodeType": "IfStatement",
                  "src": "3881:800:3",
                  "trueBody": {
                    "id": 1841,
                    "nodeType": "Block",
                    "src": "3897:784:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1772,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1766,
                                    "name": "memberData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2304,
                                    "src": "3920:10:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                                      "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                                    }
                                  },
                                  "id": 1769,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1767,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5967,
                                      "src": "3931:3:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 1768,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3931:10:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3920:22:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                                    "typeString": "struct ConceptData.MemberData storage ref"
                                  }
                                },
                                "id": 1770,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "weight",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2297,
                                "src": "3920:29:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1771,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3952:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3920:33:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d757374206861766520612077656967687420746f20746f67676c6520617661696c61626c65",
                              "id": 1773,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3955:40:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_80ade0ace020a86e52a27b3839348b4c1bd44ff426e6faaacc6aa9f3da1f4109",
                                "typeString": "literal_string \"Must have a weight to toggle available\""
                              },
                              "value": "Must have a weight to toggle available"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_80ade0ace020a86e52a27b3839348b4c1bd44ff426e6faaacc6aa9f3da1f4109",
                                "typeString": "literal_string \"Must have a weight to toggle available\""
                              }
                            ],
                            "id": 1765,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              5970,
                              5971
                            ],
                            "referencedDeclaration": 5971,
                            "src": "3912:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1774,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3912:84:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1775,
                        "nodeType": "ExpressionStatement",
                        "src": "3912:84:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1785,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1783,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1777,
                                      "name": "memberData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2304,
                                      "src": "4019:10:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                                        "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                                      }
                                    },
                                    "id": 1780,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1778,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5967,
                                        "src": "4030:3:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 1779,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "4030:10:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4019:22:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                                      "typeString": "struct ConceptData.MemberData storage ref"
                                    }
                                  },
                                  "id": 1781,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "assessmentDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2299,
                                  "src": "4019:37:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1782,
                                  "name": "lifetime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2285,
                                  "src": "4059:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4019:48:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1784,
                                "name": "now",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5969,
                                "src": "4070:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4019:54:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "576569676874206d757374206e6f74206265206578706972656420746f20746f67676c6520617661696c61626c65",
                              "id": 1786,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4075:48:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2cd947aa5a38e53ee283ae87c85c51fbcb150dce07b0b8279f975391c9619098",
                                "typeString": "literal_string \"Weight must not be expired to toggle available\""
                              },
                              "value": "Weight must not be expired to toggle available"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2cd947aa5a38e53ee283ae87c85c51fbcb150dce07b0b8279f975391c9619098",
                                "typeString": "literal_string \"Weight must not be expired to toggle available\""
                              }
                            ],
                            "id": 1776,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              5970,
                              5971
                            ],
                            "referencedDeclaration": 5971,
                            "src": "4011:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1787,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4011:113:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1788,
                        "nodeType": "ExpressionStatement",
                        "src": "4011:113:3"
                      },
                      {
                        "body": {
                          "id": 1838,
                          "nodeType": "Block",
                          "src": "4287:362:3",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1808,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1798,
                                        "name": "memberData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2304,
                                        "src": "4382:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                                          "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                                        }
                                      },
                                      "id": 1801,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1799,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5967,
                                          "src": "4393:3:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 1800,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "4393:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4382:22:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                                        "typeString": "struct ConceptData.MemberData storage ref"
                                      }
                                    },
                                    "id": 1802,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "bucketIndices",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2295,
                                    "src": "4382:36:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 1806,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1805,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 1803,
                                      "name": "startBucket",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1758,
                                      "src": "4419:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1804,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1790,
                                      "src": "4433:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4419:15:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4382:53:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1807,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4439:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4382:58:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 1837,
                              "nodeType": "IfStatement",
                              "src": "4378:256:3",
                              "trueBody": {
                                "id": 1836,
                                "nodeType": "Block",
                                "src": "4442:192:3",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1815,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5967,
                                            "src": "4495:3:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 1816,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "4495:10:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 1809,
                                            "name": "buckets",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2309,
                                            "src": "4465:7:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$",
                                              "typeString": "mapping(uint256 => address[] storage ref)"
                                            }
                                          },
                                          "id": 1813,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 1812,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "id": 1810,
                                              "name": "startBucket",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1758,
                                              "src": "4473:11:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "+",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "id": 1811,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1790,
                                              "src": "4487:1:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "4473:15:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "4465:24:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                            "typeString": "address[] storage ref"
                                          }
                                        },
                                        "id": 1814,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "push",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "4465:29:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
                                          "typeString": "function (address) returns (uint256)"
                                        }
                                      },
                                      "id": 1817,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4465:41:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1818,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4465:41:3"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1834,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 1819,
                                              "name": "memberData",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2304,
                                              "src": "4529:10:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                                                "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                                              }
                                            },
                                            "id": 1822,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 1820,
                                                "name": "msg",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5967,
                                                "src": "4540:3:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_message",
                                                  "typeString": "msg"
                                                }
                                              },
                                              "id": 1821,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "sender",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "4540:10:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "4529:22:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                                              "typeString": "struct ConceptData.MemberData storage ref"
                                            }
                                          },
                                          "id": 1823,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "bucketIndices",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2295,
                                          "src": "4529:36:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 1827,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 1826,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 1824,
                                            "name": "startBucket",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1758,
                                            "src": "4566:11:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 1825,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1790,
                                            "src": "4580:1:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "4566:15:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "4529:53:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 1828,
                                            "name": "buckets",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2309,
                                            "src": "4585:7:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$",
                                              "typeString": "mapping(uint256 => address[] storage ref)"
                                            }
                                          },
                                          "id": 1832,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 1831,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "id": 1829,
                                              "name": "startBucket",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1758,
                                              "src": "4593:11:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "+",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "id": 1830,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1790,
                                              "src": "4607:1:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "4593:15:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "4585:24:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                            "typeString": "address[] storage ref"
                                          }
                                        },
                                        "id": 1833,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "4585:31:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4529:87:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1835,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4529:87:3"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1794,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1792,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1790,
                            "src": "4264:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1793,
                            "name": "N_OF_BUCKETS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2312,
                            "src": "4268:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4264:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1839,
                        "initializationExpression": {
                          "assignments": [
                            1790
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1790,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 1839,
                              "src": "4256:6:3",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1789,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "4256:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 1791,
                          "initialValue": null,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4256:6:3"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1796,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "4282:3:3",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 1795,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1790,
                              "src": "4282:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1797,
                          "nodeType": "ExpressionStatement",
                          "src": "4282:3:3"
                        },
                        "nodeType": "ForStatement",
                        "src": "4251:398:3"
                      },
                      {
                        "expression": null,
                        "functionReturnParameters": 1756,
                        "id": 1840,
                        "nodeType": "Return",
                        "src": "4663:7:3"
                      }
                    ]
                  }
                },
                {
                  "body": {
                    "id": 1924,
                    "nodeType": "Block",
                    "src": "4765:604:3",
                    "statements": [
                      {
                        "assignments": [
                          1853
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1853,
                            "name": "index",
                            "nodeType": "VariableDeclaration",
                            "scope": 1924,
                            "src": "4780:10:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1852,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "4780:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1863,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1854,
                                "name": "memberData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2304,
                                "src": "4793:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                                  "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                                }
                              },
                              "id": 1857,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1855,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5967,
                                  "src": "4804:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 1856,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4804:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4793:22:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                                "typeString": "struct ConceptData.MemberData storage ref"
                              }
                            },
                            "id": 1858,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "bucketIndices",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2295,
                            "src": "4793:36:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 1862,
                          "indexExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1861,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1859,
                              "name": "startBucket",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1758,
                              "src": "4830:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1860,
                              "name": "bi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1844,
                              "src": "4844:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4830:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4793:54:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4780:67:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1864,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1853,
                            "src": "4953:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1865,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4961:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4953:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1923,
                        "nodeType": "IfStatement",
                        "src": "4949:409:3",
                        "trueBody": {
                          "id": 1922,
                          "nodeType": "Block",
                          "src": "4964:394:3",
                          "statements": [
                            {
                              "assignments": [
                                1870
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1870,
                                  "name": "bucket",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1922,
                                  "src": "4983:24:3",
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                    "typeString": "address[]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 1868,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4983:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 1869,
                                    "length": null,
                                    "nodeType": "ArrayTypeName",
                                    "src": "4983:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                      "typeString": "address[]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1876,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1871,
                                  "name": "buckets",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2309,
                                  "src": "5010:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$",
                                    "typeString": "mapping(uint256 => address[] storage ref)"
                                  }
                                },
                                "id": 1875,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1874,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 1872,
                                    "name": "startBucket",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1758,
                                    "src": "5018:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 1873,
                                    "name": "bi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1844,
                                    "src": "5032:2:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5018:16:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5010:25:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4983:52:3"
                            },
                            {
                              "assignments": [
                                1878
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1878,
                                  "name": "lastMember",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1922,
                                  "src": "5054:18:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 1877,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5054:7:3",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1885,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1879,
                                  "name": "bucket",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1870,
                                  "src": "5075:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                    "typeString": "address[] storage pointer"
                                  }
                                },
                                "id": 1884,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1883,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1880,
                                      "name": "bucket",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1870,
                                      "src": "5082:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                        "typeString": "address[] storage pointer"
                                      }
                                    },
                                    "id": 1881,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "5082:13:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 1882,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5097:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "5082:16:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5075:24:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5054:45:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1892,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1886,
                                    "name": "bucket",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1870,
                                    "src": "5120:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                      "typeString": "address[] storage pointer"
                                    }
                                  },
                                  "id": 1890,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1889,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 1887,
                                      "name": "index",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1853,
                                      "src": "5127:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 1888,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5135:1:3",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "5127:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5120:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 1891,
                                  "name": "lastMember",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1878,
                                  "src": "5140:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5120:30:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1893,
                              "nodeType": "ExpressionStatement",
                              "src": "5120:30:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1903,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1894,
                                        "name": "memberData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2304,
                                        "src": "5169:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                                          "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                                        }
                                      },
                                      "id": 1896,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1895,
                                        "name": "lastMember",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1878,
                                        "src": "5180:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5169:22:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                                        "typeString": "struct ConceptData.MemberData storage ref"
                                      }
                                    },
                                    "id": 1897,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "bucketIndices",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2295,
                                    "src": "5169:36:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 1901,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1900,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 1898,
                                      "name": "startBucket",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1758,
                                      "src": "5206:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1899,
                                      "name": "bi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1844,
                                      "src": "5220:2:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "5206:16:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5169:54:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 1902,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1853,
                                  "src": "5226:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5169:62:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1904,
                              "nodeType": "ExpressionStatement",
                              "src": "5169:62:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1915,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1905,
                                        "name": "memberData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2304,
                                        "src": "5250:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                                          "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                                        }
                                      },
                                      "id": 1908,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1906,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5967,
                                          "src": "5261:3:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 1907,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "5261:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5250:22:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                                        "typeString": "struct ConceptData.MemberData storage ref"
                                      }
                                    },
                                    "id": 1909,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "bucketIndices",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2295,
                                    "src": "5250:36:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 1913,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1912,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 1910,
                                      "name": "startBucket",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1758,
                                      "src": "5287:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1911,
                                      "name": "bi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1844,
                                      "src": "5301:2:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "5287:16:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5250:54:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1914,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5307:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5250:58:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1916,
                              "nodeType": "ExpressionStatement",
                              "src": "5250:58:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1920,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "5327:15:3",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1917,
                                    "name": "bucket",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1870,
                                    "src": "5327:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                      "typeString": "address[] storage pointer"
                                    }
                                  },
                                  "id": 1919,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5327:13:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1921,
                              "nodeType": "ExpressionStatement",
                              "src": "5327:15:3"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1848,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1846,
                      "name": "bi",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1844,
                      "src": "4740:2:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1847,
                      "name": "N_OF_BUCKETS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2312,
                      "src": "4745:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4740:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1925,
                  "initializationExpression": {
                    "assignments": [
                      1844
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1844,
                        "name": "bi",
                        "nodeType": "VariableDeclaration",
                        "scope": 1925,
                        "src": "4731:7:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1843,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4731:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1845,
                    "initialValue": null,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4731:7:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1850,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4759:4:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1849,
                        "name": "bi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1844,
                        "src": "4759:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1851,
                    "nodeType": "ExpressionStatement",
                    "src": "4759:4:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "4726:643:3"
                }
              ]
            },
            "documentation": "@notice Called by members to signal that they do/do not want to be called as assessor in this concept\r\n@dev See AssessmentData.sol for an explanation how buckets are used to discretize time.\r",
            "id": 1927,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "toggleAvailability",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1755,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1754,
                  "name": "_available",
                  "nodeType": "VariableDeclaration",
                  "scope": 1927,
                  "src": "3698:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1753,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3698:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3697:17:3"
            },
            "returnParameters": {
              "id": 1756,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3722:0:3"
            },
            "scope": 2247,
            "src": "3670:1706:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1995,
              "nodeType": "Block",
              "src": "5509:866:3",
              "statements": [
                {
                  "assignments": [
                    1931
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1931,
                      "name": "original",
                      "nodeType": "VariableDeclaration",
                      "scope": 1995,
                      "src": "5520:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Concept_$2247",
                        "typeString": "contract Concept"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1930,
                        "name": "Concept",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2247,
                        "src": "5520:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Concept_$2247",
                          "typeString": "contract Concept"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1935,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1933,
                        "name": "cloneOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2275,
                        "src": "5547:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1932,
                      "name": "Concept",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2247,
                      "src": "5539:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Concept_$2247_$",
                        "typeString": "type(contract Concept)"
                      }
                    },
                    "id": 1934,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5539:16:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Concept_$2247",
                      "typeString": "contract Concept"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5520:35:3"
                },
                {
                  "assignments": [
                    1937
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1937,
                      "name": "recentAssessment",
                      "nodeType": "VariableDeclaration",
                      "scope": 1995,
                      "src": "5566:24:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1936,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5566:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1938,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5566:24:3"
                },
                {
                  "assignments": [
                    1940
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1940,
                      "name": "weight",
                      "nodeType": "VariableDeclaration",
                      "scope": 1995,
                      "src": "5601:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1939,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5601:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1941,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5601:11:3"
                },
                {
                  "assignments": [
                    1943
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1943,
                      "name": "assessmentDate",
                      "nodeType": "VariableDeclaration",
                      "scope": 1995,
                      "src": "5623:19:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1942,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5623:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1944,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5623:19:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1954,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1945,
                          "name": "recentAssessment",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1937,
                          "src": "5654:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1946,
                          "name": "weight",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1940,
                          "src": "5672:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1947,
                          "name": "assessmentDate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1943,
                          "src": "5680:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1948,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "5653:42:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(address,uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1951,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5967,
                            "src": "5718:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5718:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1949,
                          "name": "original",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1931,
                          "src": "5698:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Concept_$2247",
                            "typeString": "contract Concept"
                          }
                        },
                        "id": 1950,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "memberData",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2304,
                        "src": "5698:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$_t_uint256_$_t_uint256_$",
                          "typeString": "function (address) view external returns (address,uint256,uint256)"
                        }
                      },
                      "id": 1953,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5698:31:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(address,uint256,uint256)"
                      }
                    },
                    "src": "5653:76:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1955,
                  "nodeType": "ExpressionStatement",
                  "src": "5653:76:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1959,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1957,
                          "name": "weight",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1940,
                          "src": "5750:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1958,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5759:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "5750:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d75737420686176652061206e6f6e2d7a65726f2077656967687420696e206f726967696e616c20636f6e63657074",
                        "id": 1960,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5762:49:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_762fc5b5c83124ddec72a75d1d153a12fa388f10779fc113a6e90d8ceb6bac9a",
                          "typeString": "literal_string \"Must have a non-zero weight in original concept\""
                        },
                        "value": "Must have a non-zero weight in original concept"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_762fc5b5c83124ddec72a75d1d153a12fa388f10779fc113a6e90d8ceb6bac9a",
                          "typeString": "literal_string \"Must have a non-zero weight in original concept\""
                        }
                      ],
                      "id": 1956,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "5742:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1961,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5742:70:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1962,
                  "nodeType": "ExpressionStatement",
                  "src": "5742:70:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1968,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1964,
                            "name": "assessmentDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1943,
                            "src": "5831:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1965,
                            "name": "lifetime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2285,
                            "src": "5848:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5831:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1967,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5969,
                          "src": "5859:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5831:31:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4173736573736d656e74206d757374206e6f74206265206f6c646572207468616e20636f6e63657074206c69666574696d65",
                        "id": 1969,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5864:52:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_14f01dc86f47abcaf1640ce3f698a25715d1d6792ef6477b19ebc72620fb1a71",
                          "typeString": "literal_string \"Assessment must not be older than concept lifetime\""
                        },
                        "value": "Assessment must not be older than concept lifetime"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_14f01dc86f47abcaf1640ce3f698a25715d1d6792ef6477b19ebc72620fb1a71",
                          "typeString": "literal_string \"Assessment must not be older than concept lifetime\""
                        }
                      ],
                      "id": 1963,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "5823:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1970,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5823:94:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1971,
                  "nodeType": "ExpressionStatement",
                  "src": "5823:94:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1978,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1972,
                          "name": "memberData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2304,
                          "src": "6096:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                            "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                          }
                        },
                        "id": 1975,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1973,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5967,
                            "src": "6107:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1974,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6107:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6096:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                          "typeString": "struct ConceptData.MemberData storage ref"
                        }
                      },
                      "id": 1976,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "weight",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2297,
                      "src": "6096:29:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1977,
                      "name": "weight",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1940,
                      "src": "6128:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6096:38:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1979,
                  "nodeType": "ExpressionStatement",
                  "src": "6096:38:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1986,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1980,
                          "name": "memberData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2304,
                          "src": "6145:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                            "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                          }
                        },
                        "id": 1983,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1981,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5967,
                            "src": "6156:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1982,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6156:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6145:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                          "typeString": "struct ConceptData.MemberData storage ref"
                        }
                      },
                      "id": 1984,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "assessmentDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2299,
                      "src": "6145:37:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1985,
                      "name": "assessmentDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1943,
                      "src": "6185:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6145:54:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1987,
                  "nodeType": "ExpressionStatement",
                  "src": "6145:54:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1991,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5967,
                          "src": "6235:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1992,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6235:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1988,
                        "name": "original",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1931,
                        "src": "6212:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Concept_$2247",
                          "typeString": "contract Concept"
                        }
                      },
                      "id": 1990,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "migrateMember",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1596,
                      "src": "6212:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 1993,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6212:34:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1994,
                  "nodeType": "ExpressionStatement",
                  "src": "6212:34:3"
                }
              ]
            },
            "documentation": "@notice Called by members of the original concept who want to migrate to this one",
            "id": 1996,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "integrateMember",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1928,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5499:2:3"
            },
            "returnParameters": {
              "id": 1929,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5509:0:3"
            },
            "scope": 2247,
            "src": "5475:900:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2007,
              "nodeType": "Block",
              "src": "6579:36:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2005,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2003,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2267,
                      "src": "6590:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2004,
                      "name": "_newOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1998,
                      "src": "6598:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "6590:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2006,
                  "nodeType": "ExpressionStatement",
                  "src": "6590:17:3"
                }
              ]
            },
            "documentation": null,
            "id": 2008,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 2001,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2000,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1545,
                  "src": "6567:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6567:11:3"
              }
            ],
            "name": "transferOwnership",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1999,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1998,
                  "name": "_newOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2008,
                  "src": "6541:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1997,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6541:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6540:19:3"
            },
            "returnParameters": {
              "id": 2002,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6579:0:3"
            },
            "scope": 2247,
            "src": "6514:101:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2104,
              "nodeType": "Block",
              "src": "6883:864:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2024,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2020,
                            "name": "_newParents",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2011,
                            "src": "6902:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 2021,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6902:18:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2022,
                            "name": "_newParentFactors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2014,
                            "src": "6924:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 2023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6924:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6902:46:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4e756d626572206f6620706172656e7420636f6e6365707473206d757374206d6174636820706172656e7420666163746f7273",
                        "id": 2025,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6963:53:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3e2fb13a4d4f3bd239f0e89d093159742c35e410b60049aa5ded9b9cc88657b3",
                          "typeString": "literal_string \"Number of parent concepts must match parent factors\""
                        },
                        "value": "Number of parent concepts must match parent factors"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3e2fb13a4d4f3bd239f0e89d093159742c35e410b60049aa5ded9b9cc88657b3",
                          "typeString": "literal_string \"Number of parent concepts must match parent factors\""
                        }
                      ],
                      "id": 2019,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "6894:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2026,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6894:133:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2027,
                  "nodeType": "ExpressionStatement",
                  "src": "6894:133:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2032,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2029,
                            "name": "_newParents",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2011,
                            "src": "7046:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 2030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7046:18:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "36",
                          "id": 2031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7067:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_6_by_1",
                            "typeString": "int_const 6"
                          },
                          "value": "6"
                        },
                        "src": "7046:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "546f6f206d616e7920706172656e7473",
                        "id": 2033,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7070:18:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_48975c2c5fe4497259e99e14ba749e889f3262cedfd49795763ed7cc1948d8fb",
                          "typeString": "literal_string \"Too many parents\""
                        },
                        "value": "Too many parents"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_48975c2c5fe4497259e99e14ba749e889f3262cedfd49795763ed7cc1948d8fb",
                          "typeString": "literal_string \"Too many parents\""
                        }
                      ],
                      "id": 2028,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "7038:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2034,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7038:51:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2035,
                  "nodeType": "ExpressionStatement",
                  "src": "7038:51:3"
                },
                {
                  "assignments": [
                    2037
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2037,
                      "name": "sumOfParentFactors",
                      "nodeType": "VariableDeclaration",
                      "scope": 2104,
                      "src": "7146:23:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2036,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7146:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2039,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 2038,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7172:1:3",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7146:27:3"
                },
                {
                  "body": {
                    "id": 2087,
                    "nodeType": "Block",
                    "src": "7228:348:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2058,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2052,
                                  "name": "_newParents",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2011,
                                  "src": "7251:11:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 2054,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2053,
                                  "name": "j",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2041,
                                  "src": "7263:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7251:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2056,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6022,
                                    "src": "7277:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Concept_$2247",
                                      "typeString": "contract Concept"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_Concept_$2247",
                                      "typeString": "contract Concept"
                                    }
                                  ],
                                  "id": 2055,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7269:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 2057,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7269:13:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "7251:31:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "436f6e636570742063616e6e6f7420626520706172656e7420746f20697473656c66",
                              "id": 2059,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7284:36:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_11b3f239825c2641202ded5b3d11327dc03a64eac64e113235c9de0ed51f8aa4",
                                "typeString": "literal_string \"Concept cannot be parent to itself\""
                              },
                              "value": "Concept cannot be parent to itself"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_11b3f239825c2641202ded5b3d11327dc03a64eac64e113235c9de0ed51f8aa4",
                                "typeString": "literal_string \"Concept cannot be parent to itself\""
                              }
                            ],
                            "id": 2051,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              5970,
                              5971
                            ],
                            "referencedDeclaration": 5971,
                            "src": "7243:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7243:78:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2061,
                        "nodeType": "ExpressionStatement",
                        "src": "7243:78:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2065,
                                    "name": "_newParents",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2011,
                                    "src": "7374:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 2067,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2066,
                                    "name": "j",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2041,
                                    "src": "7386:1:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7374:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2063,
                                  "name": "conceptRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2271,
                                  "src": "7344:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ConceptRegistry_$2682",
                                    "typeString": "contract ConceptRegistry"
                                  }
                                },
                                "id": 2064,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "conceptExists",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2537,
                                "src": "7344:29:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view external returns (bool)"
                                }
                              },
                              "id": 2068,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7344:45:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506172656e7420636f6e6365707420646f6573206e6f74206578697374",
                              "id": 2069,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7391:31:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0c9a49f372bc8b5427d3785d78a57de4c1e2db48ae040a906e0459ec5a48b6da",
                                "typeString": "literal_string \"Parent concept does not exist\""
                              },
                              "value": "Parent concept does not exist"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0c9a49f372bc8b5427d3785d78a57de4c1e2db48ae040a906e0459ec5a48b6da",
                                "typeString": "literal_string \"Parent concept does not exist\""
                              }
                            ],
                            "id": 2062,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              5970,
                              5971
                            ],
                            "referencedDeclaration": 5971,
                            "src": "7336:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7336:87:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2071,
                        "nodeType": "ExpressionStatement",
                        "src": "7336:87:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2077,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2073,
                                  "name": "_newParentFactors",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2014,
                                  "src": "7446:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 2075,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2074,
                                  "name": "j",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2041,
                                  "src": "7464:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7446:20:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31303030",
                                "id": 2076,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7470:4:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1000_by_1",
                                  "typeString": "int_const 1000"
                                },
                                "value": "1000"
                              },
                              "src": "7446:28:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506172656e7420666163746f72206d757374206265203c3d31303030",
                              "id": 2078,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7476:30:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2cae72e41f4d1b1e9f9f597653ac9ada639d7ea22e90fe4ffaf5302b7204aad6",
                                "typeString": "literal_string \"Parent factor must be <=1000\""
                              },
                              "value": "Parent factor must be <=1000"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2cae72e41f4d1b1e9f9f597653ac9ada639d7ea22e90fe4ffaf5302b7204aad6",
                                "typeString": "literal_string \"Parent factor must be <=1000\""
                              }
                            ],
                            "id": 2072,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              5970,
                              5971
                            ],
                            "referencedDeclaration": 5971,
                            "src": "7438:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7438:69:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2080,
                        "nodeType": "ExpressionStatement",
                        "src": "7438:69:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2085,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2081,
                            "name": "sumOfParentFactors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2037,
                            "src": "7522:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2082,
                              "name": "_newParentFactors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2014,
                              "src": "7544:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 2084,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2083,
                              "name": "j",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2041,
                              "src": "7562:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7544:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7522:42:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2086,
                        "nodeType": "ExpressionStatement",
                        "src": "7522:42:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2047,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2044,
                      "name": "j",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2041,
                      "src": "7199:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2045,
                        "name": "_newParents",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2011,
                        "src": "7203:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 2046,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7203:18:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7199:22:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2088,
                  "initializationExpression": {
                    "assignments": [
                      2041
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2041,
                        "name": "j",
                        "nodeType": "VariableDeclaration",
                        "scope": 2088,
                        "src": "7189:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2040,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "7189:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2043,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2042,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7196:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "7189:8:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2049,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "7223:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2048,
                        "name": "j",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2041,
                        "src": "7223:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2050,
                    "nodeType": "ExpressionStatement",
                    "src": "7223:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "7184:392:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2092,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2090,
                          "name": "sumOfParentFactors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2037,
                          "src": "7594:18:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31303030",
                          "id": 2091,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7616:4:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1000_by_1",
                            "typeString": "int_const 1000"
                          },
                          "value": "1000"
                        },
                        "src": "7594:26:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "506172656e7420666163746f727320646f206e6f742061646420757020746f2031303030",
                        "id": 2093,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7622:38:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_92d16b02d471dc4c706dc3ac1c92769dd473c1b433b60ceca8e48f407b41f0d2",
                          "typeString": "literal_string \"Parent factors do not add up to 1000\""
                        },
                        "value": "Parent factors do not add up to 1000"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_92d16b02d471dc4c706dc3ac1c92769dd473c1b433b60ceca8e48f407b41f0d2",
                          "typeString": "literal_string \"Parent factors do not add up to 1000\""
                        }
                      ],
                      "id": 2089,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "7586:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2094,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7586:75:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2095,
                  "nodeType": "ExpressionStatement",
                  "src": "7586:75:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2098,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2096,
                      "name": "parents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2278,
                      "src": "7674:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                        "typeString": "address[] storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2097,
                      "name": "_newParents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2011,
                      "src": "7684:11:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[] memory"
                      }
                    },
                    "src": "7674:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "id": 2099,
                  "nodeType": "ExpressionStatement",
                  "src": "7674:21:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2102,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2100,
                      "name": "parentFactors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2281,
                      "src": "7706:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                        "typeString": "uint256[] storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2101,
                      "name": "_newParentFactors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2014,
                      "src": "7722:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "src": "7706:33:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                      "typeString": "uint256[] storage ref"
                    }
                  },
                  "id": 2103,
                  "nodeType": "ExpressionStatement",
                  "src": "7706:33:3"
                }
              ]
            },
            "documentation": "@dev The restrictions on parent-concepts here NEED to be identical to the ones in the constructor",
            "id": 2105,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 2017,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2016,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1545,
                  "src": "6866:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6866:11:3"
              }
            ],
            "name": "changeParents",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2015,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2011,
                  "name": "_newParents",
                  "nodeType": "VariableDeclaration",
                  "scope": 2105,
                  "src": "6763:28:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2009,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "6763:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2010,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6763:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2014,
                  "name": "_newParentFactors",
                  "nodeType": "VariableDeclaration",
                  "scope": 2105,
                  "src": "6802:31:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2012,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "6802:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2013,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6802:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6752:88:3"
            },
            "returnParameters": {
              "id": 2018,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6883:0:3"
            },
            "scope": 2247,
            "src": "6730:1017:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2116,
              "nodeType": "Block",
              "src": "7814:31:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2114,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2112,
                      "name": "data",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2283,
                      "src": "7825:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2113,
                      "name": "_data",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2107,
                      "src": "7832:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "7825:12:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 2115,
                  "nodeType": "ExpressionStatement",
                  "src": "7825:12:3"
                }
              ]
            },
            "documentation": null,
            "id": 2117,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 2110,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2109,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1545,
                  "src": "7802:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7802:11:3"
              }
            ],
            "name": "changeData",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2108,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2107,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2117,
                  "src": "7775:18:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2106,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7775:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7774:20:3"
            },
            "returnParameters": {
              "id": 2111,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7814:0:3"
            },
            "scope": 2247,
            "src": "7755:90:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2128,
              "nodeType": "Block",
              "src": "7915:42:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2126,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2124,
                      "name": "lifetime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2285,
                      "src": "7926:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2125,
                      "name": "_newLifetime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2119,
                      "src": "7937:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7926:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2127,
                  "nodeType": "ExpressionStatement",
                  "src": "7926:23:3"
                }
              ]
            },
            "documentation": null,
            "id": 2129,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 2122,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2121,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1545,
                  "src": "7903:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7903:11:3"
              }
            ],
            "name": "changeLifetime",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2120,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2119,
                  "name": "_newLifetime",
                  "nodeType": "VariableDeclaration",
                  "scope": 2129,
                  "src": "7877:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2118,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7877:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7876:19:3"
            },
            "returnParameters": {
              "id": 2123,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7915:0:3"
            },
            "scope": 2247,
            "src": "7853:104:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2153,
              "nodeType": "Block",
              "src": "8237:137:3",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2141,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2136,
                            "name": "memberData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2304,
                            "src": "8252:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                              "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                            }
                          },
                          "id": 2138,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2137,
                            "name": "_member",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2131,
                            "src": "8263:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8252:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                            "typeString": "struct ConceptData.MemberData storage ref"
                          }
                        },
                        "id": 2139,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "assessmentDate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2299,
                        "src": "8252:34:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 2140,
                        "name": "lifetime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2285,
                        "src": "8289:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "8252:45:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2142,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5969,
                      "src": "8300:3:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8252:51:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2152,
                  "nodeType": "IfStatement",
                  "src": "8248:119:3",
                  "trueBody": {
                    "id": 2151,
                    "nodeType": "Block",
                    "src": "8305:62:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2144,
                            "name": "weight",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2134,
                            "src": "8320:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2145,
                                "name": "memberData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2304,
                                "src": "8329:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                                  "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                                }
                              },
                              "id": 2147,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2146,
                                "name": "_member",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2131,
                                "src": "8340:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8329:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                                "typeString": "struct ConceptData.MemberData storage ref"
                              }
                            },
                            "id": 2148,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "weight",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2297,
                            "src": "8329:26:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8320:35:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2150,
                        "nodeType": "ExpressionStatement",
                        "src": "8320:35:3"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@return the weight used for probabilistic calling of assessors",
            "id": 2154,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getWeight",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2132,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2131,
                  "name": "_member",
                  "nodeType": "VariableDeclaration",
                  "scope": 2154,
                  "src": "8187:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2130,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8187:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8186:17:3"
            },
            "returnParameters": {
              "id": 2135,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2134,
                  "name": "weight",
                  "nodeType": "VariableDeclaration",
                  "scope": 2154,
                  "src": "8224:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2133,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8224:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8223:13:3"
            },
            "scope": 2247,
            "src": "8168:206:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2165,
              "nodeType": "Block",
              "src": "8524:62:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2159,
                        "name": "buckets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2309,
                        "src": "8542:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$",
                          "typeString": "mapping(uint256 => address[] storage ref)"
                        }
                      },
                      "id": 2162,
                      "indexExpression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 2160,
                          "name": "activeBucketNumber",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2203,
                          "src": "8550:18:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 2161,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8550:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8542:29:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                        "typeString": "address[] storage ref"
                      }
                    },
                    "id": 2163,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "8542:36:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2158,
                  "id": 2164,
                  "nodeType": "Return",
                  "src": "8535:43:3"
                }
              ]
            },
            "documentation": "@return how many members are currently available to act as assessor",
            "id": 2166,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNumberOfAvailableMembers",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2155,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8495:2:3"
            },
            "returnParameters": {
              "id": 2158,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2157,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2166,
                  "src": "8518:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2156,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8518:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8517:6:3"
            },
            "scope": 2247,
            "src": "8459:127:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2177,
              "nodeType": "Block",
              "src": "8664:55:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2172,
                      "name": "buckets",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2309,
                      "src": "8682:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$",
                        "typeString": "mapping(uint256 => address[] storage ref)"
                      }
                    },
                    "id": 2175,
                    "indexExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 2173,
                        "name": "activeBucketNumber",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2203,
                        "src": "8690:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                          "typeString": "function () view returns (uint256)"
                        }
                      },
                      "id": 2174,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8690:20:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8682:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "functionReturnParameters": 2171,
                  "id": 2176,
                  "nodeType": "Return",
                  "src": "8675:36:3"
                }
              ]
            },
            "documentation": null,
            "id": 2178,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAvailableMembers",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2167,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8623:2:3"
            },
            "returnParameters": {
              "id": 2171,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2170,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2178,
                  "src": "8646:16:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2168,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "8646:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2169,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "8646:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8645:18:3"
            },
            "scope": 2247,
            "src": "8594:125:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2186,
              "nodeType": "Block",
              "src": "8783:40:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2183,
                      "name": "parents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2278,
                      "src": "8801:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                        "typeString": "address[] storage ref"
                      }
                    },
                    "id": 2184,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "8801:14:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2182,
                  "id": 2185,
                  "nodeType": "Return",
                  "src": "8794:21:3"
                }
              ]
            },
            "documentation": null,
            "id": 2187,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNumberOfParents",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2179,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8754:2:3"
            },
            "returnParameters": {
              "id": 2182,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2181,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2187,
                  "src": "8777:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2180,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8777:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8776:6:3"
            },
            "scope": 2247,
            "src": "8727:96:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2202,
              "nodeType": "Block",
              "src": "8971:187:3",
              "statements": [
                {
                  "assignments": [
                    2193
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2193,
                      "name": "bucketLength",
                      "nodeType": "VariableDeclaration",
                      "scope": 2202,
                      "src": "9071:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2192,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9071:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2197,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2196,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2194,
                      "name": "lifetime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2285,
                      "src": "9091:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2195,
                      "name": "N_OF_BUCKETS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2312,
                      "src": "9102:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9091:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9071:43:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2198,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5969,
                      "src": "9132:3:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2199,
                      "name": "bucketLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2193,
                      "src": "9138:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9132:18:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2191,
                  "id": 2201,
                  "nodeType": "Return",
                  "src": "9125:25:3"
                }
              ]
            },
            "documentation": "@return the number of the period of time (bucket) the current moment is in",
            "id": 2203,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "activeBucketNumber",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2188,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8942:2:3"
            },
            "returnParameters": {
              "id": 2191,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2190,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2203,
                  "src": "8965:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2189,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8965:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8964:6:3"
            },
            "scope": 2247,
            "src": "8915:243:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2223,
              "nodeType": "Block",
              "src": "9468:127:3",
              "statements": [
                {
                  "assignments": [
                    2211
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2211,
                      "name": "bucketLength",
                      "nodeType": "VariableDeclaration",
                      "scope": 2223,
                      "src": "9479:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2210,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9479:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2215,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2214,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2212,
                      "name": "lifetime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2285,
                      "src": "9499:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2213,
                      "name": "N_OF_BUCKETS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2312,
                      "src": "9510:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9499:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9479:43:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2221,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2216,
                          "name": "memberData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2304,
                          "src": "9540:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                            "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                          }
                        },
                        "id": 2218,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2217,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2205,
                          "src": "9551:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9540:17:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                          "typeString": "struct ConceptData.MemberData storage ref"
                        }
                      },
                      "id": 2219,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "assessmentDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2299,
                      "src": "9540:32:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2220,
                      "name": "bucketLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2211,
                      "src": "9575:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9540:47:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2209,
                  "id": 2222,
                  "nodeType": "Return",
                  "src": "9533:54:3"
                }
              ]
            },
            "documentation": "@return the number of the first period of time (bucket) that a member can be available in",
            "id": 2224,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "startBucketNumber",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2206,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2205,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 2224,
                  "src": "9425:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2204,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9425:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9424:15:3"
            },
            "returnParameters": {
              "id": 2209,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2208,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2224,
                  "src": "9462:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2207,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9462:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9461:6:3"
            },
            "scope": 2247,
            "src": "9398:197:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2245,
              "nodeType": "Block",
              "src": "9662:106:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2231,
                          "name": "memberData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2304,
                          "src": "9673:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                            "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                          }
                        },
                        "id": 2233,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2232,
                          "name": "_member",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2226,
                          "src": "9684:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9673:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                          "typeString": "struct ConceptData.MemberData storage ref"
                        }
                      },
                      "id": 2234,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "weight",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2297,
                      "src": "9673:26:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2235,
                      "name": "_weight",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2228,
                      "src": "9702:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9673:36:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2237,
                  "nodeType": "ExpressionStatement",
                  "src": "9673:36:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2243,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2238,
                          "name": "memberData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2304,
                          "src": "9720:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                            "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                          }
                        },
                        "id": 2240,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2239,
                          "name": "_member",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2226,
                          "src": "9731:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9720:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                          "typeString": "struct ConceptData.MemberData storage ref"
                        }
                      },
                      "id": 2241,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "assessmentDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2299,
                      "src": "9720:34:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2242,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5969,
                      "src": "9757:3:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9720:40:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2244,
                  "nodeType": "ExpressionStatement",
                  "src": "9720:40:3"
                }
              ]
            },
            "documentation": null,
            "id": 2246,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addWeight",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2229,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2226,
                  "name": "_member",
                  "nodeType": "VariableDeclaration",
                  "scope": 2246,
                  "src": "9622:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2225,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9622:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2228,
                  "name": "_weight",
                  "nodeType": "VariableDeclaration",
                  "scope": 2246,
                  "src": "9639:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2227,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9639:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9621:31:3"
            },
            "returnParameters": {
              "id": 2230,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9662:0:3"
            },
            "scope": 2247,
            "src": "9603:165:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 2248,
        "src": "429:9342:3"
      }
    ],
    "src": "0:9773:3"
  },
  "legacyAST": {
    "absolutePath": "/builds/fathom/assess/contracts/contracts/Concept.sol",
    "exportedSymbols": {
      "Concept": [
        2247
      ]
    },
    "id": 2248,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1525,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:3"
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/FathomToken.sol",
        "file": "./FathomToken.sol",
        "id": 1526,
        "nodeType": "ImportDirective",
        "scope": 2248,
        "sourceUnit": 3063,
        "src": "27:27:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/ConceptRegistry.sol",
        "file": "./ConceptRegistry.sol",
        "id": 1527,
        "nodeType": "ImportDirective",
        "scope": 2248,
        "sourceUnit": 2683,
        "src": "56:31:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/Assessment.sol",
        "file": "./Assessment.sol",
        "id": 1528,
        "nodeType": "ImportDirective",
        "scope": 2248,
        "sourceUnit": 1296,
        "src": "89:26:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/AssessmentData.sol",
        "file": "./AssessmentData.sol",
        "id": 1529,
        "nodeType": "ImportDirective",
        "scope": 2248,
        "sourceUnit": 1439,
        "src": "117:30:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/Math.sol",
        "file": "./Math.sol",
        "id": 1530,
        "nodeType": "ImportDirective",
        "scope": 2248,
        "sourceUnit": 3285,
        "src": "149:20:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/builds/fathom/assess/contracts/contracts/ConceptData.sol",
        "file": "./ConceptData.sol",
        "id": 1531,
        "nodeType": "ImportDirective",
        "scope": 2248,
        "sourceUnit": 2366,
        "src": "171:27:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1532,
              "name": "ConceptData",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2313,
              "src": "449:11:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ConceptData_$2313",
                "typeString": "contract ConceptData"
              }
            },
            "id": 1533,
            "nodeType": "InheritanceSpecifier",
            "src": "449:11:3"
          }
        ],
        "contractDependencies": [
          2261,
          2313,
          5139
        ],
        "contractKind": "contract",
        "documentation": "@notice The concept contract that defines the concept, initiates assessments\r\nand stores data about its members\r\n@dev See ConceptProxy.sol for the constructor and ConceptData.sol for the storage layout\r",
        "fullyImplemented": true,
        "id": 2247,
        "linearizedBaseContracts": [
          2247,
          2313,
          2261,
          5139
        ],
        "name": "Concept",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 1544,
              "nodeType": "Block",
              "src": "491:80:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1539,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1536,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5967,
                            "src": "510:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "510:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1538,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2267,
                          "src": "524:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "510:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f776e657220616363657373206f6e6c79",
                        "id": 1540,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "531:19:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cbb7cbf9a2b22f5a3e435e50b81af3232ae86a517b686cbee2d424fa6ae6bcc9",
                          "typeString": "literal_string \"Owner access only\""
                        },
                        "value": "Owner access only"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cbb7cbf9a2b22f5a3e435e50b81af3232ae86a517b686cbee2d424fa6ae6bcc9",
                          "typeString": "literal_string \"Owner access only\""
                        }
                      ],
                      "id": 1535,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "502:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1541,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "502:49:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1542,
                  "nodeType": "ExpressionStatement",
                  "src": "502:49:3"
                },
                {
                  "id": 1543,
                  "nodeType": "PlaceholderStatement",
                  "src": "562:1:3"
                }
              ]
            },
            "documentation": null,
            "id": 1545,
            "name": "onlyOwner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 1534,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "488:2:3"
            },
            "src": "470:101:3",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1571,
              "nodeType": "Block",
              "src": "867:174:3",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 1552,
                      "name": "assessmentExists",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2289,
                      "src": "882:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      }
                    },
                    "id": 1555,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1553,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5967,
                        "src": "899:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1554,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "899:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "882:28:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1570,
                  "nodeType": "IfStatement",
                  "src": "878:156:3",
                  "trueBody": {
                    "id": 1569,
                    "nodeType": "Block",
                    "src": "912:122:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1562,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1556,
                                "name": "memberData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2304,
                                "src": "927:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                                  "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                                }
                              },
                              "id": 1558,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1557,
                                "name": "_assessee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1547,
                                "src": "938:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "927:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                                "typeString": "struct ConceptData.MemberData storage ref"
                              }
                            },
                            "id": 1559,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "recentAssessment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2291,
                            "src": "927:38:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1560,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5967,
                              "src": "968:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1561,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "968:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "927:51:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1563,
                        "nodeType": "ExpressionStatement",
                        "src": "927:51:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1565,
                              "name": "_assessee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1547,
                              "src": "1003:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1566,
                              "name": "_weight",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1549,
                              "src": "1014:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1564,
                            "name": "addWeight",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2246,
                            "src": "993:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 1567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "993:29:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1568,
                        "nodeType": "ExpressionStatement",
                        "src": "993:29:3"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Called by completed assessments to add the assessee as member to the concept",
            "id": 1572,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addMember",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1550,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1547,
                  "name": "_assessee",
                  "nodeType": "VariableDeclaration",
                  "scope": 1572,
                  "src": "825:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1546,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "825:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1549,
                  "name": "_weight",
                  "nodeType": "VariableDeclaration",
                  "scope": 1572,
                  "src": "844:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1548,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "844:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "824:33:3"
            },
            "returnParameters": {
              "id": 1551,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "867:0:3"
            },
            "scope": 2247,
            "src": "806:235:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1595,
              "nodeType": "Block",
              "src": "1168:165:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1580,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5967,
                              "src": "1217:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1581,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1217:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1578,
                            "name": "conceptRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2271,
                            "src": "1187:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ConceptRegistry_$2682",
                              "typeString": "contract ConceptRegistry"
                            }
                          },
                          "id": 1579,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "conceptExists",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2537,
                          "src": "1187:29:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view external returns (bool)"
                          }
                        },
                        "id": 1582,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1187:41:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6e6365707420616363657373206f6e6c79",
                        "id": 1583,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1230:21:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_428a6fe69f8b45e30a1960be85beb438081af458f3130d47043a1c786f83477d",
                          "typeString": "literal_string \"Concept access only\""
                        },
                        "value": "Concept access only"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_428a6fe69f8b45e30a1960be85beb438081af458f3130d47043a1c786f83477d",
                          "typeString": "literal_string \"Concept access only\""
                        }
                      ],
                      "id": 1577,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "1179:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1584,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1179:73:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1585,
                  "nodeType": "ExpressionStatement",
                  "src": "1179:73:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 1587,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1282:5:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1586,
                      "name": "toggleAvailability",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1927,
                      "src": "1263:18:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool)"
                      }
                    },
                    "id": 1588,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1263:25:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1589,
                  "nodeType": "ExpressionStatement",
                  "src": "1263:25:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1593,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "1299:26:3",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1590,
                        "name": "memberData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2304,
                        "src": "1306:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                          "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                        }
                      },
                      "id": 1592,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1591,
                        "name": "_member",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1574,
                        "src": "1317:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1306:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                        "typeString": "struct ConceptData.MemberData storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1594,
                  "nodeType": "ExpressionStatement",
                  "src": "1299:26:3"
                }
              ]
            },
            "documentation": "@notice Called by cloned concepts to delete migrated members",
            "id": 1596,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "migrateMember",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1575,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1574,
                  "name": "_member",
                  "nodeType": "VariableDeclaration",
                  "scope": 1596,
                  "src": "1142:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1573,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1142:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1141:17:3"
            },
            "returnParameters": {
              "id": 1576,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1168:0:3"
            },
            "scope": 2247,
            "src": "1119:214:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1669,
              "nodeType": "Block",
              "src": "1621:507:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1609,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1604,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5967,
                            "src": "1640:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1605,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1640:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1606,
                              "name": "conceptRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2271,
                              "src": "1654:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ConceptRegistry_$2682",
                                "typeString": "contract ConceptRegistry"
                              }
                            },
                            "id": 1607,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "distributorAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2546,
                            "src": "1654:34:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 1608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1654:36:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1640:50:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4469737472696275746f7220616363657373206f6e6c79",
                        "id": 1610,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1692:25:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c21a9566e2612b0f80d4697f2ccc1ca808aeea715ecb9b223472edb7d867dabb",
                          "typeString": "literal_string \"Distributor access only\""
                        },
                        "value": "Distributor access only"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c21a9566e2612b0f80d4697f2ccc1ca808aeea715ecb9b223472edb7d867dabb",
                          "typeString": "literal_string \"Distributor access only\""
                        }
                      ],
                      "id": 1603,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "1632:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1632:86:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1612,
                  "nodeType": "ExpressionStatement",
                  "src": "1632:86:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 1618,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1613,
                          "name": "conceptRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2271,
                          "src": "1733:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ConceptRegistry_$2682",
                            "typeString": "contract ConceptRegistry"
                          }
                        },
                        "id": 1614,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "distributorAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2546,
                        "src": "1733:34:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                          "typeString": "function () view external returns (address)"
                        }
                      },
                      "id": 1615,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1733:36:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1616,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5967,
                        "src": "1773:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1617,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1773:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "1733:50:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1668,
                  "nodeType": "IfStatement",
                  "src": "1729:392:3",
                  "trueBody": {
                    "id": 1667,
                    "nodeType": "Block",
                    "src": "1785:336:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1620,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1598,
                              "src": "1810:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1621,
                              "name": "_weight",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1600,
                              "src": "1817:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1619,
                            "name": "addWeight",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2246,
                            "src": "1800:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 1622,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1800:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1623,
                        "nodeType": "ExpressionStatement",
                        "src": "1800:25:3"
                      },
                      {
                        "assignments": [
                          1625
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1625,
                            "name": "startBucket",
                            "nodeType": "VariableDeclaration",
                            "scope": 1667,
                            "src": "1840:16:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1624,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "1840:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1629,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1627,
                              "name": "_user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1598,
                              "src": "1877:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1626,
                            "name": "startBucketNumber",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2224,
                            "src": "1859:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 1628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1859:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1840:43:3"
                      },
                      {
                        "body": {
                          "id": 1665,
                          "nodeType": "Block",
                          "src": "1938:172:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1646,
                                    "name": "_user",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1598,
                                    "src": "1987:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1640,
                                      "name": "buckets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2309,
                                      "src": "1957:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$",
                                        "typeString": "mapping(uint256 => address[] storage ref)"
                                      }
                                    },
                                    "id": 1644,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 1643,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 1641,
                                        "name": "startBucket",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1625,
                                        "src": "1965:11:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 1642,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1631,
                                        "src": "1979:1:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "1965:15:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1957:24:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 1645,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "push",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1957:29:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) returns (uint256)"
                                  }
                                },
                                "id": 1647,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1957:36:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1648,
                              "nodeType": "ExpressionStatement",
                              "src": "1957:36:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1663,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1649,
                                        "name": "memberData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2304,
                                        "src": "2012:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                                          "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                                        }
                                      },
                                      "id": 1651,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1650,
                                        "name": "_user",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1598,
                                        "src": "2023:5:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2012:17:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                                        "typeString": "struct ConceptData.MemberData storage ref"
                                      }
                                    },
                                    "id": 1652,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "bucketIndices",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2295,
                                    "src": "2012:31:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 1656,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1655,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 1653,
                                      "name": "startBucket",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1625,
                                      "src": "2044:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1654,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1631,
                                      "src": "2058:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "2044:15:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2012:48:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1657,
                                      "name": "buckets",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2309,
                                      "src": "2063:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$",
                                        "typeString": "mapping(uint256 => address[] storage ref)"
                                      }
                                    },
                                    "id": 1661,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 1660,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 1658,
                                        "name": "startBucket",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1625,
                                        "src": "2071:11:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 1659,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1631,
                                        "src": "2085:1:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "2071:15:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2063:24:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 1662,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2063:31:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2012:82:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1664,
                              "nodeType": "ExpressionStatement",
                              "src": "2012:82:3"
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1636,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1634,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1631,
                            "src": "1915:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1635,
                            "name": "N_OF_BUCKETS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2312,
                            "src": "1919:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1915:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1666,
                        "initializationExpression": {
                          "assignments": [
                            1631
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1631,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 1666,
                              "src": "1903:6:3",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1630,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "1903:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 1633,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1632,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1912:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1903:10:3"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1638,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "1933:3:3",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 1637,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1631,
                              "src": "1933:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1639,
                          "nodeType": "ExpressionStatement",
                          "src": "1933:3:3"
                        },
                        "nodeType": "ForStatement",
                        "src": "1898:212:3"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Called by the distributor contract to directly add users (without an assessment)\r\n@dev This is only once used once on the mew-concept during the initialization of the network.\r",
            "id": 1670,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addInitialMember",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1601,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1598,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 1670,
                  "src": "1583:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1597,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1583:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1600,
                  "name": "_weight",
                  "nodeType": "VariableDeclaration",
                  "scope": 1670,
                  "src": "1598:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1599,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1598:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1582:29:3"
            },
            "returnParameters": {
              "id": 1602,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1621:0:3"
            },
            "scope": 2247,
            "src": "1557:571:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1751,
              "nodeType": "Block",
              "src": "2792:647:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1684,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1682,
                          "name": "_size",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1674,
                          "src": "2811:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "35",
                          "id": 1683,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2820:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_5_by_1",
                            "typeString": "int_const 5"
                          },
                          "value": "5"
                        },
                        "src": "2811:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4173736573736d656e742073697a65206d757374206265203e3d2066697665",
                        "id": 1685,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2823:33:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_eab93649c905a4ae2efa44b1495097ed616053a3f2623baf8f9de87cde777b2a",
                          "typeString": "literal_string \"Assessment size must be >= five\""
                        },
                        "value": "Assessment size must be >= five"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_eab93649c905a4ae2efa44b1495097ed616053a3f2623baf8f9de87cde777b2a",
                          "typeString": "literal_string \"Assessment size must be >= five\""
                        }
                      ],
                      "id": 1681,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "2803:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1686,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2803:54:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1687,
                  "nodeType": "ExpressionStatement",
                  "src": "2803:54:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1697,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1691,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5967,
                                "src": "2898:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1692,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2898:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1689,
                              "name": "fathomToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2269,
                              "src": "2876:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_FathomToken_$3062",
                                "typeString": "contract FathomToken"
                              }
                            },
                            "id": 1690,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5581,
                            "src": "2876:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 1693,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2876:33:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1694,
                            "name": "_cost",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1672,
                            "src": "2912:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1695,
                            "name": "_size",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1674,
                            "src": "2918:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2912:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2876:47:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "546f6b656e2062616c616e636520746f6f206c6f77",
                        "id": 1698,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2925:23:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6db77ed080137442e8c2bf08f3fb90516ab2b33bdd1e6aab1e5703ba9057e3d1",
                          "typeString": "literal_string \"Token balance too low\""
                        },
                        "value": "Token balance too low"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6db77ed080137442e8c2bf08f3fb90516ab2b33bdd1e6aab1e5703ba9057e3d1",
                          "typeString": "literal_string \"Token balance too low\""
                        }
                      ],
                      "id": 1688,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "2868:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1699,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2868:81:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1700,
                  "nodeType": "ExpressionStatement",
                  "src": "2868:81:3"
                },
                {
                  "assignments": [
                    1702
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1702,
                      "name": "newAssessmentAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 1751,
                      "src": "2962:28:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1701,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2962:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1714,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1707,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5967,
                          "src": "3055:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1708,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3055:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1709,
                        "name": "_cost",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1672,
                        "src": "3080:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1710,
                        "name": "_size",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1674,
                        "src": "3100:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1711,
                        "name": "_waitTime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1676,
                        "src": "3120:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1712,
                        "name": "_timeLimit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1678,
                        "src": "3144:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1703,
                            "name": "conceptRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2271,
                            "src": "2993:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ConceptRegistry_$2682",
                              "typeString": "contract ConceptRegistry"
                            }
                          },
                          "id": 1704,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "proxyFactory",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2548,
                          "src": "2993:28:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ProxyFactory_$5390_$",
                            "typeString": "function () view external returns (contract ProxyFactory)"
                          }
                        },
                        "id": 1705,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2993:30:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ProxyFactory_$5390",
                          "typeString": "contract ProxyFactory"
                        }
                      },
                      "id": 1706,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "createAssessment",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5337,
                      "src": "2993:47:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (address,uint256,uint256,uint256,uint256) external returns (address)"
                      }
                    },
                    "id": 1713,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2993:172:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2962:203:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1715,
                        "name": "assessmentExists",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2289,
                        "src": "3176:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 1717,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1716,
                        "name": "newAssessmentAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1702,
                        "src": "3193:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3176:38:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 1718,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3217:4:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "3176:45:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1720,
                  "nodeType": "ExpressionStatement",
                  "src": "3176:45:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1724,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5967,
                          "src": "3256:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1725,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3256:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1726,
                        "name": "newAssessmentAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1702,
                        "src": "3268:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1729,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1727,
                          "name": "_cost",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1672,
                          "src": "3290:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1728,
                          "name": "_size",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1674,
                          "src": "3298:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3290:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1731,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6022,
                            "src": "3313:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Concept_$2247",
                              "typeString": "contract Concept"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Concept_$2247",
                              "typeString": "contract Concept"
                            }
                          ],
                          "id": 1730,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3305:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1732,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3305:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1721,
                        "name": "fathomToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2269,
                        "src": "3232:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_FathomToken_$3062",
                          "typeString": "contract FathomToken"
                        }
                      },
                      "id": 1723,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "takeBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2932,
                      "src": "3232:23:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address,address,uint256,address) external returns (bool)"
                      }
                    },
                    "id": 1733,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3232:87:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1734,
                  "nodeType": "ExpressionStatement",
                  "src": "3232:87:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1741,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5957,
                                  "src": "3394:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 1742,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3394:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1740,
                              "name": "blockhash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5958,
                              "src": "3384:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (uint256) view returns (bytes32)"
                              }
                            },
                            "id": 1743,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3384:23:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 1739,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3379:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint"
                        },
                        "id": 1744,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3379:29:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1746,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6022,
                            "src": "3418:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Concept_$2247",
                              "typeString": "contract Concept"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Concept_$2247",
                              "typeString": "contract Concept"
                            }
                          ],
                          "id": 1745,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3410:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1747,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3410:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1748,
                        "name": "_size",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1674,
                        "src": "3425:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1736,
                            "name": "newAssessmentAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1702,
                            "src": "3341:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 1735,
                          "name": "Assessment",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1295,
                          "src": "3330:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Assessment_$1295_$",
                            "typeString": "type(contract Assessment)"
                          }
                        },
                        "id": 1737,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3330:32:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Assessment_$1295",
                          "typeString": "contract Assessment"
                        }
                      },
                      "id": 1738,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setAssessorPool",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 591,
                      "src": "3330:48:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,address,uint256) external"
                      }
                    },
                    "id": 1749,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3330:101:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1750,
                  "nodeType": "ExpressionStatement",
                  "src": "3330:101:3"
                }
              ]
            },
            "documentation": "@notice Called by anyone who wants to get assessed in this concept\r\n@param _size the number of assessors\r\n@param _cost the amount of tokens paid per assessor\r\n@param _waitTime how long to wait for enough assessors to accept\r\n@param _timeLimit how long until the assessment has to be finished\r\n@dev Also sends tokens from the msg.sender to the address of the created assessment\r",
            "id": 1752,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "makeAssessment",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1679,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1672,
                  "name": "_cost",
                  "nodeType": "VariableDeclaration",
                  "scope": 1752,
                  "src": "2728:10:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1671,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2728:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1674,
                  "name": "_size",
                  "nodeType": "VariableDeclaration",
                  "scope": 1752,
                  "src": "2740:10:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1673,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2740:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1676,
                  "name": "_waitTime",
                  "nodeType": "VariableDeclaration",
                  "scope": 1752,
                  "src": "2752:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1675,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2752:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1678,
                  "name": "_timeLimit",
                  "nodeType": "VariableDeclaration",
                  "scope": 1752,
                  "src": "2768:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1677,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2768:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2727:57:3"
            },
            "returnParameters": {
              "id": 1680,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2792:0:3"
            },
            "scope": 2247,
            "src": "2704:735:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1926,
              "nodeType": "Block",
              "src": "3722:1654:3",
              "statements": [
                {
                  "assignments": [
                    1758
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1758,
                      "name": "startBucket",
                      "nodeType": "VariableDeclaration",
                      "scope": 1926,
                      "src": "3821:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1757,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3821:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1763,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1760,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5967,
                          "src": "3859:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1761,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3859:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 1759,
                      "name": "startBucketNumber",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2224,
                      "src": "3841:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view returns (uint256)"
                      }
                    },
                    "id": 1762,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3841:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3821:49:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 1764,
                    "name": "_available",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1754,
                    "src": "3885:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1842,
                  "nodeType": "IfStatement",
                  "src": "3881:800:3",
                  "trueBody": {
                    "id": 1841,
                    "nodeType": "Block",
                    "src": "3897:784:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1772,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1766,
                                    "name": "memberData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2304,
                                    "src": "3920:10:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                                      "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                                    }
                                  },
                                  "id": 1769,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1767,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5967,
                                      "src": "3931:3:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 1768,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3931:10:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3920:22:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                                    "typeString": "struct ConceptData.MemberData storage ref"
                                  }
                                },
                                "id": 1770,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "weight",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2297,
                                "src": "3920:29:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1771,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3952:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3920:33:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "4d757374206861766520612077656967687420746f20746f67676c6520617661696c61626c65",
                              "id": 1773,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3955:40:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_80ade0ace020a86e52a27b3839348b4c1bd44ff426e6faaacc6aa9f3da1f4109",
                                "typeString": "literal_string \"Must have a weight to toggle available\""
                              },
                              "value": "Must have a weight to toggle available"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_80ade0ace020a86e52a27b3839348b4c1bd44ff426e6faaacc6aa9f3da1f4109",
                                "typeString": "literal_string \"Must have a weight to toggle available\""
                              }
                            ],
                            "id": 1765,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              5970,
                              5971
                            ],
                            "referencedDeclaration": 5971,
                            "src": "3912:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1774,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3912:84:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1775,
                        "nodeType": "ExpressionStatement",
                        "src": "3912:84:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1785,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1783,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1777,
                                      "name": "memberData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2304,
                                      "src": "4019:10:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                                        "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                                      }
                                    },
                                    "id": 1780,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1778,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5967,
                                        "src": "4030:3:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 1779,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "4030:10:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4019:22:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                                      "typeString": "struct ConceptData.MemberData storage ref"
                                    }
                                  },
                                  "id": 1781,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "assessmentDate",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2299,
                                  "src": "4019:37:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1782,
                                  "name": "lifetime",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2285,
                                  "src": "4059:8:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4019:48:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1784,
                                "name": "now",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5969,
                                "src": "4070:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4019:54:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "576569676874206d757374206e6f74206265206578706972656420746f20746f67676c6520617661696c61626c65",
                              "id": 1786,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4075:48:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2cd947aa5a38e53ee283ae87c85c51fbcb150dce07b0b8279f975391c9619098",
                                "typeString": "literal_string \"Weight must not be expired to toggle available\""
                              },
                              "value": "Weight must not be expired to toggle available"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2cd947aa5a38e53ee283ae87c85c51fbcb150dce07b0b8279f975391c9619098",
                                "typeString": "literal_string \"Weight must not be expired to toggle available\""
                              }
                            ],
                            "id": 1776,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              5970,
                              5971
                            ],
                            "referencedDeclaration": 5971,
                            "src": "4011:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1787,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4011:113:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1788,
                        "nodeType": "ExpressionStatement",
                        "src": "4011:113:3"
                      },
                      {
                        "body": {
                          "id": 1838,
                          "nodeType": "Block",
                          "src": "4287:362:3",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1808,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1798,
                                        "name": "memberData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2304,
                                        "src": "4382:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                                          "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                                        }
                                      },
                                      "id": 1801,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1799,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5967,
                                          "src": "4393:3:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 1800,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "4393:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4382:22:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                                        "typeString": "struct ConceptData.MemberData storage ref"
                                      }
                                    },
                                    "id": 1802,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "bucketIndices",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2295,
                                    "src": "4382:36:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 1806,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1805,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 1803,
                                      "name": "startBucket",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1758,
                                      "src": "4419:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1804,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1790,
                                      "src": "4433:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4419:15:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4382:53:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1807,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4439:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "4382:58:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 1837,
                              "nodeType": "IfStatement",
                              "src": "4378:256:3",
                              "trueBody": {
                                "id": 1836,
                                "nodeType": "Block",
                                "src": "4442:192:3",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 1815,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5967,
                                            "src": "4495:3:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 1816,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "4495:10:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 1809,
                                            "name": "buckets",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2309,
                                            "src": "4465:7:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$",
                                              "typeString": "mapping(uint256 => address[] storage ref)"
                                            }
                                          },
                                          "id": 1813,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 1812,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "id": 1810,
                                              "name": "startBucket",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1758,
                                              "src": "4473:11:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "+",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "id": 1811,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1790,
                                              "src": "4487:1:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "4473:15:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "4465:24:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                            "typeString": "address[] storage ref"
                                          }
                                        },
                                        "id": 1814,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "push",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "4465:29:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
                                          "typeString": "function (address) returns (uint256)"
                                        }
                                      },
                                      "id": 1817,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4465:41:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1818,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4465:41:3"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1834,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "id": 1819,
                                              "name": "memberData",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2304,
                                              "src": "4529:10:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                                                "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                                              }
                                            },
                                            "id": 1822,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 1820,
                                                "name": "msg",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5967,
                                                "src": "4540:3:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_message",
                                                  "typeString": "msg"
                                                }
                                              },
                                              "id": 1821,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "sender",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "4540:10:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "4529:22:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                                              "typeString": "struct ConceptData.MemberData storage ref"
                                            }
                                          },
                                          "id": 1823,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "bucketIndices",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2295,
                                          "src": "4529:36:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 1827,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 1826,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 1824,
                                            "name": "startBucket",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1758,
                                            "src": "4566:11:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 1825,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1790,
                                            "src": "4580:1:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "4566:15:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "4529:53:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 1828,
                                            "name": "buckets",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2309,
                                            "src": "4585:7:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$",
                                              "typeString": "mapping(uint256 => address[] storage ref)"
                                            }
                                          },
                                          "id": 1832,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 1831,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "id": 1829,
                                              "name": "startBucket",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1758,
                                              "src": "4593:11:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "+",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "id": 1830,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1790,
                                              "src": "4607:1:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "4593:15:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "4585:24:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                            "typeString": "address[] storage ref"
                                          }
                                        },
                                        "id": 1833,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "4585:31:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4529:87:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1835,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4529:87:3"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1794,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1792,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1790,
                            "src": "4264:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1793,
                            "name": "N_OF_BUCKETS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2312,
                            "src": "4268:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4264:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1839,
                        "initializationExpression": {
                          "assignments": [
                            1790
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1790,
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 1839,
                              "src": "4256:6:3",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1789,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "4256:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 1791,
                          "initialValue": null,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4256:6:3"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1796,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "4282:3:3",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 1795,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1790,
                              "src": "4282:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1797,
                          "nodeType": "ExpressionStatement",
                          "src": "4282:3:3"
                        },
                        "nodeType": "ForStatement",
                        "src": "4251:398:3"
                      },
                      {
                        "expression": null,
                        "functionReturnParameters": 1756,
                        "id": 1840,
                        "nodeType": "Return",
                        "src": "4663:7:3"
                      }
                    ]
                  }
                },
                {
                  "body": {
                    "id": 1924,
                    "nodeType": "Block",
                    "src": "4765:604:3",
                    "statements": [
                      {
                        "assignments": [
                          1853
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1853,
                            "name": "index",
                            "nodeType": "VariableDeclaration",
                            "scope": 1924,
                            "src": "4780:10:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1852,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "4780:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1863,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1854,
                                "name": "memberData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2304,
                                "src": "4793:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                                  "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                                }
                              },
                              "id": 1857,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 1855,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5967,
                                  "src": "4804:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 1856,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4804:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4793:22:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                                "typeString": "struct ConceptData.MemberData storage ref"
                              }
                            },
                            "id": 1858,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "bucketIndices",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2295,
                            "src": "4793:36:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 1862,
                          "indexExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1861,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1859,
                              "name": "startBucket",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1758,
                              "src": "4830:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1860,
                              "name": "bi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1844,
                              "src": "4844:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4830:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4793:54:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4780:67:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1864,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1853,
                            "src": "4953:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1865,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4961:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4953:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1923,
                        "nodeType": "IfStatement",
                        "src": "4949:409:3",
                        "trueBody": {
                          "id": 1922,
                          "nodeType": "Block",
                          "src": "4964:394:3",
                          "statements": [
                            {
                              "assignments": [
                                1870
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1870,
                                  "name": "bucket",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1922,
                                  "src": "4983:24:3",
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                    "typeString": "address[]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 1868,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4983:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 1869,
                                    "length": null,
                                    "nodeType": "ArrayTypeName",
                                    "src": "4983:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                      "typeString": "address[]"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1876,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1871,
                                  "name": "buckets",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2309,
                                  "src": "5010:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$",
                                    "typeString": "mapping(uint256 => address[] storage ref)"
                                  }
                                },
                                "id": 1875,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1874,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 1872,
                                    "name": "startBucket",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1758,
                                    "src": "5018:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 1873,
                                    "name": "bi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1844,
                                    "src": "5032:2:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5018:16:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5010:25:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4983:52:3"
                            },
                            {
                              "assignments": [
                                1878
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1878,
                                  "name": "lastMember",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1922,
                                  "src": "5054:18:3",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 1877,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5054:7:3",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1885,
                              "initialValue": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1879,
                                  "name": "bucket",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1870,
                                  "src": "5075:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                    "typeString": "address[] storage pointer"
                                  }
                                },
                                "id": 1884,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1883,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1880,
                                      "name": "bucket",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1870,
                                      "src": "5082:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                        "typeString": "address[] storage pointer"
                                      }
                                    },
                                    "id": 1881,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "5082:13:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 1882,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5097:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "5082:16:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5075:24:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5054:45:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1892,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1886,
                                    "name": "bucket",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1870,
                                    "src": "5120:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                      "typeString": "address[] storage pointer"
                                    }
                                  },
                                  "id": 1890,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1889,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 1887,
                                      "name": "index",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1853,
                                      "src": "5127:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 1888,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5135:1:3",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "5127:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5120:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 1891,
                                  "name": "lastMember",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1878,
                                  "src": "5140:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5120:30:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1893,
                              "nodeType": "ExpressionStatement",
                              "src": "5120:30:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1903,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1894,
                                        "name": "memberData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2304,
                                        "src": "5169:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                                          "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                                        }
                                      },
                                      "id": 1896,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 1895,
                                        "name": "lastMember",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1878,
                                        "src": "5180:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5169:22:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                                        "typeString": "struct ConceptData.MemberData storage ref"
                                      }
                                    },
                                    "id": 1897,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "bucketIndices",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2295,
                                    "src": "5169:36:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 1901,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1900,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 1898,
                                      "name": "startBucket",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1758,
                                      "src": "5206:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1899,
                                      "name": "bi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1844,
                                      "src": "5220:2:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "5206:16:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5169:54:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 1902,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1853,
                                  "src": "5226:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5169:62:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1904,
                              "nodeType": "ExpressionStatement",
                              "src": "5169:62:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1915,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 1905,
                                        "name": "memberData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2304,
                                        "src": "5250:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                                          "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                                        }
                                      },
                                      "id": 1908,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1906,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5967,
                                          "src": "5261:3:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 1907,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "5261:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5250:22:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                                        "typeString": "struct ConceptData.MemberData storage ref"
                                      }
                                    },
                                    "id": 1909,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "bucketIndices",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2295,
                                    "src": "5250:36:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 1913,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1912,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 1910,
                                      "name": "startBucket",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1758,
                                      "src": "5287:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1911,
                                      "name": "bi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1844,
                                      "src": "5301:2:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "5287:16:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5250:54:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1914,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5307:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5250:58:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1916,
                              "nodeType": "ExpressionStatement",
                              "src": "5250:58:3"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1920,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "5327:15:3",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1917,
                                    "name": "bucket",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1870,
                                    "src": "5327:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                      "typeString": "address[] storage pointer"
                                    }
                                  },
                                  "id": 1919,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5327:13:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1921,
                              "nodeType": "ExpressionStatement",
                              "src": "5327:15:3"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1848,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1846,
                      "name": "bi",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1844,
                      "src": "4740:2:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1847,
                      "name": "N_OF_BUCKETS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2312,
                      "src": "4745:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4740:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1925,
                  "initializationExpression": {
                    "assignments": [
                      1844
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1844,
                        "name": "bi",
                        "nodeType": "VariableDeclaration",
                        "scope": 1925,
                        "src": "4731:7:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1843,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4731:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1845,
                    "initialValue": null,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4731:7:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1850,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4759:4:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1849,
                        "name": "bi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1844,
                        "src": "4759:2:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1851,
                    "nodeType": "ExpressionStatement",
                    "src": "4759:4:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "4726:643:3"
                }
              ]
            },
            "documentation": "@notice Called by members to signal that they do/do not want to be called as assessor in this concept\r\n@dev See AssessmentData.sol for an explanation how buckets are used to discretize time.\r",
            "id": 1927,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "toggleAvailability",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1755,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1754,
                  "name": "_available",
                  "nodeType": "VariableDeclaration",
                  "scope": 1927,
                  "src": "3698:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1753,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3698:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3697:17:3"
            },
            "returnParameters": {
              "id": 1756,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3722:0:3"
            },
            "scope": 2247,
            "src": "3670:1706:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1995,
              "nodeType": "Block",
              "src": "5509:866:3",
              "statements": [
                {
                  "assignments": [
                    1931
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1931,
                      "name": "original",
                      "nodeType": "VariableDeclaration",
                      "scope": 1995,
                      "src": "5520:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Concept_$2247",
                        "typeString": "contract Concept"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1930,
                        "name": "Concept",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2247,
                        "src": "5520:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Concept_$2247",
                          "typeString": "contract Concept"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1935,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1933,
                        "name": "cloneOf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2275,
                        "src": "5547:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1932,
                      "name": "Concept",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2247,
                      "src": "5539:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Concept_$2247_$",
                        "typeString": "type(contract Concept)"
                      }
                    },
                    "id": 1934,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5539:16:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Concept_$2247",
                      "typeString": "contract Concept"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5520:35:3"
                },
                {
                  "assignments": [
                    1937
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1937,
                      "name": "recentAssessment",
                      "nodeType": "VariableDeclaration",
                      "scope": 1995,
                      "src": "5566:24:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1936,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5566:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1938,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5566:24:3"
                },
                {
                  "assignments": [
                    1940
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1940,
                      "name": "weight",
                      "nodeType": "VariableDeclaration",
                      "scope": 1995,
                      "src": "5601:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1939,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5601:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1941,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5601:11:3"
                },
                {
                  "assignments": [
                    1943
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1943,
                      "name": "assessmentDate",
                      "nodeType": "VariableDeclaration",
                      "scope": 1995,
                      "src": "5623:19:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1942,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5623:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1944,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5623:19:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1954,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "id": 1945,
                          "name": "recentAssessment",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1937,
                          "src": "5654:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1946,
                          "name": "weight",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1940,
                          "src": "5672:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1947,
                          "name": "assessmentDate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1943,
                          "src": "5680:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1948,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "5653:42:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(address,uint256,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1951,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5967,
                            "src": "5718:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5718:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1949,
                          "name": "original",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1931,
                          "src": "5698:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Concept_$2247",
                            "typeString": "contract Concept"
                          }
                        },
                        "id": 1950,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "memberData",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2304,
                        "src": "5698:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$_t_uint256_$_t_uint256_$",
                          "typeString": "function (address) view external returns (address,uint256,uint256)"
                        }
                      },
                      "id": 1953,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5698:31:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$_t_uint256_$",
                        "typeString": "tuple(address,uint256,uint256)"
                      }
                    },
                    "src": "5653:76:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1955,
                  "nodeType": "ExpressionStatement",
                  "src": "5653:76:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1959,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1957,
                          "name": "weight",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1940,
                          "src": "5750:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1958,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5759:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "5750:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d75737420686176652061206e6f6e2d7a65726f2077656967687420696e206f726967696e616c20636f6e63657074",
                        "id": 1960,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5762:49:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_762fc5b5c83124ddec72a75d1d153a12fa388f10779fc113a6e90d8ceb6bac9a",
                          "typeString": "literal_string \"Must have a non-zero weight in original concept\""
                        },
                        "value": "Must have a non-zero weight in original concept"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_762fc5b5c83124ddec72a75d1d153a12fa388f10779fc113a6e90d8ceb6bac9a",
                          "typeString": "literal_string \"Must have a non-zero weight in original concept\""
                        }
                      ],
                      "id": 1956,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "5742:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1961,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5742:70:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1962,
                  "nodeType": "ExpressionStatement",
                  "src": "5742:70:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1968,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1964,
                            "name": "assessmentDate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1943,
                            "src": "5831:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1965,
                            "name": "lifetime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2285,
                            "src": "5848:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5831:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1967,
                          "name": "now",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5969,
                          "src": "5859:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5831:31:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4173736573736d656e74206d757374206e6f74206265206f6c646572207468616e20636f6e63657074206c69666574696d65",
                        "id": 1969,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5864:52:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_14f01dc86f47abcaf1640ce3f698a25715d1d6792ef6477b19ebc72620fb1a71",
                          "typeString": "literal_string \"Assessment must not be older than concept lifetime\""
                        },
                        "value": "Assessment must not be older than concept lifetime"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_14f01dc86f47abcaf1640ce3f698a25715d1d6792ef6477b19ebc72620fb1a71",
                          "typeString": "literal_string \"Assessment must not be older than concept lifetime\""
                        }
                      ],
                      "id": 1963,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "5823:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1970,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5823:94:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1971,
                  "nodeType": "ExpressionStatement",
                  "src": "5823:94:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1978,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1972,
                          "name": "memberData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2304,
                          "src": "6096:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                            "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                          }
                        },
                        "id": 1975,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1973,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5967,
                            "src": "6107:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1974,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6107:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6096:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                          "typeString": "struct ConceptData.MemberData storage ref"
                        }
                      },
                      "id": 1976,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "weight",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2297,
                      "src": "6096:29:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1977,
                      "name": "weight",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1940,
                      "src": "6128:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6096:38:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1979,
                  "nodeType": "ExpressionStatement",
                  "src": "6096:38:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1986,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1980,
                          "name": "memberData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2304,
                          "src": "6145:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                            "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                          }
                        },
                        "id": 1983,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1981,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5967,
                            "src": "6156:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1982,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6156:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6145:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                          "typeString": "struct ConceptData.MemberData storage ref"
                        }
                      },
                      "id": 1984,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "assessmentDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2299,
                      "src": "6145:37:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1985,
                      "name": "assessmentDate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1943,
                      "src": "6185:14:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6145:54:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1987,
                  "nodeType": "ExpressionStatement",
                  "src": "6145:54:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1991,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5967,
                          "src": "6235:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1992,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6235:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1988,
                        "name": "original",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1931,
                        "src": "6212:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Concept_$2247",
                          "typeString": "contract Concept"
                        }
                      },
                      "id": 1990,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "migrateMember",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1596,
                      "src": "6212:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 1993,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6212:34:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1994,
                  "nodeType": "ExpressionStatement",
                  "src": "6212:34:3"
                }
              ]
            },
            "documentation": "@notice Called by members of the original concept who want to migrate to this one",
            "id": 1996,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "integrateMember",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1928,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5499:2:3"
            },
            "returnParameters": {
              "id": 1929,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5509:0:3"
            },
            "scope": 2247,
            "src": "5475:900:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2007,
              "nodeType": "Block",
              "src": "6579:36:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2005,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2003,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2267,
                      "src": "6590:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2004,
                      "name": "_newOwner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1998,
                      "src": "6598:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "6590:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2006,
                  "nodeType": "ExpressionStatement",
                  "src": "6590:17:3"
                }
              ]
            },
            "documentation": null,
            "id": 2008,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 2001,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2000,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1545,
                  "src": "6567:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6567:11:3"
              }
            ],
            "name": "transferOwnership",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1999,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1998,
                  "name": "_newOwner",
                  "nodeType": "VariableDeclaration",
                  "scope": 2008,
                  "src": "6541:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1997,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6541:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6540:19:3"
            },
            "returnParameters": {
              "id": 2002,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6579:0:3"
            },
            "scope": 2247,
            "src": "6514:101:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2104,
              "nodeType": "Block",
              "src": "6883:864:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2024,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2020,
                            "name": "_newParents",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2011,
                            "src": "6902:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 2021,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6902:18:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2022,
                            "name": "_newParentFactors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2014,
                            "src": "6924:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 2023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6924:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6902:46:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4e756d626572206f6620706172656e7420636f6e6365707473206d757374206d6174636820706172656e7420666163746f7273",
                        "id": 2025,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6963:53:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3e2fb13a4d4f3bd239f0e89d093159742c35e410b60049aa5ded9b9cc88657b3",
                          "typeString": "literal_string \"Number of parent concepts must match parent factors\""
                        },
                        "value": "Number of parent concepts must match parent factors"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3e2fb13a4d4f3bd239f0e89d093159742c35e410b60049aa5ded9b9cc88657b3",
                          "typeString": "literal_string \"Number of parent concepts must match parent factors\""
                        }
                      ],
                      "id": 2019,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "6894:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2026,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6894:133:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2027,
                  "nodeType": "ExpressionStatement",
                  "src": "6894:133:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2032,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2029,
                            "name": "_newParents",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2011,
                            "src": "7046:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 2030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7046:18:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "36",
                          "id": 2031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7067:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_6_by_1",
                            "typeString": "int_const 6"
                          },
                          "value": "6"
                        },
                        "src": "7046:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "546f6f206d616e7920706172656e7473",
                        "id": 2033,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7070:18:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_48975c2c5fe4497259e99e14ba749e889f3262cedfd49795763ed7cc1948d8fb",
                          "typeString": "literal_string \"Too many parents\""
                        },
                        "value": "Too many parents"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_48975c2c5fe4497259e99e14ba749e889f3262cedfd49795763ed7cc1948d8fb",
                          "typeString": "literal_string \"Too many parents\""
                        }
                      ],
                      "id": 2028,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "7038:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2034,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7038:51:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2035,
                  "nodeType": "ExpressionStatement",
                  "src": "7038:51:3"
                },
                {
                  "assignments": [
                    2037
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2037,
                      "name": "sumOfParentFactors",
                      "nodeType": "VariableDeclaration",
                      "scope": 2104,
                      "src": "7146:23:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2036,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7146:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2039,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 2038,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7172:1:3",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7146:27:3"
                },
                {
                  "body": {
                    "id": 2087,
                    "nodeType": "Block",
                    "src": "7228:348:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2058,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2052,
                                  "name": "_newParents",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2011,
                                  "src": "7251:11:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 2054,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2053,
                                  "name": "j",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2041,
                                  "src": "7263:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7251:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2056,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6022,
                                    "src": "7277:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Concept_$2247",
                                      "typeString": "contract Concept"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_Concept_$2247",
                                      "typeString": "contract Concept"
                                    }
                                  ],
                                  "id": 2055,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7269:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 2057,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7269:13:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "7251:31:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "436f6e636570742063616e6e6f7420626520706172656e7420746f20697473656c66",
                              "id": 2059,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7284:36:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_11b3f239825c2641202ded5b3d11327dc03a64eac64e113235c9de0ed51f8aa4",
                                "typeString": "literal_string \"Concept cannot be parent to itself\""
                              },
                              "value": "Concept cannot be parent to itself"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_11b3f239825c2641202ded5b3d11327dc03a64eac64e113235c9de0ed51f8aa4",
                                "typeString": "literal_string \"Concept cannot be parent to itself\""
                              }
                            ],
                            "id": 2051,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              5970,
                              5971
                            ],
                            "referencedDeclaration": 5971,
                            "src": "7243:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7243:78:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2061,
                        "nodeType": "ExpressionStatement",
                        "src": "7243:78:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 2065,
                                    "name": "_newParents",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2011,
                                    "src": "7374:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 2067,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 2066,
                                    "name": "j",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2041,
                                    "src": "7386:1:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7374:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2063,
                                  "name": "conceptRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2271,
                                  "src": "7344:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ConceptRegistry_$2682",
                                    "typeString": "contract ConceptRegistry"
                                  }
                                },
                                "id": 2064,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "conceptExists",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2537,
                                "src": "7344:29:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view external returns (bool)"
                                }
                              },
                              "id": 2068,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7344:45:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506172656e7420636f6e6365707420646f6573206e6f74206578697374",
                              "id": 2069,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7391:31:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0c9a49f372bc8b5427d3785d78a57de4c1e2db48ae040a906e0459ec5a48b6da",
                                "typeString": "literal_string \"Parent concept does not exist\""
                              },
                              "value": "Parent concept does not exist"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0c9a49f372bc8b5427d3785d78a57de4c1e2db48ae040a906e0459ec5a48b6da",
                                "typeString": "literal_string \"Parent concept does not exist\""
                              }
                            ],
                            "id": 2062,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              5970,
                              5971
                            ],
                            "referencedDeclaration": 5971,
                            "src": "7336:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7336:87:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2071,
                        "nodeType": "ExpressionStatement",
                        "src": "7336:87:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2077,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 2073,
                                  "name": "_newParentFactors",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2014,
                                  "src": "7446:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 2075,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 2074,
                                  "name": "j",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2041,
                                  "src": "7464:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7446:20:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31303030",
                                "id": 2076,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7470:4:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1000_by_1",
                                  "typeString": "int_const 1000"
                                },
                                "value": "1000"
                              },
                              "src": "7446:28:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "506172656e7420666163746f72206d757374206265203c3d31303030",
                              "id": 2078,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7476:30:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2cae72e41f4d1b1e9f9f597653ac9ada639d7ea22e90fe4ffaf5302b7204aad6",
                                "typeString": "literal_string \"Parent factor must be <=1000\""
                              },
                              "value": "Parent factor must be <=1000"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2cae72e41f4d1b1e9f9f597653ac9ada639d7ea22e90fe4ffaf5302b7204aad6",
                                "typeString": "literal_string \"Parent factor must be <=1000\""
                              }
                            ],
                            "id": 2072,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              5970,
                              5971
                            ],
                            "referencedDeclaration": 5971,
                            "src": "7438:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7438:69:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2080,
                        "nodeType": "ExpressionStatement",
                        "src": "7438:69:3"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2085,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2081,
                            "name": "sumOfParentFactors",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2037,
                            "src": "7522:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 2082,
                              "name": "_newParentFactors",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2014,
                              "src": "7544:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 2084,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 2083,
                              "name": "j",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2041,
                              "src": "7562:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7544:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7522:42:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2086,
                        "nodeType": "ExpressionStatement",
                        "src": "7522:42:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2047,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2044,
                      "name": "j",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2041,
                      "src": "7199:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2045,
                        "name": "_newParents",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2011,
                        "src": "7203:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 2046,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7203:18:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7199:22:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2088,
                  "initializationExpression": {
                    "assignments": [
                      2041
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2041,
                        "name": "j",
                        "nodeType": "VariableDeclaration",
                        "scope": 2088,
                        "src": "7189:6:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2040,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "7189:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2043,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2042,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7196:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "7189:8:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2049,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "7223:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2048,
                        "name": "j",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2041,
                        "src": "7223:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2050,
                    "nodeType": "ExpressionStatement",
                    "src": "7223:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "7184:392:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2092,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2090,
                          "name": "sumOfParentFactors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2037,
                          "src": "7594:18:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31303030",
                          "id": 2091,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7616:4:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1000_by_1",
                            "typeString": "int_const 1000"
                          },
                          "value": "1000"
                        },
                        "src": "7594:26:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "506172656e7420666163746f727320646f206e6f742061646420757020746f2031303030",
                        "id": 2093,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7622:38:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_92d16b02d471dc4c706dc3ac1c92769dd473c1b433b60ceca8e48f407b41f0d2",
                          "typeString": "literal_string \"Parent factors do not add up to 1000\""
                        },
                        "value": "Parent factors do not add up to 1000"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_92d16b02d471dc4c706dc3ac1c92769dd473c1b433b60ceca8e48f407b41f0d2",
                          "typeString": "literal_string \"Parent factors do not add up to 1000\""
                        }
                      ],
                      "id": 2089,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        5970,
                        5971
                      ],
                      "referencedDeclaration": 5971,
                      "src": "7586:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2094,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7586:75:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2095,
                  "nodeType": "ExpressionStatement",
                  "src": "7586:75:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2098,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2096,
                      "name": "parents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2278,
                      "src": "7674:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                        "typeString": "address[] storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2097,
                      "name": "_newParents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2011,
                      "src": "7684:11:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[] memory"
                      }
                    },
                    "src": "7674:21:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "id": 2099,
                  "nodeType": "ExpressionStatement",
                  "src": "7674:21:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2102,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2100,
                      "name": "parentFactors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2281,
                      "src": "7706:13:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                        "typeString": "uint256[] storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2101,
                      "name": "_newParentFactors",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2014,
                      "src": "7722:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "src": "7706:33:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                      "typeString": "uint256[] storage ref"
                    }
                  },
                  "id": 2103,
                  "nodeType": "ExpressionStatement",
                  "src": "7706:33:3"
                }
              ]
            },
            "documentation": "@dev The restrictions on parent-concepts here NEED to be identical to the ones in the constructor",
            "id": 2105,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 2017,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2016,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1545,
                  "src": "6866:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6866:11:3"
              }
            ],
            "name": "changeParents",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2015,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2011,
                  "name": "_newParents",
                  "nodeType": "VariableDeclaration",
                  "scope": 2105,
                  "src": "6763:28:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2009,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "6763:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2010,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6763:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2014,
                  "name": "_newParentFactors",
                  "nodeType": "VariableDeclaration",
                  "scope": 2105,
                  "src": "6802:31:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2012,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "6802:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2013,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6802:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6752:88:3"
            },
            "returnParameters": {
              "id": 2018,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6883:0:3"
            },
            "scope": 2247,
            "src": "6730:1017:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2116,
              "nodeType": "Block",
              "src": "7814:31:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2114,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2112,
                      "name": "data",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2283,
                      "src": "7825:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2113,
                      "name": "_data",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2107,
                      "src": "7832:5:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "7825:12:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 2115,
                  "nodeType": "ExpressionStatement",
                  "src": "7825:12:3"
                }
              ]
            },
            "documentation": null,
            "id": 2117,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 2110,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2109,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1545,
                  "src": "7802:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7802:11:3"
              }
            ],
            "name": "changeData",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2108,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2107,
                  "name": "_data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2117,
                  "src": "7775:18:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2106,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7775:5:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7774:20:3"
            },
            "returnParameters": {
              "id": 2111,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7814:0:3"
            },
            "scope": 2247,
            "src": "7755:90:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2128,
              "nodeType": "Block",
              "src": "7915:42:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2126,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 2124,
                      "name": "lifetime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2285,
                      "src": "7926:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2125,
                      "name": "_newLifetime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2119,
                      "src": "7937:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7926:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2127,
                  "nodeType": "ExpressionStatement",
                  "src": "7926:23:3"
                }
              ]
            },
            "documentation": null,
            "id": 2129,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [],
                "id": 2122,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 2121,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1545,
                  "src": "7903:9:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7903:11:3"
              }
            ],
            "name": "changeLifetime",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2120,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2119,
                  "name": "_newLifetime",
                  "nodeType": "VariableDeclaration",
                  "scope": 2129,
                  "src": "7877:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2118,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7877:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7876:19:3"
            },
            "returnParameters": {
              "id": 2123,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7915:0:3"
            },
            "scope": 2247,
            "src": "7853:104:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2153,
              "nodeType": "Block",
              "src": "8237:137:3",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2141,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2136,
                            "name": "memberData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2304,
                            "src": "8252:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                              "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                            }
                          },
                          "id": 2138,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2137,
                            "name": "_member",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2131,
                            "src": "8263:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8252:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                            "typeString": "struct ConceptData.MemberData storage ref"
                          }
                        },
                        "id": 2139,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "assessmentDate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2299,
                        "src": "8252:34:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 2140,
                        "name": "lifetime",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2285,
                        "src": "8289:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "8252:45:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2142,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5969,
                      "src": "8300:3:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8252:51:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2152,
                  "nodeType": "IfStatement",
                  "src": "8248:119:3",
                  "trueBody": {
                    "id": 2151,
                    "nodeType": "Block",
                    "src": "8305:62:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2144,
                            "name": "weight",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2134,
                            "src": "8320:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 2145,
                                "name": "memberData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2304,
                                "src": "8329:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                                  "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                                }
                              },
                              "id": 2147,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 2146,
                                "name": "_member",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2131,
                                "src": "8340:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8329:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                                "typeString": "struct ConceptData.MemberData storage ref"
                              }
                            },
                            "id": 2148,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "weight",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2297,
                            "src": "8329:26:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8320:35:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2150,
                        "nodeType": "ExpressionStatement",
                        "src": "8320:35:3"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@return the weight used for probabilistic calling of assessors",
            "id": 2154,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getWeight",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2132,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2131,
                  "name": "_member",
                  "nodeType": "VariableDeclaration",
                  "scope": 2154,
                  "src": "8187:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2130,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8187:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8186:17:3"
            },
            "returnParameters": {
              "id": 2135,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2134,
                  "name": "weight",
                  "nodeType": "VariableDeclaration",
                  "scope": 2154,
                  "src": "8224:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2133,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8224:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8223:13:3"
            },
            "scope": 2247,
            "src": "8168:206:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2165,
              "nodeType": "Block",
              "src": "8524:62:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2159,
                        "name": "buckets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2309,
                        "src": "8542:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$",
                          "typeString": "mapping(uint256 => address[] storage ref)"
                        }
                      },
                      "id": 2162,
                      "indexExpression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 2160,
                          "name": "activeBucketNumber",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2203,
                          "src": "8550:18:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 2161,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8550:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8542:29:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                        "typeString": "address[] storage ref"
                      }
                    },
                    "id": 2163,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "8542:36:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2158,
                  "id": 2164,
                  "nodeType": "Return",
                  "src": "8535:43:3"
                }
              ]
            },
            "documentation": "@return how many members are currently available to act as assessor",
            "id": 2166,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNumberOfAvailableMembers",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2155,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8495:2:3"
            },
            "returnParameters": {
              "id": 2158,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2157,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2166,
                  "src": "8518:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2156,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8518:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8517:6:3"
            },
            "scope": 2247,
            "src": "8459:127:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2177,
              "nodeType": "Block",
              "src": "8664:55:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 2172,
                      "name": "buckets",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2309,
                      "src": "8682:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_array$_t_address_$dyn_storage_$",
                        "typeString": "mapping(uint256 => address[] storage ref)"
                      }
                    },
                    "id": 2175,
                    "indexExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 2173,
                        "name": "activeBucketNumber",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2203,
                        "src": "8690:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                          "typeString": "function () view returns (uint256)"
                        }
                      },
                      "id": 2174,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8690:20:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8682:29:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "functionReturnParameters": 2171,
                  "id": 2176,
                  "nodeType": "Return",
                  "src": "8675:36:3"
                }
              ]
            },
            "documentation": null,
            "id": 2178,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAvailableMembers",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2167,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8623:2:3"
            },
            "returnParameters": {
              "id": 2171,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2170,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2178,
                  "src": "8646:16:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2168,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "8646:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2169,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "8646:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8645:18:3"
            },
            "scope": 2247,
            "src": "8594:125:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2186,
              "nodeType": "Block",
              "src": "8783:40:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 2183,
                      "name": "parents",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2278,
                      "src": "8801:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                        "typeString": "address[] storage ref"
                      }
                    },
                    "id": 2184,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "8801:14:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2182,
                  "id": 2185,
                  "nodeType": "Return",
                  "src": "8794:21:3"
                }
              ]
            },
            "documentation": null,
            "id": 2187,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNumberOfParents",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2179,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8754:2:3"
            },
            "returnParameters": {
              "id": 2182,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2181,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2187,
                  "src": "8777:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2180,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8777:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8776:6:3"
            },
            "scope": 2247,
            "src": "8727:96:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2202,
              "nodeType": "Block",
              "src": "8971:187:3",
              "statements": [
                {
                  "assignments": [
                    2193
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2193,
                      "name": "bucketLength",
                      "nodeType": "VariableDeclaration",
                      "scope": 2202,
                      "src": "9071:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2192,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9071:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2197,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2196,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2194,
                      "name": "lifetime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2285,
                      "src": "9091:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2195,
                      "name": "N_OF_BUCKETS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2312,
                      "src": "9102:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9091:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9071:43:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2198,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5969,
                      "src": "9132:3:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2199,
                      "name": "bucketLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2193,
                      "src": "9138:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9132:18:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2191,
                  "id": 2201,
                  "nodeType": "Return",
                  "src": "9125:25:3"
                }
              ]
            },
            "documentation": "@return the number of the period of time (bucket) the current moment is in",
            "id": 2203,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "activeBucketNumber",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2188,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8942:2:3"
            },
            "returnParameters": {
              "id": 2191,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2190,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2203,
                  "src": "8965:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2189,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8965:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8964:6:3"
            },
            "scope": 2247,
            "src": "8915:243:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2223,
              "nodeType": "Block",
              "src": "9468:127:3",
              "statements": [
                {
                  "assignments": [
                    2211
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2211,
                      "name": "bucketLength",
                      "nodeType": "VariableDeclaration",
                      "scope": 2223,
                      "src": "9479:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2210,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9479:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2215,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2214,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2212,
                      "name": "lifetime",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2285,
                      "src": "9499:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2213,
                      "name": "N_OF_BUCKETS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2312,
                      "src": "9510:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9499:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9479:43:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2221,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2216,
                          "name": "memberData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2304,
                          "src": "9540:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                            "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                          }
                        },
                        "id": 2218,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2217,
                          "name": "_user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2205,
                          "src": "9551:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9540:17:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                          "typeString": "struct ConceptData.MemberData storage ref"
                        }
                      },
                      "id": 2219,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "assessmentDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2299,
                      "src": "9540:32:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 2220,
                      "name": "bucketLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2211,
                      "src": "9575:12:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9540:47:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2209,
                  "id": 2222,
                  "nodeType": "Return",
                  "src": "9533:54:3"
                }
              ]
            },
            "documentation": "@return the number of the first period of time (bucket) that a member can be available in",
            "id": 2224,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "startBucketNumber",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2206,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2205,
                  "name": "_user",
                  "nodeType": "VariableDeclaration",
                  "scope": 2224,
                  "src": "9425:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2204,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9425:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9424:15:3"
            },
            "returnParameters": {
              "id": 2209,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2208,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2224,
                  "src": "9462:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2207,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9462:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9461:6:3"
            },
            "scope": 2247,
            "src": "9398:197:3",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2245,
              "nodeType": "Block",
              "src": "9662:106:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2231,
                          "name": "memberData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2304,
                          "src": "9673:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                            "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                          }
                        },
                        "id": 2233,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2232,
                          "name": "_member",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2226,
                          "src": "9684:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9673:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                          "typeString": "struct ConceptData.MemberData storage ref"
                        }
                      },
                      "id": 2234,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "weight",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2297,
                      "src": "9673:26:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2235,
                      "name": "_weight",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2228,
                      "src": "9702:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9673:36:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2237,
                  "nodeType": "ExpressionStatement",
                  "src": "9673:36:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2243,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 2238,
                          "name": "memberData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2304,
                          "src": "9720:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_MemberData_$2300_storage_$",
                            "typeString": "mapping(address => struct ConceptData.MemberData storage ref)"
                          }
                        },
                        "id": 2240,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2239,
                          "name": "_member",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2226,
                          "src": "9731:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "9720:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MemberData_$2300_storage",
                          "typeString": "struct ConceptData.MemberData storage ref"
                        }
                      },
                      "id": 2241,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "assessmentDate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2299,
                      "src": "9720:34:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 2242,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5969,
                      "src": "9757:3:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9720:40:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2244,
                  "nodeType": "ExpressionStatement",
                  "src": "9720:40:3"
                }
              ]
            },
            "documentation": null,
            "id": 2246,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addWeight",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2229,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2226,
                  "name": "_member",
                  "nodeType": "VariableDeclaration",
                  "scope": 2246,
                  "src": "9622:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2225,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9622:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2228,
                  "name": "_weight",
                  "nodeType": "VariableDeclaration",
                  "scope": 2246,
                  "src": "9639:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2227,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9639:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9621:31:3"
            },
            "returnParameters": {
              "id": 2230,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9662:0:3"
            },
            "scope": 2247,
            "src": "9603:165:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 2248,
        "src": "429:9342:3"
      }
    ],
    "src": "0:9773:3"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {
    "42": {
      "events": {},
      "links": {},
      "address": "0xCbB8EddBdCc6Cb0D003C3F1763D26619cE1A1fBc",
      "transactionHash": "0xd384192c947197f307b7e42aec6de0e23539797a0a05bba13a555a9a78fd2d3e"
    }
  },
  "schemaVersion": "3.0.9",
  "updatedAt": "2019-06-21T15:40:45.024Z",
  "devdoc": {
    "details": "See ConceptProxy.sol for the constructor and ConceptData.sol for the storage layout\r",
    "methods": {
      "activeBucketNumber()": {
        "return": "the number of the period of time (bucket) the current moment is in"
      },
      "addInitialMember(address,uint256)": {
        "details": "This is only once used once on the mew-concept during the initialization of the network.\r"
      },
      "changeParents(address[],uint256[])": {
        "details": "The restrictions on parent-concepts here NEED to be identical to the ones in the constructor"
      },
      "getNumberOfAvailableMembers()": {
        "return": "how many members are currently available to act as assessor"
      },
      "getWeight(address)": {
        "return": "the weight used for probabilistic calling of assessors"
      },
      "makeAssessment(uint256,uint256,uint256,uint256)": {
        "details": "Also sends tokens from the msg.sender to the address of the created assessment\r",
        "params": {
          "_cost": "the amount of tokens paid per assessor\r",
          "_size": "the number of assessors\r",
          "_timeLimit": "how long until the assessment has to be finished\r",
          "_waitTime": "how long to wait for enough assessors to accept\r"
        }
      },
      "toggleAvailability(bool)": {
        "details": "See AssessmentData.sol for an explanation how buckets are used to discretize time.\r"
      }
    }
  },
  "userdoc": {
    "methods": {
      "addInitialMember(address,uint256)": {
        "notice": "Called by the distributor contract to directly add users (without an assessment)\r"
      },
      "addMember(address,uint256)": {
        "notice": "Called by completed assessments to add the assessee as member to the concept"
      },
      "integrateMember()": {
        "notice": "Called by members of the original concept who want to migrate to this one"
      },
      "makeAssessment(uint256,uint256,uint256,uint256)": {
        "notice": "Called by anyone who wants to get assessed in this concept\r"
      },
      "migrateMember(address)": {
        "notice": "Called by cloned concepts to delete migrated members"
      },
      "toggleAvailability(bool)": {
        "notice": "Called by members to signal that they do/do not want to be called as assessor in this concept\r"
      }
    },
    "notice": "The concept contract that defines the concept, initiates assessments\r and stores data about its members\r"
  }
}