{
  "contractName": "DaoCreatorGoodDollar",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract AddFoundersGoodDollar",
          "name": "_addFoundersGoodDollar",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "InitialSchemesSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_avatar",
          "type": "address"
        }
      ],
      "name": "NewOrg",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "avatar",
      "outputs": [
        {
          "internalType": "contract Avatar",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "lock",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "string",
          "name": "_tokenName",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_tokenSymbol",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "_cap",
          "type": "uint256"
        },
        {
          "internalType": "contract FeeFormula",
          "name": "_formula",
          "type": "address"
        },
        {
          "internalType": "contract Identity",
          "name": "_identity",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "_founders",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_avatarTokenAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256[]",
          "name": "_foundersReputationAmount",
          "type": "uint256[]"
        }
      ],
      "name": "forgeOrg",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract Avatar",
          "name": "_avatar",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "_schemes",
          "type": "address[]"
        },
        {
          "internalType": "bytes32[]",
          "name": "_params",
          "type": "bytes32[]"
        },
        {
          "internalType": "bytes4[]",
          "name": "_permissions",
          "type": "bytes4[]"
        },
        {
          "internalType": "string",
          "name": "_metaData",
          "type": "string"
        }
      ],
      "name": "setSchemes",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract AddFoundersGoodDollar\",\"name\":\"_addFoundersGoodDollar\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_avatar\",\"type\":\"address\"}],\"name\":\"InitialSchemesSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_avatar\",\"type\":\"address\"}],\"name\":\"NewOrg\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"avatar\",\"outputs\":[{\"internalType\":\"contract Avatar\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"_tokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_tokenSymbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_cap\",\"type\":\"uint256\"},{\"internalType\":\"contract FeeFormula\",\"name\":\"_formula\",\"type\":\"address\"},{\"internalType\":\"contract Identity\",\"name\":\"_identity\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"_founders\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_avatarTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_foundersReputationAmount\",\"type\":\"uint256[]\"}],\"name\":\"forgeOrg\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lock\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contract Avatar\",\"name\":\"_avatar\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"_schemes\",\"type\":\"address[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"_params\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes4[]\",\"name\":\"_permissions\",\"type\":\"bytes4[]\"},{\"internalType\":\"string\",\"name\":\"_metaData\",\"type\":\"string\"}],\"name\":\"setSchemes\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"forgeOrg(string,string,uint256,address,address,address[],uint256,uint256[])\":{\"details\":\"Create a new organization\",\"params\":{\"_avatarTokenAmount\":\"Amount of tokens that the avatar receive in the new organization\",\"_cap\":\"token cap - 0 for no cap.\",\"_founders\":\"An array with the addresses of the founders of the organization\",\"_foundersReputationAmount\":\"An array of amount of reputation that the  founders receive in the new organization\",\"_tokenName\":\"The name of the token associated with the organization\",\"_tokenSymbol\":\"The symbol of the token\"},\"return\":\"The address of the avatar of the controller\"},\"setSchemes(address,address[],bytes32[],bytes4[],string)\":{\"details\":\"Set initial schemes for the organization.\",\"params\":{\"_avatar\":\"organization avatar (returns from forgeOrg)\",\"_metaData\":\"dao meta data hash\",\"_params\":\"the schemes parameters\",\"_permissions\":\"the schemes permissions.\",\"_schemes\":\"the schemes to register for the organization\"}}},\"title\":\"Genesis Scheme that creates organizations. Taken and modified from @daostack.\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/DaoCreator.sol\":\"DaoCreatorGoodDollar\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/DaoCreator.sol\":{\"keccak256\":\"0xc9ceb1548a3f00bff343349112195c4b21cad5a790a124e4a986d08a807bed95\",\"urls\":[\"bzz-raw://9cbd1b6e27bd6d081f13d0166e408a31c7522a5d69fd028011d81f18fea982a3\",\"dweb:/ipfs/QmeozcZ2dGcux5GgSdahZkGtK7ft6z3NAP4pzu2UnESNb6\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/schemes/FeeFormula.sol\":{\"keccak256\":\"0x2ac93f891a65aa60b93e2b27552850dfa459b88f5a19edc29bb5bab0cc4f3eaa\",\"urls\":[\"bzz-raw://bddb94bc0230d959d2362887a253a47b91f0de6804cba8e4569a7cac47c39b5a\",\"dweb:/ipfs/QmTdkPQHRdzxJ7D7pi9cowLgYY9wVja416dhBwCsdtPEv5\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/schemes/FormulaHolder.sol\":{\"keccak256\":\"0xb3c0d3bc21e71497784e1be11698ff501ee11545c3106bec2cae2e8af1bacd9b\",\"urls\":[\"bzz-raw://783b4e28b67231de0fbbe48e58f43f69db3f98fd7f75668edce145a55a9b5b17\",\"dweb:/ipfs/QmdeyRfeix3PGfaXqtRQpH1sjmjFpdtuGaPwnvRn7nHAWd\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/schemes/SchemeGuard.sol\":{\"keccak256\":\"0x32e1b2a172e2c22a6aa757bfcb0722cc67f64c5c2e48df3dec2737903516d565\",\"urls\":[\"bzz-raw://bee57a8eba08348e93a0c18f3ab534e67865c0fa27afe27f5cf234bd5f248915\",\"dweb:/ipfs/Qmd8aveHWcUkYWMyJrJRZPyVXj8MAMBfpBFo6g4Z2VJeo3\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/identity/Identity.sol\":{\"keccak256\":\"0x282184478f1d618d3523b28a84a7f7003dfdc99cad120e5e358d2cce1f5fb491\",\"urls\":[\"bzz-raw://67e17ecb57b24c4fb801abc2c52c3148af3b967e28da4fb7e074d18efb7a57c1\",\"dweb:/ipfs/QmfZ8jXhdTHtxr3gfByRj4HnXnGynX7SLZWWGR8k768aGB\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/identity/IdentityAdminRole.sol\":{\"keccak256\":\"0x8e82c45eefe0da77d017144dfad12602c68124297035937901cdd08ce48c57ff\",\"urls\":[\"bzz-raw://e20e606342b3b35f41a081294cf3f716fe7e27e81d3090daa37c5208f4ef4bc3\",\"dweb:/ipfs/QmVEhHpiwVsksnPyHkfNa5LpTBLxoP9kj5NRZUBv456ewK\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/identity/IdentityGuard.sol\":{\"keccak256\":\"0xcc395c0e8f812201b5ed1f45e7272120ee5ffe73bfe13e325dfd872aef235b22\",\"urls\":[\"bzz-raw://58f93e4b9f48ec31ac151208e4f9e6b356cc23dfc9585d846bc09bf35d6ff7be\",\"dweb:/ipfs/QmdxJHUCaFx8N66kkDhYdA4k6d2V91yBRG6sombuPxBq7X\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/token/ERC677/ERC677.sol\":{\"keccak256\":\"0x8360b9e356df8584d95990bb7e772342b30d9e22b160f7c875fbca5c0b87453c\",\"urls\":[\"bzz-raw://97cc6e5586cedcd49462cc465a2a8fc5063d7ec6cb9533f4e0099969a75bd4b2\",\"dweb:/ipfs/QmXw6y4iXfqyJHDRrHdd5ofQ6E4cuHDw4LiYupReJ1rCBc\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/token/ERC677/ERC677Receiver.sol\":{\"keccak256\":\"0xc5683b28527097379ed090b28bb46e17a50a2c57ddcb3c7e028fcd04ddc64aef\",\"urls\":[\"bzz-raw://639f6b6cf65382faea738e6326d6aeb289b8b030cf02f40c54bc45ec098eda6d\",\"dweb:/ipfs/QmQi7dFcKiwUxSbzhus4CxFTdNJvUsfiqY6i3bD4RdMQrn\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/token/ERC677BridgeToken.sol\":{\"keccak256\":\"0x014fa09dca773b1406855e628687be50c1eb129894f45a8b5c9fc709d826968d\",\"urls\":[\"bzz-raw://23c6491c0c26471315010687d785a3724ae33198be6ed39828d1a4f7e6873cb4\",\"dweb:/ipfs/QmW62FXHtLdNGzB8Nq9XwmwHp6Jn8jgbAVyrU2j7c7w6By\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/token/ERC677Token.sol\":{\"keccak256\":\"0x553a103b911d77cecb2ce3f355b2370c4a23eb070593d7c8eb46f33e3a5ff141\",\"urls\":[\"bzz-raw://e37438ce280964498b77f63bbe4d1f25c55ff4c178925447a70decceda06e46c\",\"dweb:/ipfs/QmbqCLhWjZqpFBnUVb3H7LkEbAaVmhf76Ln14oWnGimYGM\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/token/GoodDollar.sol\":{\"keccak256\":\"0x7b91359f6912641c7dbfeced9a5c47454acce7c2cab9205d00b8049d228d7b78\",\"urls\":[\"bzz-raw://3a09bc6936d0179e2e5be2687446532d63135bc537f7ab246c6a1101d4849c1f\",\"dweb:/ipfs/QmNshqF7Xu7UX8BryKYRbnRQdTfytPappxkHq5xMxF5vpE\"]},\"@daostack/arc/contracts/controller/Avatar.sol\":{\"keccak256\":\"0x4e4fb9d3bc21f42fbfc6a01e9f8aa483a59e9f447b0d604f55b587a81ec09ef4\",\"urls\":[\"bzz-raw://9d3c1c7575cf6075ea1d89921f09b9b8e322b208dacaf0446cd4f64506c999f0\",\"dweb:/ipfs/QmVGDDHAR2ByuQpbgV7BBKXGEAcbaWvejpEZYzHgaagBFK\"]},\"@daostack/arc/contracts/controller/Controller.sol\":{\"keccak256\":\"0xb46102ed94ae64c1c4cdb758e0f35b652f3bea6f7a32fa1fe988cbbeb489872a\",\"urls\":[\"bzz-raw://84e4f0fd93a10602ad6d331160ff5429107b74da9e684d96d32ee25aad6ab748\",\"dweb:/ipfs/QmPNu7s7x7reUY9tupW7bxNz5TY6Adu9tjRkj9x6X6ys55\"]},\"@daostack/arc/contracts/controller/ControllerInterface.sol\":{\"keccak256\":\"0x933e92612c90f292c7b59908958b003f1a13d90b97bed0572b566353c20974dc\",\"urls\":[\"bzz-raw://ce1fcf85b744fcce2dbd4205e3943e9b4ec36a5f0330d4bbf61e65f1a3e0e470\",\"dweb:/ipfs/QmUWiLkBDdekhpy93nTzBtxDHL6yNh6sTUM9G8VbsHcBzy\"]},\"@daostack/arc/contracts/controller/DAOToken.sol\":{\"keccak256\":\"0x9b213e4e3ceeffcfc1c962a43b70b8d763d8091a2dd713fc1989b97bb68786e6\",\"urls\":[\"bzz-raw://51d1d6e85fd90f45395a16b7a3c703c4636e836041f2a13f806e4222ef2e59c1\",\"dweb:/ipfs/QmQjeCeFf7TJzsYjT5scyZUDDixBA8Yy8YppgBuxcKPDnP\"]},\"@daostack/arc/contracts/globalConstraints/GlobalConstraintInterface.sol\":{\"keccak256\":\"0xc006c4591ec10b845a56e13f6791db2c428610953034686d52b2a934b6c8f36f\",\"urls\":[\"bzz-raw://19495cd88280e54d7ddcd043ffeff75e6d3777a0c42debcd61cae448e9497ea0\",\"dweb:/ipfs/QmYxWz7CgFmmddrcVXJKfob5Ktwykc2imNVUwLSR5WR8bJ\"]},\"@daostack/arc/contracts/libs/SafeERC20.sol\":{\"keccak256\":\"0xf6727d432f67046145b078f40c1cc4f6be7b0d12a6678ecaf457edf7550d244c\",\"urls\":[\"bzz-raw://5dba7734c4fed446c084a707761cbc66ba22b8b93ef53c8d4a22a76b6e271690\",\"dweb:/ipfs/QmP2VpPKUqLh4ZZs6LaxHVpCN1zCmiorygL9bMub4mbYCw\"]},\"@daostack/arc/contracts/universalSchemes/SchemeRegistrar.sol\":{\"keccak256\":\"0x13934eeba4d723347fceb4feaee0ed5a48d5d27f1b68800f0c0cc0ee91ead7c3\",\"urls\":[\"bzz-raw://911cd363dcfd942b2836969cd7a8c0a719518fafc6f5f129cc70018e17f24614\",\"dweb:/ipfs/QmWPVS5P14XAQvnG6Ccd6MSadFfbNGdqZaH9GsCLnnj3Wo\"]},\"@daostack/arc/contracts/universalSchemes/UniversalScheme.sol\":{\"keccak256\":\"0xcfdb7d336d21b3b16a31125d3bd8c88f7c4c944510f4488162247badb6411017\",\"urls\":[\"bzz-raw://d17df7fe23080da4da159c57a23793fed90dbc8129ab8d752365e6b5f07a9e2a\",\"dweb:/ipfs/QmUUNrcMqrxT3k1V4z9p9HJUnxPdNNgf5CB8NUHc5uMwBd\"]},\"@daostack/arc/contracts/universalSchemes/UniversalSchemeInterface.sol\":{\"keccak256\":\"0x956b0dbe20b6aeea74565a9204f72fba1580874d27cd63955f93e9491cabb6b1\",\"urls\":[\"bzz-raw://1bd1812db855997c2c5f3df4a0a5ae568977ac05c2066999a08ce251dce05c07\",\"dweb:/ipfs/QmRbvtTZHUnSypBqaiAUZxUbK8sGzgVpyK3f6zCz9utVDz\"]},\"@daostack/arc/contracts/universalSchemes/UpgradeScheme.sol\":{\"keccak256\":\"0xf1b96fe311f836e717959900926f7e3d7b55bf92d46e459bb8e021a9912156e8\",\"urls\":[\"bzz-raw://4f459d59cc17dfc1893b3ed14015dd85e2c4d80671680d6764c0c4648fab8fae\",\"dweb:/ipfs/QmYLWswcuARwxf8aBmnZSLUyjtCe39n2zjzFUc9UY4R9GX\"]},\"@daostack/arc/contracts/votingMachines/VotingMachineCallbacks.sol\":{\"keccak256\":\"0x4052c6f57add891f5f6514a7837f54955ac1f3ad4654fa45d864e4aad19864ba\",\"urls\":[\"bzz-raw://3c41bfc9e42463f3a9c0a4a6fc75382661e1f8e04e20886ff623e7a671aa28ed\",\"dweb:/ipfs/QmXZhcp17q64esWMwWAjJ2CkjHbG9btWRMhRs78LBrVLjD\"]},\"@daostack/infra/contracts/Reputation.sol\":{\"keccak256\":\"0x3d226dac0fe7d758f0287fb28bc25fcec1f69d19888ae3a550fa49856d61c482\",\"urls\":[\"bzz-raw://8856852c8fe0ba1c9aab326f0a9a6e7f31a238de2778fa5188e6fc399f7eb352\",\"dweb:/ipfs/QmVH4ppR9Dk7v8yxaSgeArdMv9gBBVoQxEf4E3UsqQ4rY2\"]},\"@daostack/infra/contracts/libs/RealMath.sol\":{\"keccak256\":\"0x3ee79c4b483da327916ac36f9d5cc6a1f2f0363db3ad06793ec67f46e1f653db\",\"urls\":[\"bzz-raw://19b423aa16b93e414c50ca513caabc0f1cb835f31deec82d85d9bb31c0f8d5fb\",\"dweb:/ipfs/QmS8gjtT3jxxoNAosJf6QSStFAE2KZLhNA1Qq9MXwT2CnN\"]},\"@daostack/infra/contracts/votingMachines/AbsoluteVote.sol\":{\"keccak256\":\"0x5e6a9d2d70bd86115d82abc3b294672cddc7f49f0dbad93af28c5e0133a3586e\",\"urls\":[\"bzz-raw://3ddc8aa9998a57cd5f9b85a016a1fe2086abb6e7adde209ded6a16cfc5480d97\",\"dweb:/ipfs/QmaxttQizPNWZDNeX3TBWa4jmHavm6We8MLZpmcPy21rGS\"]},\"@daostack/infra/contracts/votingMachines/GenesisProtocol.sol\":{\"keccak256\":\"0x0321da6019e0e1a7fc4e1ca484d7d5d376805abb17f9eb9c46a6731e9dfe58dc\",\"urls\":[\"bzz-raw://a245bc547655b1157fa33198e66fdc8470bcf20a6c56c12b2a02eec28f998849\",\"dweb:/ipfs/QmUsbHxWU5A8SJuDdKDMChu855X9KEqJjaZpTaVQG4W8Wq\"]},\"@daostack/infra/contracts/votingMachines/GenesisProtocolLogic.sol\":{\"keccak256\":\"0x2bf5fba64fbda5605b9250ea8ca6d8e28dab41fb0e2b43c9145b91e1d0425eef\",\"urls\":[\"bzz-raw://3b34c1f70c2b98d4f3add9264700f60cb3deed47610e010f3d4ac112ab107930\",\"dweb:/ipfs/QmY46SXZnKJeUmbsSfwkW1zNh1YP4FHUjAbVJUJXqhKNwV\"]},\"@daostack/infra/contracts/votingMachines/IntVoteInterface.sol\":{\"keccak256\":\"0x877991da94b1fe9c2accf69367b32fff474c4e4f7897e9cf5a61fa5d1378908f\",\"urls\":[\"bzz-raw://4ea2c35248b82ea74884313752870789de61b0bcbc14425e97192b1ef1450e5a\",\"dweb:/ipfs/QmZ9RxpmG6SsMLJm1hT9ZmVy3CVPNZyRihQxZFDk8u3w1G\"]},\"@daostack/infra/contracts/votingMachines/ProposalExecuteInterface.sol\":{\"keccak256\":\"0xb80a153793e1723b35e70ba1c3800975fbc1fae63c989cfb8134a4e58085e181\",\"urls\":[\"bzz-raw://7ea97373ca977623d4c480c1d03e0853b1b34d59df4928ef72548987b2943899\",\"dweb:/ipfs/QmZ1MmDX4ExZ1iEo9gFp3SHfpNjWoLHS9nVhFkTRokgoLS\"]},\"@daostack/infra/contracts/votingMachines/VotingMachineCallbacksInterface.sol\":{\"keccak256\":\"0xec215d305f0aa5a5193b6f0302a1aa6bb84e85460167f80b261faf9d30564563\",\"urls\":[\"bzz-raw://8edb25b20c86a28b5c7c7c3a918f219106a1d3047933984dd76e33e30911857d\",\"dweb:/ipfs/Qme1iBcLjPPrC6jMF56cSE9pmEdCQ23aT43wQbnqKjXEYe\"]},\"openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0x659ba0f9a3392cd50a8a5fafaf5dfd8c6a0878f6a4613bceff4e90dceddcd865\",\"urls\":[\"bzz-raw://4ca6617349a9b36fd82e9442a8e445ce9021a174e4399d1457ddc894ee3f5df3\",\"dweb:/ipfs/QmcmyB4cNazZ1sw963Afaijt67M9bDgwmGXCgQajGTD4tm\"]},\"openzeppelin-solidity/contracts/access/roles/MinterRole.sol\":{\"keccak256\":\"0x3199053db04cdae6c9b4380921a4a4ee720b568d6a9660883b29d25fbec31bc0\",\"urls\":[\"bzz-raw://1b0ff368e21d6007c06e4cfb286fe59d7d7d3ec06283300c9be2153ba11fa93a\",\"dweb:/ipfs/QmRPq2wZM4RAcbj31dP34GCr1CSy2qy3JqfXEkdVie4HLT\"]},\"openzeppelin-solidity/contracts/access/roles/PauserRole.sol\":{\"keccak256\":\"0x6506133e295a7199df2ac5dfc52853d9d767f68450b6d0193e9d8056b164ce86\",\"urls\":[\"bzz-raw://9c03592a9e6b1377e401b74eccf175a250232b5a341347d3fc5cb50e9bc86ba2\",\"dweb:/ipfs/QmYAr1yXT89hNUMJ37aiBpD9HtYfBDqmueVCzphRuuU7oZ\"]},\"openzeppelin-solidity/contracts/cryptography/ECDSA.sol\":{\"keccak256\":\"0xb48974d92a87053dc1d6c5389f3d1b2ad522dec23afcb508eaa935d98dfdc0b6\",\"urls\":[\"bzz-raw://4ca542b4b005c3fa1b4e145f86cefc50cd5eb11e7df0d3b6daca5328a075f090\",\"dweb:/ipfs/QmQFNcoXCZvEPt2WWueAYvaMns16VdN6VvdPdEbUav876u\"]},\"openzeppelin-solidity/contracts/lifecycle/Pausable.sol\":{\"keccak256\":\"0x3b0ed31deeba7e3c6cfbbe8092a6b427084ee390800a06acdea5c17c8185d606\",\"urls\":[\"bzz-raw://bbdbf9d3754fcdcc85aec0432fabcec914317b1c2081b43753442ed53853a34a\",\"dweb:/ipfs/QmVHWQBn5xQkQEHhyGNEeS5gjjALZEk5ZfcjFt7kL6MoLy\"]},\"openzeppelin-solidity/contracts/math/Math.sol\":{\"keccak256\":\"0x37605dd0606b349cfb1b679892e1bb0ef4ddc16dedb06e229cc4402610a7a848\",\"urls\":[\"bzz-raw://c44b0c7fe0523f3f9a10d2924d7d7137b1349b1e71cd4be57550e185a098ca55\",\"dweb:/ipfs/QmbBLBCBPpqna3QZTiomSwyBdtt5Ua9DqkFgYicMd7Coya\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzz-raw://1eb493553b27efd46c231a836a83ce50d215639feb97b4aac9f301d0fd034ff5\",\"dweb:/ipfs/QmbMdvSXcqGKxeeYvzF3VrWpoHQyVzMXBhzhAokF2Gdymv\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x980de387a1a020a498f53d00f89fecebb12c949a17e8f160093c0303ede2b786\",\"urls\":[\"bzz-raw://f07a2c393caa85f62f0aaa461e3edd50aa59371d4209778ba0558d7f8b4b856c\",\"dweb:/ipfs/QmeN3ZiYGSjCnQFeYaJNgoXjF9eDue1g3e9pqManRkeBtV\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xba431353cb4fe70777ac026231eb5468e41aa1e81240a2b8136917acc5fff4dc\",\"urls\":[\"bzz-raw://f40c91ca270bdc9b156f339081a0fc2bbcf73cf5f62b8c73ba555df753ff6619\",\"dweb:/ipfs/QmT8y2VVjGaFdGphpcXrgvdPi2EgF9LuCDgJiJ89LvpFRV\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol\":{\"keccak256\":\"0xa3e68fd7f987c8fbdaf4867d428a69a15f3cf2f69709a5b0a0fbef750b0e6fbc\",\"urls\":[\"bzz-raw://50b1ff986d3b2793850a66c8429d9886fdfb134b1509b3e98714e3e2a71e24f5\",\"dweb:/ipfs/QmSQBYPeY9tbR3ciGRNQqvcWKnNiuxtVMq2MsPWpLwuGGm\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Pausable.sol\":{\"keccak256\":\"0x37b840977505e5f6d74bc8fa3d0217facc7913d0ecf064da3e3b26494acd37de\",\"urls\":[\"bzz-raw://7456513521bae915089dfd5879b685e47f3f180ad9ffe24cc3b19275b1da28ed\",\"dweb:/ipfs/QmbM1avKkyyTHEeTs3CqheyZwgAMNzVi3iDudqBdUJ2WPM\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x079c4e23ee448f529e43bfa3c4e8fb4be52cd0318ee923a276835bedf45b93d8\",\"urls\":[\"bzz-raw://ee762ff5b7746e41d27dcbcea00c7a3034b58adb1b45ddadddb5b721aff450df\",\"dweb:/ipfs/QmdxqtgEFZjHCoiYyz6pUAQ5iBm7As25jcyEbZoTaAgyDa\"]},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"keccak256\":\"0x5c731061b804fa256fc8c05150eafe5d20b6bb94541a8f187912bf84f7033f34\",\"urls\":[\"bzz-raw://a3c2d9f046beebab7fb41b1b124a6a124a36f510f7c67365861402ac831bdc71\",\"dweb:/ipfs/QmUtASRgitregbKH83anopLtF9vFQe3BKeAjhUa6F7t9YV\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50604051613c88380380613c888339818101604052602081101561003357600080fd5b5051600280546001600160a01b0319166001600160a01b03909216919091179055613c25806100636000396000f3fe60806040523480156200001157600080fd5b5060043610620000525760003560e01c8063064bf38614620000575780635aef7de614620001d6578063edc4476e14620001fc578063f83d08ba146200038d575b600080fd5b620001d4600480360360a08110156200006f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156200009a57600080fd5b820183602082011115620000ad57600080fd5b803590602001918460208302840111600160201b83111715620000cf57600080fd5b919390929091602081019035600160201b811115620000ed57600080fd5b8201836020820111156200010057600080fd5b803590602001918460208302840111600160201b831117156200012257600080fd5b919390929091602081019035600160201b8111156200014057600080fd5b8201836020820111156200015357600080fd5b803590602001918460208302840111600160201b831117156200017557600080fd5b919390929091602081019035600160201b8111156200019357600080fd5b820183602082011115620001a657600080fd5b803590602001918460018302840111600160201b83111715620001c857600080fd5b50909250905062000397565b005b620001e062000710565b604080516001600160a01b039092168252519081900360200190f35b620001e060048036036101008110156200021557600080fd5b810190602081018135600160201b8111156200023057600080fd5b8201836020820111156200024357600080fd5b803590602001918460018302840111600160201b831117156200026557600080fd5b919390929091602081019035600160201b8111156200028357600080fd5b8201836020820111156200029657600080fd5b803590602001918460018302840111600160201b83111715620002b857600080fd5b919390928235926001600160a01b0360208201358116936040830135909116929091608081019060600135600160201b811115620002f557600080fd5b8201836020820111156200030857600080fd5b803590602001918460208302840111600160201b831117156200032a57600080fd5b91939092823592604081019060200135600160201b8111156200034c57600080fd5b8201836020820111156200035f57600080fd5b803590602001918460208302840111600160201b831117156200038157600080fd5b5090925090506200071f565b620001e062000831565b6001546001600160a01b03163314620003f7576040805162461bcd60e51b815260206004820152601a60248201527f4d6573736167652073656e646572206973206e6f74206c6f636b000000000000604482015290519081900360640190fd5b6000896001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200043357600080fd5b505afa15801562000448573d6000803e3d6000fd5b505050506040513d60208110156200045f57600080fd5b5051905060005b888110156200058957816001600160a01b031663e869d45f8b8b848181106200048b57fe5b905060200201356001600160a01b03168a8a85818110620004a857fe5b90506020020135898986818110620004bc57fe5b905060200201356001600160e01b0319168f6040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001848152602001836001600160e01b0319166001600160e01b0319168152602001826001600160a01b03166001600160a01b03168152602001945050505050602060405180830381600087803b1580156200055257600080fd5b505af115801562000567573d6000803e3d6000fd5b505050506040513d60208110156200057e57600080fd5b505060010162000466565b506040805163c9b62eb160e01b81526001600160a01b038c81166024830152600482019283526044820185905283169163c9b62eb191869186918f91908190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156200060957600080fd5b505af11580156200061e573d6000803e3d6000fd5b505050506040513d60208110156200063557600080fd5b50506040805163039de01d60e01b81523060048201526001600160a01b038c8116602483015291519183169163039de01d916044808201926020929091908290030181600087803b1580156200068a57600080fd5b505af11580156200069f573d6000803e3d6000fd5b505050506040513d6020811015620006b657600080fd5b5050600180546001600160a01b0319169055604080516001600160a01b038c16815290517f9007c9042f12be953f7dbe3909f56c3f088e9fe294dbebbef4a67afa63462b6a9181900360200190a150505050505050505050565b6000546001600160a01b031681565b6000620008208d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508b8b8b8b8b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82528f94509092508d918d918291908501908490808284376000920191909152506200084092505050565b9d9c50505050505050505050505050565b6001546001600160a01b031681565b6001546000906001600160a01b03161562000898576040805162461bcd60e51b81526020600482015260136024820152724c6f636b20616c72656164792065786973747360681b604482015290519081900360640190fd5b8151845114620008ef576040805162461bcd60e51b815260206004820152601a60248201527f466f756e6465722072657075746174696f6e206d697373696e67000000000000604482015290519081900360640190fd5b600084511162000946576040805162461bcd60e51b815260206004820152601e60248201527f4d7573742068617665206174206c65617374206f6e6520666f756e6465720000604482015290519081900360640190fd5b6000898989898960006040516200095d9062000e4c565b604081018590526001600160a01b0380851660608301528381166080830152821660a082015260c08082528751908201528651819060208083019160e08401918b019080838360005b83811015620009c0578181015183820152602001620009a6565b50505050905090810190601f168015620009ee5780820380516001836020036101000a031916815260200191505b5083810382528851815288516020918201918a019080838360005b8381101562000a2357818101518382015260200162000a09565b50505050905090810190601f16801562000a515780820380516001836020036101000a031916815260200191505b5098505050505050505050604051809103906000f08015801562000a79573d6000803e3d6000fd5b509050600060405162000a8c9062000e5a565b604051809103906000f08015801562000aa9573d6000803e3d6000fd5b5060025460408051634c1d96ab60e11b81526001600160a01b03928316600482015290519293509084169163983b2d569160248082019260009290919082900301818387803b15801562000afc57600080fd5b505af115801562000b11573d6000803e3d6000fd5b50505050816001600160a01b031663986502756040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000b5157600080fd5b505af115801562000b66573d6000803e3d6000fd5b50506002546040805163f2fde38b60e01b81526001600160a01b0392831660048201529051918616935063f2fde38b925060248082019260009290919082900301818387803b15801562000bb957600080fd5b505af115801562000bce573d6000803e3d6000fd5b50506002546040805163f2fde38b60e01b81526001600160a01b0392831660048201529051918516935063f2fde38b925060248082019260009290919082900301818387803b15801562000c2157600080fd5b505af115801562000c36573d6000803e3d6000fd5b50506002546040516304bd7c3f60e51b81526001600160a01b038681166004830190815286821660248401523360448401819052608484018c905260c0606485019081528d5160c48601528d519390951696506397af87e095508894889491938e938e938e93919260a482019160e401906020808901910280838360005b8381101562000cce57818101518382015260200162000cb4565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101562000d0f57818101518382015260200162000cf5565b5050505090500198505050505050505050602060405180830381600087803b15801562000d3b57600080fd5b505af115801562000d50573d6000803e3d6000fd5b505050506040513d602081101562000d6757600080fd5b5051600080546001600160a01b0319166001600160a01b0392831617808255604080516320b707b160e21b8152918416600483015251928516926382dc1ec49260248084019391929182900301818387803b15801562000dc657600080fd5b505af115801562000ddb573d6000803e3d6000fd5b5050600180546001600160a01b031916331790555050600054604080516001600160a01b03929092168252517f244496352f5e67e59ce96b4a53ef9ea7cb88b7db33eb13dc5e771bd04385a60e9181900360200190a150506000546001600160a01b03169998505050505050505050565b6124bc8062000e6983390190565b6108cc80620033258339019056fe60806040523480156200001157600080fd5b50604051620024bc380380620024bc833981810160405260c08110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060408181526020830151908301516060840151608090940151600380546001600160a01b03191633179081905592965090945091849184918991899189918491849184918491849184916001600160a01b0316906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a382516200022a906004906020860190620004b9565b50815162000240906005906020850190620004b9565b50600655506200025b9050336001600160e01b036200038616565b50506008805460ff19169055506200027c336001600160e01b03620003d816565b5050506001600160a01b038116620002db576040805162461bcd60e51b815260206004820152601960248201527f537570706c696564206964656e74697479206973206e756c6c00000000000000604482015290519081900360640190fd5b600b80546001600160a01b0319166001600160a01b0392831617905581166200034b576040805162461bcd60e51b815260206004820152601860248201527f537570706c69656420666f726d756c61206973206e756c6c0000000000000000604482015290519081900360640190fd5b600c80546001600160a01b039283166001600160a01b031991821617909155600d8054939092169216919091179055506200055e9350505050565b620003a18160076200042a60201b62001d621790919060201c565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b620003f38160096200042a60201b62001d621790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6001600160a01b0381166200043e57600080fd5b6200045382826001600160e01b036200048316565b156200045e57600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b0382166200049957600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004fc57805160ff19168380011785556200052c565b828001600101855582156200052c579182015b828111156200052c5782518255916020019190600101906200050f565b506200053a9291506200053e565b5090565b6200055b91905b808211156200053a576000815560010162000545565b90565b611f4e806200056e6000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c806370a082311161013057806398650275116100b8578063d5a06d4c1161007c578063d5a06d4c146106a7578063dd62ed3e146106c4578063e74b981b146106f2578063ecc06c7614610718578063f2fde38b1461073e57610232565b80639865027514610619578063a457c2d714610621578063a9059cbb1461064d578063aa271e1a14610679578063cd5965831461069f57610232565b80638456cb59116100ff5780638456cb59146105d35780638da5cb5b146105db5780638f32d59b146105e357806395d89b41146105eb578063983b2d56146105f357610232565b806370a0823114610553578063715018a61461057957806379cc67901461058157806382dc1ec4146105ad57610232565b806339509351116101be57806346fbf68e1161018257806346fbf68e146104ef5780634b75f54f146105155780635c975abb1461051d5780635d5bf178146105255780636ef8d66d1461054b57610232565b806339509351146103ed5780633f4ba83a146104195780634000aea01461042157806340c10f19146104a657806342966c68146104d257610232565b806323b872dd1161020557806323b872dd146103365780632c159a1a1461036c578063313ce56714610390578063355274ea1461039857806339364fd7146103a057610232565b806306fdde0314610237578063095ea7b3146102b45780630b26cf66146102f457806318160ddd1461031c575b600080fd5b61023f610764565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610279578181015183820152602001610261565b50505050905090810190601f1680156102a65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e0600480360360408110156102ca57600080fd5b506001600160a01b0381351690602001356107f2565b604080519115158252519081900360200190f35b61031a6004803603602081101561030a57600080fd5b50356001600160a01b0316610805565b005b6103246108a6565b60408051918252519081900360200190f35b6102e06004803603606081101561034c57600080fd5b506001600160a01b038135811691602081013590911690604001356108ac565b6103746108d0565b604080516001600160a01b039092168252519081900360200190f35b6103246108df565b6103246108e4565b6103d4600480360360608110156103b657600080fd5b508035906001600160a01b03602082013581169160400135166108ea565b6040805192835290151560208301528051918290030190f35b6102e06004803603604081101561040357600080fd5b506001600160a01b038135169060200135610985565b61031a610991565b6102e06004803603606081101561043757600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561046757600080fd5b82018360208201111561047957600080fd5b8035906020019184600183028401116401000000008311171561049b57600080fd5b5090925090506109f1565b6102e0600480360360408110156104bc57600080fd5b506001600160a01b038135169060200135610a4c565b61031a600480360360208110156104e857600080fd5b5035610b9c565b6102e06004803603602081101561050557600080fd5b50356001600160a01b0316610c69565b610374610c82565b6102e0610c91565b61031a6004803603602081101561053b57600080fd5b50356001600160a01b0316610c9a565b61031a610d83565b6103246004803603602081101561056957600080fd5b50356001600160a01b0316610d8e565b61031a610da9565b61031a6004803603604081101561059757600080fd5b506001600160a01b038135169060200135610e04565b61031a600480360360208110156105c357600080fd5b50356001600160a01b0316610f9c565b61031a610fb7565b61037461101b565b6102e061102a565b61023f61103b565b61031a6004803603602081101561060957600080fd5b50356001600160a01b0316611096565b61031a6110b1565b6102e06004803603604081101561063757600080fd5b506001600160a01b0381351690602001356110ba565b6102e06004803603604081101561066357600080fd5b506001600160a01b0381351690602001356110c6565b6102e06004803603602081101561068f57600080fd5b50356001600160a01b03166110e8565b6103746110fb565b6103d4600480360360208110156106bd57600080fd5b503561110a565b610324600480360360408110156106da57600080fd5b506001600160a01b03813581169160200135166111a2565b61031a6004803603602081101561070857600080fd5b50356001600160a01b03166111cd565b61031a6004803603602081101561072e57600080fd5b50356001600160a01b0316611200565b61031a6004803603602081101561075457600080fd5b50356001600160a01b0316611298565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107ea5780601f106107bf576101008083540402835291602001916107ea565b820191906000526020600020905b8154815290600101906020018083116107cd57829003601f168201915b505050505081565b60006107fe83836112b2565b9392505050565b61080e336110e8565b61081757600080fd5b6001600160a01b038116158015906108335750610833816112cf565b610884576040805162461bcd60e51b815260206004820152601760248201527f496e76616c69642062726964676520636f6e7472616374000000000000000000604482015290519081900360640190fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60025490565b6000806108ba8585856112d5565b90506108c785858361145d565b95945050505050565b600b546001600160a01b031681565b600281565b60065481565b600c5460408051631eed540360e11b8152600481018690526001600160a01b038581166024830152848116604483015282516000948594921692633ddaa806926064808301939192829003018186803b15801561094657600080fd5b505afa15801561095a573d6000803e3d6000fd5b505050506040513d604081101561097057600080fd5b50805160209091015190969095509350505050565b60006107fe838361147b565b61099a33610c69565b6109a357600080fd5b60085460ff166109b257600080fd5b6008805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b6000806109ff3387876112d5565b9050610a42868286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061149892505050565b9695505050505050565b6000610a57336110e8565b610a6057600080fd5b600b546040805163fe575a8760e01b81526001600160a01b03808716600483015291518693929092169163fe575a8791602480820192602092909190829003018186803b158015610ab057600080fd5b505afa158015610ac4573d6000803e3d6000fd5b505050506040513d6020811015610ada57600080fd5b505115610b28576040805162461bcd60e51b8152602060048201526017602482015276149958d95a5d995c881a5cc8189b1858dadb1a5cdd1959604a1b604482015290519081900360640190fd5b60065415610b8857600654610b4b84610b3f6108a6565b9063ffffffff6115d816565b1115610b885760405162461bcd60e51b8152600401808060200182810382526021815260200180611ed96021913960400191505060405180910390fd5b610b9284846115ea565b5060019392505050565b600b546040805163fe575a8760e01b815233600482015290516001600160a01b039092169163fe575a8791602480820192602092909190829003018186803b158015610be757600080fd5b505afa158015610bfb573d6000803e3d6000fd5b505050506040513d6020811015610c1157600080fd5b505115610c5d576040805162461bcd60e51b815260206004820152601560248201527410d85b1b195c881a5cc8189b1858dadb1a5cdd1959605a1b604482015290519081900360640190fd5b610c6681611692565b50565b6000610c7c60078363ffffffff61169c16565b92915050565b600c546001600160a01b031681565b60085460ff1690565b610ca261102a565b610cab57600080fd5b806001600160a01b031663223668446040518163ffffffff1660e01b815260040160206040518083038186803b158015610ce457600080fd5b505afa158015610cf8573d6000803e3d6000fd5b505050506040513d6020811015610d0e57600080fd5b5051610d61576040805162461bcd60e51b815260206004820152601a60248201527f4964656e74697479206973206e6f742072656769737465726564000000000000604482015290519081900360640190fd5b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b610d8c336116d1565b565b6001600160a01b031660009081526020819052604090205490565b610db161102a565b610dba57600080fd5b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b600b546040805163fe575a8760e01b815233600482015290516001600160a01b039092169163fe575a8791602480820192602092909190829003018186803b158015610e4f57600080fd5b505afa158015610e63573d6000803e3d6000fd5b505050506040513d6020811015610e7957600080fd5b505115610ec5576040805162461bcd60e51b815260206004820152601560248201527410d85b1b195c881a5cc8189b1858dadb1a5cdd1959605a1b604482015290519081900360640190fd5b600b546040805163fe575a8760e01b81526001600160a01b03808616600483015291518593929092169163fe575a8791602480820192602092909190829003018186803b158015610f1557600080fd5b505afa158015610f29573d6000803e3d6000fd5b505050506040513d6020811015610f3f57600080fd5b505115610f8d576040805162461bcd60e51b8152602060048201526017602482015276149958d95a5d995c881a5cc8189b1858dadb1a5cdd1959604a1b604482015290519081900360640190fd5b610f978383611719565b505050565b610fa533610c69565b610fae57600080fd5b610c6681611727565b610fc033610c69565b610fc957600080fd5b60085460ff1615610fd957600080fd5b6008805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b6003546001600160a01b031690565b6003546001600160a01b0316331490565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107ea5780601f106107bf576101008083540402835291602001916107ea565b61109f336110e8565b6110a857600080fd5b610c668161176f565b610d8c336117b7565b60006107fe83836117ff565b6000806110d43385856112d5565b90506110e0848261181c565b949350505050565b6000610c7c60098363ffffffff61169c16565b600a546001600160a01b031681565b600c5460408051631eed540360e11b815260048101849052600060248201819052604482018190528251909384936001600160a01b0390911692633ddaa8069260648083019392829003018186803b15801561116557600080fd5b505afa158015611179573d6000803e3d6000fd5b505050506040513d604081101561118f57600080fd5b5080516020909101519092509050915091565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6111d561102a565b6111de57600080fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b61120861102a565b61121157600080fd5b806001600160a01b031663223668446040518163ffffffff1660e01b815260040160206040518083038186803b15801561124a57600080fd5b505afa15801561125e573d6000803e3d6000fd5b505050506040513d602081101561127457600080fd5b5050600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6112a061102a565b6112a957600080fd5b610c6681611839565b60085460009060ff16156112c557600080fd5b6107fe83836118a8565b3b151590565b60008060006112e58487876108ea565b9150915060008211801561136d5750600b546040805163639e625760e11b815233600482015290516001600160a01b039092169163c73cc4ae91602480820192602092909190829003018186803b15801561133f57600080fd5b505afa158015611353573d6000803e3d6000fd5b505050506040513d602081101561136957600080fd5b5051155b1561145357801580611396575061138386610d8e565b611393858463ffffffff6115d816565b11155b6113e7576040805162461bcd60e51b815260206004820181905260248201527f4e6f7420656e6f7567682062616c616e636520746f2070617920545820666565604482015290519081900360640190fd5b6001600160a01b03861633141561141457600d5461140e906001600160a01b03168361181c565b5061142e565b600d5461142c9087906001600160a01b03168461145d565b505b8061144857611443848363ffffffff61191216565b61144a565b835b925050506107fe565b5091949350505050565b60085460009060ff161561147057600080fd5b6110e0848484611927565b60085460009060ff161561148e57600080fd5b6107fe83836119de565b60085460009060ff16156114ab57600080fd5b60006114b7858561181c565b9050846001600160a01b0316336001600160a01b03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1686866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561153357818101518382015260200161151b565b50505050905090810190601f1680156115605780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3611577856112cf565b156110e057611587858585611a7a565b6110e0576040805162461bcd60e51b815260206004820152601860248201527f436f6e74726163742066616c6c6261636b206661696c65640000000000000000604482015290519081900360640190fd5b6000828201838110156107fe57600080fd5b6001600160a01b0382166115fd57600080fd5b600254611610908263ffffffff6115d816565b6002556001600160a01b03821660009081526020819052604090205461163c908263ffffffff6115d816565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610c663382611bc3565b60006001600160a01b0382166116b157600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6116e260078263ffffffff611c6a16565b6040516001600160a01b038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b6117238282611cb2565b5050565b61173860078263ffffffff611d6216565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b61178060098263ffffffff611d6216565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6117c860098263ffffffff611c6a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60085460009060ff161561181257600080fd5b6107fe8383611dae565b60085460009060ff161561182f57600080fd5b6107fe8383611df7565b6001600160a01b03811661184c57600080fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b0383166118bd57600080fd5b3360008181526001602090815260408083206001600160a01b0388168085529083529281902086905580518681529051929392600080516020611efa833981519152929181900390910190a350600192915050565b60008282111561192157600080fd5b50900390565b6001600160a01b038316600090815260016020908152604080832033845290915281205461195b908363ffffffff61191216565b6001600160a01b038516600090815260016020908152604080832033845290915290205561198a848484611e0d565b6001600160a01b038416600081815260016020908152604080832033808552908352928190205481519081529051929392600080516020611efa833981519152929181900390910190a35060019392505050565b60006001600160a01b0383166119f357600080fd5b3360009081526001602090815260408083206001600160a01b0387168452909152902054611a27908363ffffffff6115d816565b3360008181526001602090815260408083206001600160a01b038916808552908352928190208590558051948552519193600080516020611efa833981519152929081900390910190a350600192915050565b604051635260769b60e11b815233600482018181526024830185905260606044840190815284516064850152845160009488946001600160a01b0386169463a4c0ed369491938a938a939160849091019060208501908083838e5b83811015611aed578181015183820152602001611ad5565b50505050905090810190601f168015611b1a5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015611b3b57600080fd5b505af1158015611b4f573d6000803e3d6000fd5b505050506040513d6020811015611b6557600080fd5b5051611bb8576040805162461bcd60e51b815260206004820152601860248201527f436f6e74726163742046616c6c6261636b206661696c65640000000000000000604482015290519081900360640190fd5b506001949350505050565b6001600160a01b038216611bd657600080fd5b600254611be9908263ffffffff61191216565b6002556001600160a01b038216600090815260208190526040902054611c15908263ffffffff61191216565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b6001600160a01b038116611c7d57600080fd5b611c87828261169c565b611c9057600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b0382166000908152600160209081526040808320338452909152902054611ce6908263ffffffff61191216565b6001600160a01b0383166000908152600160209081526040808320338452909152902055611d148282611bc3565b6001600160a01b038216600081815260016020908152604080832033808552908352928190205481519081529051929392600080516020611efa833981519152929181900390910190a35050565b6001600160a01b038116611d7557600080fd5b611d7f828261169c565b15611d8957600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038316611dc357600080fd5b3360009081526001602090815260408083206001600160a01b0387168452909152902054611a27908363ffffffff61191216565b6000611e04338484611e0d565b50600192915050565b6001600160a01b038216611e2057600080fd5b6001600160a01b038316600090815260208190526040902054611e49908263ffffffff61191216565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611e7e908263ffffffff6115d816565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505056fe43616e6e6f7420696e63726561736520737570706c79206265796f6e64206361708c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a265627a7a72315820377577b98803c2210dfa17f6feaf68d6a856726073543a35d4a8526c1f78cc9f64736f6c6343000510003260806040526000805460ff60a01b1916600960a11b17905534801561002357600080fd5b50600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36108508061007c6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063715018a611610071578063715018a6146101785780638da5cb5b146101825780638f32d59b146101a6578063981b24d0146101ae5780639dc29fac146101cb578063f2fde38b146101f7576100a9565b806318160ddd146100ae578063313ce567146100c857806340c10f19146100e65780634ee2cd7e1461012657806370a0823114610152575b600080fd5b6100b661021d565b60408051918252519081900360200190f35b6100d061022e565b6040805160ff9092168252519081900360200190f35b610112600480360360408110156100fc57600080fd5b506001600160a01b03813516906020013561023e565b604080519115158252519081900360200190f35b6100b66004803603604081101561013c57600080fd5b506001600160a01b038135169060200135610305565b6100b66004803603602081101561016857600080fd5b50356001600160a01b0316610395565b6101806103a9565b005b61018a610404565b604080516001600160a01b039092168252519081900360200190f35b610112610413565b6100b6600480360360208110156101c457600080fd5b5035610424565b610112600480360360408110156101e157600080fd5b506001600160a01b038135169060200135610476565b6101806004803603602081101561020d57600080fd5b50356001600160a01b031661052b565b600061022843610424565b90505b90565b600054600160a01b900460ff1681565b6000610248610413565b61025157600080fd5b600061025b61021d565b905080838201101561026c57600080fd5b600061027785610395565b905080848201101561028857600080fd5b6102956002858401610548565b6001600160a01b03851660009081526001602052604090206102b990828601610548565b6040805185815290516001600160a01b038716917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a26001925050505b92915050565b6001600160a01b038216600090815260016020526040812054158061035f57506001600160a01b0383166000908152600160205260408120805484929061034857fe5b6000918252602090912001546001600160801b0316115b1561036c575060006102ff565b6001600160a01b038316600090815260016020526040902061038e9083610636565b90506102ff565b60006103a18243610305565b90505b919050565b6103b1610413565b6103ba57600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b6002546000901580610457575081600260008154811061044057fe5b6000918252602090912001546001600160801b0316115b15610464575060006103a4565b61046f600283610636565b90506103a4565b6000610480610413565b61048957600080fd5b600061049361021d565b90508260006104a186610395565b9050818110156104af578091505b6104bc6002838503610548565b6001600160a01b03861660009081526001602052604090206104e090838303610548565b6040805183815290516001600160a01b038816917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a250600195945050505050565b610533610413565b61053c57600080fd5b61054581610766565b50565b80816001600160801b03161461055d57600080fd5b815415806105915750815443908390600019810190811061057a57fe5b6000918252602090912001546001600160801b0316105b156105f857815460009083906105aa82600183016107d4565b815481106105b457fe5b600091825260209091200180546001600160801b03848116600160801b024382166fffffffffffffffffffffffffffffffff19909316929092171617905550610632565b81546000908390600019810190811061060d57fe5b600091825260209091200180546001600160801b03808516600160801b029116179055505b5050565b8154600090610647575060006102ff565b82548390600019810190811061065957fe5b6000918252602090912001546001600160801b031682106106a95782548390600019810190811061068657fe5b600091825260209091200154600160801b90046001600160801b031690506102ff565b826000815481106106b657fe5b6000918252602090912001546001600160801b03168210156106da575060006102ff565b8254600090600019015b8181111561073557600060026001838501010490508486828154811061070657fe5b6000918252602090912001546001600160801b0316116107285780925061072f565b6001810391505b506106e4565b84828154811061074157fe5b600091825260209091200154600160801b90046001600160801b031695945050505050565b6001600160a01b03811661077957600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b8154818355818111156107f8576000838152602090206107f89181019083016107fd565b505050565b61022b91905b808211156108175760008155600101610803565b509056fea265627a7a72315820eef52360cfb55d4a7a4e0a0476462053eb63c71a61f397940bb0010de8033bcf64736f6c63430005100032a265627a7a72315820f11fae8761b8f4d448627beabf048188e4bb6a9d7e28052263934852409f9f5d64736f6c63430005100032",
  "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620000525760003560e01c8063064bf38614620000575780635aef7de614620001d6578063edc4476e14620001fc578063f83d08ba146200038d575b600080fd5b620001d4600480360360a08110156200006f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156200009a57600080fd5b820183602082011115620000ad57600080fd5b803590602001918460208302840111600160201b83111715620000cf57600080fd5b919390929091602081019035600160201b811115620000ed57600080fd5b8201836020820111156200010057600080fd5b803590602001918460208302840111600160201b831117156200012257600080fd5b919390929091602081019035600160201b8111156200014057600080fd5b8201836020820111156200015357600080fd5b803590602001918460208302840111600160201b831117156200017557600080fd5b919390929091602081019035600160201b8111156200019357600080fd5b820183602082011115620001a657600080fd5b803590602001918460018302840111600160201b83111715620001c857600080fd5b50909250905062000397565b005b620001e062000710565b604080516001600160a01b039092168252519081900360200190f35b620001e060048036036101008110156200021557600080fd5b810190602081018135600160201b8111156200023057600080fd5b8201836020820111156200024357600080fd5b803590602001918460018302840111600160201b831117156200026557600080fd5b919390929091602081019035600160201b8111156200028357600080fd5b8201836020820111156200029657600080fd5b803590602001918460018302840111600160201b83111715620002b857600080fd5b919390928235926001600160a01b0360208201358116936040830135909116929091608081019060600135600160201b811115620002f557600080fd5b8201836020820111156200030857600080fd5b803590602001918460208302840111600160201b831117156200032a57600080fd5b91939092823592604081019060200135600160201b8111156200034c57600080fd5b8201836020820111156200035f57600080fd5b803590602001918460208302840111600160201b831117156200038157600080fd5b5090925090506200071f565b620001e062000831565b6001546001600160a01b03163314620003f7576040805162461bcd60e51b815260206004820152601a60248201527f4d6573736167652073656e646572206973206e6f74206c6f636b000000000000604482015290519081900360640190fd5b6000896001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200043357600080fd5b505afa15801562000448573d6000803e3d6000fd5b505050506040513d60208110156200045f57600080fd5b5051905060005b888110156200058957816001600160a01b031663e869d45f8b8b848181106200048b57fe5b905060200201356001600160a01b03168a8a85818110620004a857fe5b90506020020135898986818110620004bc57fe5b905060200201356001600160e01b0319168f6040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001848152602001836001600160e01b0319166001600160e01b0319168152602001826001600160a01b03166001600160a01b03168152602001945050505050602060405180830381600087803b1580156200055257600080fd5b505af115801562000567573d6000803e3d6000fd5b505050506040513d60208110156200057e57600080fd5b505060010162000466565b506040805163c9b62eb160e01b81526001600160a01b038c81166024830152600482019283526044820185905283169163c9b62eb191869186918f91908190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156200060957600080fd5b505af11580156200061e573d6000803e3d6000fd5b505050506040513d60208110156200063557600080fd5b50506040805163039de01d60e01b81523060048201526001600160a01b038c8116602483015291519183169163039de01d916044808201926020929091908290030181600087803b1580156200068a57600080fd5b505af11580156200069f573d6000803e3d6000fd5b505050506040513d6020811015620006b657600080fd5b5050600180546001600160a01b0319169055604080516001600160a01b038c16815290517f9007c9042f12be953f7dbe3909f56c3f088e9fe294dbebbef4a67afa63462b6a9181900360200190a150505050505050505050565b6000546001600160a01b031681565b6000620008208d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508b8b8b8b8b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82528f94509092508d918d918291908501908490808284376000920191909152506200084092505050565b9d9c50505050505050505050505050565b6001546001600160a01b031681565b6001546000906001600160a01b03161562000898576040805162461bcd60e51b81526020600482015260136024820152724c6f636b20616c72656164792065786973747360681b604482015290519081900360640190fd5b8151845114620008ef576040805162461bcd60e51b815260206004820152601a60248201527f466f756e6465722072657075746174696f6e206d697373696e67000000000000604482015290519081900360640190fd5b600084511162000946576040805162461bcd60e51b815260206004820152601e60248201527f4d7573742068617665206174206c65617374206f6e6520666f756e6465720000604482015290519081900360640190fd5b6000898989898960006040516200095d9062000e4c565b604081018590526001600160a01b0380851660608301528381166080830152821660a082015260c08082528751908201528651819060208083019160e08401918b019080838360005b83811015620009c0578181015183820152602001620009a6565b50505050905090810190601f168015620009ee5780820380516001836020036101000a031916815260200191505b5083810382528851815288516020918201918a019080838360005b8381101562000a2357818101518382015260200162000a09565b50505050905090810190601f16801562000a515780820380516001836020036101000a031916815260200191505b5098505050505050505050604051809103906000f08015801562000a79573d6000803e3d6000fd5b509050600060405162000a8c9062000e5a565b604051809103906000f08015801562000aa9573d6000803e3d6000fd5b5060025460408051634c1d96ab60e11b81526001600160a01b03928316600482015290519293509084169163983b2d569160248082019260009290919082900301818387803b15801562000afc57600080fd5b505af115801562000b11573d6000803e3d6000fd5b50505050816001600160a01b031663986502756040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000b5157600080fd5b505af115801562000b66573d6000803e3d6000fd5b50506002546040805163f2fde38b60e01b81526001600160a01b0392831660048201529051918616935063f2fde38b925060248082019260009290919082900301818387803b15801562000bb957600080fd5b505af115801562000bce573d6000803e3d6000fd5b50506002546040805163f2fde38b60e01b81526001600160a01b0392831660048201529051918516935063f2fde38b925060248082019260009290919082900301818387803b15801562000c2157600080fd5b505af115801562000c36573d6000803e3d6000fd5b50506002546040516304bd7c3f60e51b81526001600160a01b038681166004830190815286821660248401523360448401819052608484018c905260c0606485019081528d5160c48601528d519390951696506397af87e095508894889491938e938e938e93919260a482019160e401906020808901910280838360005b8381101562000cce57818101518382015260200162000cb4565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101562000d0f57818101518382015260200162000cf5565b5050505090500198505050505050505050602060405180830381600087803b15801562000d3b57600080fd5b505af115801562000d50573d6000803e3d6000fd5b505050506040513d602081101562000d6757600080fd5b5051600080546001600160a01b0319166001600160a01b0392831617808255604080516320b707b160e21b8152918416600483015251928516926382dc1ec49260248084019391929182900301818387803b15801562000dc657600080fd5b505af115801562000ddb573d6000803e3d6000fd5b5050600180546001600160a01b031916331790555050600054604080516001600160a01b03929092168252517f244496352f5e67e59ce96b4a53ef9ea7cb88b7db33eb13dc5e771bd04385a60e9181900360200190a150506000546001600160a01b03169998505050505050505050565b6124bc8062000e6983390190565b6108cc80620033258339019056fe60806040523480156200001157600080fd5b50604051620024bc380380620024bc833981810160405260c08110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060408181526020830151908301516060840151608090940151600380546001600160a01b03191633179081905592965090945091849184918991899189918491849184918491849184916001600160a01b0316906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a382516200022a906004906020860190620004b9565b50815162000240906005906020850190620004b9565b50600655506200025b9050336001600160e01b036200038616565b50506008805460ff19169055506200027c336001600160e01b03620003d816565b5050506001600160a01b038116620002db576040805162461bcd60e51b815260206004820152601960248201527f537570706c696564206964656e74697479206973206e756c6c00000000000000604482015290519081900360640190fd5b600b80546001600160a01b0319166001600160a01b0392831617905581166200034b576040805162461bcd60e51b815260206004820152601860248201527f537570706c69656420666f726d756c61206973206e756c6c0000000000000000604482015290519081900360640190fd5b600c80546001600160a01b039283166001600160a01b031991821617909155600d8054939092169216919091179055506200055e9350505050565b620003a18160076200042a60201b62001d621790919060201c565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b620003f38160096200042a60201b62001d621790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6001600160a01b0381166200043e57600080fd5b6200045382826001600160e01b036200048316565b156200045e57600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b0382166200049957600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004fc57805160ff19168380011785556200052c565b828001600101855582156200052c579182015b828111156200052c5782518255916020019190600101906200050f565b506200053a9291506200053e565b5090565b6200055b91905b808211156200053a576000815560010162000545565b90565b611f4e806200056e6000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c806370a082311161013057806398650275116100b8578063d5a06d4c1161007c578063d5a06d4c146106a7578063dd62ed3e146106c4578063e74b981b146106f2578063ecc06c7614610718578063f2fde38b1461073e57610232565b80639865027514610619578063a457c2d714610621578063a9059cbb1461064d578063aa271e1a14610679578063cd5965831461069f57610232565b80638456cb59116100ff5780638456cb59146105d35780638da5cb5b146105db5780638f32d59b146105e357806395d89b41146105eb578063983b2d56146105f357610232565b806370a0823114610553578063715018a61461057957806379cc67901461058157806382dc1ec4146105ad57610232565b806339509351116101be57806346fbf68e1161018257806346fbf68e146104ef5780634b75f54f146105155780635c975abb1461051d5780635d5bf178146105255780636ef8d66d1461054b57610232565b806339509351146103ed5780633f4ba83a146104195780634000aea01461042157806340c10f19146104a657806342966c68146104d257610232565b806323b872dd1161020557806323b872dd146103365780632c159a1a1461036c578063313ce56714610390578063355274ea1461039857806339364fd7146103a057610232565b806306fdde0314610237578063095ea7b3146102b45780630b26cf66146102f457806318160ddd1461031c575b600080fd5b61023f610764565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610279578181015183820152602001610261565b50505050905090810190601f1680156102a65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e0600480360360408110156102ca57600080fd5b506001600160a01b0381351690602001356107f2565b604080519115158252519081900360200190f35b61031a6004803603602081101561030a57600080fd5b50356001600160a01b0316610805565b005b6103246108a6565b60408051918252519081900360200190f35b6102e06004803603606081101561034c57600080fd5b506001600160a01b038135811691602081013590911690604001356108ac565b6103746108d0565b604080516001600160a01b039092168252519081900360200190f35b6103246108df565b6103246108e4565b6103d4600480360360608110156103b657600080fd5b508035906001600160a01b03602082013581169160400135166108ea565b6040805192835290151560208301528051918290030190f35b6102e06004803603604081101561040357600080fd5b506001600160a01b038135169060200135610985565b61031a610991565b6102e06004803603606081101561043757600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561046757600080fd5b82018360208201111561047957600080fd5b8035906020019184600183028401116401000000008311171561049b57600080fd5b5090925090506109f1565b6102e0600480360360408110156104bc57600080fd5b506001600160a01b038135169060200135610a4c565b61031a600480360360208110156104e857600080fd5b5035610b9c565b6102e06004803603602081101561050557600080fd5b50356001600160a01b0316610c69565b610374610c82565b6102e0610c91565b61031a6004803603602081101561053b57600080fd5b50356001600160a01b0316610c9a565b61031a610d83565b6103246004803603602081101561056957600080fd5b50356001600160a01b0316610d8e565b61031a610da9565b61031a6004803603604081101561059757600080fd5b506001600160a01b038135169060200135610e04565b61031a600480360360208110156105c357600080fd5b50356001600160a01b0316610f9c565b61031a610fb7565b61037461101b565b6102e061102a565b61023f61103b565b61031a6004803603602081101561060957600080fd5b50356001600160a01b0316611096565b61031a6110b1565b6102e06004803603604081101561063757600080fd5b506001600160a01b0381351690602001356110ba565b6102e06004803603604081101561066357600080fd5b506001600160a01b0381351690602001356110c6565b6102e06004803603602081101561068f57600080fd5b50356001600160a01b03166110e8565b6103746110fb565b6103d4600480360360208110156106bd57600080fd5b503561110a565b610324600480360360408110156106da57600080fd5b506001600160a01b03813581169160200135166111a2565b61031a6004803603602081101561070857600080fd5b50356001600160a01b03166111cd565b61031a6004803603602081101561072e57600080fd5b50356001600160a01b0316611200565b61031a6004803603602081101561075457600080fd5b50356001600160a01b0316611298565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107ea5780601f106107bf576101008083540402835291602001916107ea565b820191906000526020600020905b8154815290600101906020018083116107cd57829003601f168201915b505050505081565b60006107fe83836112b2565b9392505050565b61080e336110e8565b61081757600080fd5b6001600160a01b038116158015906108335750610833816112cf565b610884576040805162461bcd60e51b815260206004820152601760248201527f496e76616c69642062726964676520636f6e7472616374000000000000000000604482015290519081900360640190fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60025490565b6000806108ba8585856112d5565b90506108c785858361145d565b95945050505050565b600b546001600160a01b031681565b600281565b60065481565b600c5460408051631eed540360e11b8152600481018690526001600160a01b038581166024830152848116604483015282516000948594921692633ddaa806926064808301939192829003018186803b15801561094657600080fd5b505afa15801561095a573d6000803e3d6000fd5b505050506040513d604081101561097057600080fd5b50805160209091015190969095509350505050565b60006107fe838361147b565b61099a33610c69565b6109a357600080fd5b60085460ff166109b257600080fd5b6008805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b6000806109ff3387876112d5565b9050610a42868286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061149892505050565b9695505050505050565b6000610a57336110e8565b610a6057600080fd5b600b546040805163fe575a8760e01b81526001600160a01b03808716600483015291518693929092169163fe575a8791602480820192602092909190829003018186803b158015610ab057600080fd5b505afa158015610ac4573d6000803e3d6000fd5b505050506040513d6020811015610ada57600080fd5b505115610b28576040805162461bcd60e51b8152602060048201526017602482015276149958d95a5d995c881a5cc8189b1858dadb1a5cdd1959604a1b604482015290519081900360640190fd5b60065415610b8857600654610b4b84610b3f6108a6565b9063ffffffff6115d816565b1115610b885760405162461bcd60e51b8152600401808060200182810382526021815260200180611ed96021913960400191505060405180910390fd5b610b9284846115ea565b5060019392505050565b600b546040805163fe575a8760e01b815233600482015290516001600160a01b039092169163fe575a8791602480820192602092909190829003018186803b158015610be757600080fd5b505afa158015610bfb573d6000803e3d6000fd5b505050506040513d6020811015610c1157600080fd5b505115610c5d576040805162461bcd60e51b815260206004820152601560248201527410d85b1b195c881a5cc8189b1858dadb1a5cdd1959605a1b604482015290519081900360640190fd5b610c6681611692565b50565b6000610c7c60078363ffffffff61169c16565b92915050565b600c546001600160a01b031681565b60085460ff1690565b610ca261102a565b610cab57600080fd5b806001600160a01b031663223668446040518163ffffffff1660e01b815260040160206040518083038186803b158015610ce457600080fd5b505afa158015610cf8573d6000803e3d6000fd5b505050506040513d6020811015610d0e57600080fd5b5051610d61576040805162461bcd60e51b815260206004820152601a60248201527f4964656e74697479206973206e6f742072656769737465726564000000000000604482015290519081900360640190fd5b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b610d8c336116d1565b565b6001600160a01b031660009081526020819052604090205490565b610db161102a565b610dba57600080fd5b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b600b546040805163fe575a8760e01b815233600482015290516001600160a01b039092169163fe575a8791602480820192602092909190829003018186803b158015610e4f57600080fd5b505afa158015610e63573d6000803e3d6000fd5b505050506040513d6020811015610e7957600080fd5b505115610ec5576040805162461bcd60e51b815260206004820152601560248201527410d85b1b195c881a5cc8189b1858dadb1a5cdd1959605a1b604482015290519081900360640190fd5b600b546040805163fe575a8760e01b81526001600160a01b03808616600483015291518593929092169163fe575a8791602480820192602092909190829003018186803b158015610f1557600080fd5b505afa158015610f29573d6000803e3d6000fd5b505050506040513d6020811015610f3f57600080fd5b505115610f8d576040805162461bcd60e51b8152602060048201526017602482015276149958d95a5d995c881a5cc8189b1858dadb1a5cdd1959604a1b604482015290519081900360640190fd5b610f978383611719565b505050565b610fa533610c69565b610fae57600080fd5b610c6681611727565b610fc033610c69565b610fc957600080fd5b60085460ff1615610fd957600080fd5b6008805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b6003546001600160a01b031690565b6003546001600160a01b0316331490565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107ea5780601f106107bf576101008083540402835291602001916107ea565b61109f336110e8565b6110a857600080fd5b610c668161176f565b610d8c336117b7565b60006107fe83836117ff565b6000806110d43385856112d5565b90506110e0848261181c565b949350505050565b6000610c7c60098363ffffffff61169c16565b600a546001600160a01b031681565b600c5460408051631eed540360e11b815260048101849052600060248201819052604482018190528251909384936001600160a01b0390911692633ddaa8069260648083019392829003018186803b15801561116557600080fd5b505afa158015611179573d6000803e3d6000fd5b505050506040513d604081101561118f57600080fd5b5080516020909101519092509050915091565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6111d561102a565b6111de57600080fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b61120861102a565b61121157600080fd5b806001600160a01b031663223668446040518163ffffffff1660e01b815260040160206040518083038186803b15801561124a57600080fd5b505afa15801561125e573d6000803e3d6000fd5b505050506040513d602081101561127457600080fd5b5050600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6112a061102a565b6112a957600080fd5b610c6681611839565b60085460009060ff16156112c557600080fd5b6107fe83836118a8565b3b151590565b60008060006112e58487876108ea565b9150915060008211801561136d5750600b546040805163639e625760e11b815233600482015290516001600160a01b039092169163c73cc4ae91602480820192602092909190829003018186803b15801561133f57600080fd5b505afa158015611353573d6000803e3d6000fd5b505050506040513d602081101561136957600080fd5b5051155b1561145357801580611396575061138386610d8e565b611393858463ffffffff6115d816565b11155b6113e7576040805162461bcd60e51b815260206004820181905260248201527f4e6f7420656e6f7567682062616c616e636520746f2070617920545820666565604482015290519081900360640190fd5b6001600160a01b03861633141561141457600d5461140e906001600160a01b03168361181c565b5061142e565b600d5461142c9087906001600160a01b03168461145d565b505b8061144857611443848363ffffffff61191216565b61144a565b835b925050506107fe565b5091949350505050565b60085460009060ff161561147057600080fd5b6110e0848484611927565b60085460009060ff161561148e57600080fd5b6107fe83836119de565b60085460009060ff16156114ab57600080fd5b60006114b7858561181c565b9050846001600160a01b0316336001600160a01b03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1686866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561153357818101518382015260200161151b565b50505050905090810190601f1680156115605780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3611577856112cf565b156110e057611587858585611a7a565b6110e0576040805162461bcd60e51b815260206004820152601860248201527f436f6e74726163742066616c6c6261636b206661696c65640000000000000000604482015290519081900360640190fd5b6000828201838110156107fe57600080fd5b6001600160a01b0382166115fd57600080fd5b600254611610908263ffffffff6115d816565b6002556001600160a01b03821660009081526020819052604090205461163c908263ffffffff6115d816565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610c663382611bc3565b60006001600160a01b0382166116b157600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6116e260078263ffffffff611c6a16565b6040516001600160a01b038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b6117238282611cb2565b5050565b61173860078263ffffffff611d6216565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b61178060098263ffffffff611d6216565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6117c860098263ffffffff611c6a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60085460009060ff161561181257600080fd5b6107fe8383611dae565b60085460009060ff161561182f57600080fd5b6107fe8383611df7565b6001600160a01b03811661184c57600080fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b0383166118bd57600080fd5b3360008181526001602090815260408083206001600160a01b0388168085529083529281902086905580518681529051929392600080516020611efa833981519152929181900390910190a350600192915050565b60008282111561192157600080fd5b50900390565b6001600160a01b038316600090815260016020908152604080832033845290915281205461195b908363ffffffff61191216565b6001600160a01b038516600090815260016020908152604080832033845290915290205561198a848484611e0d565b6001600160a01b038416600081815260016020908152604080832033808552908352928190205481519081529051929392600080516020611efa833981519152929181900390910190a35060019392505050565b60006001600160a01b0383166119f357600080fd5b3360009081526001602090815260408083206001600160a01b0387168452909152902054611a27908363ffffffff6115d816565b3360008181526001602090815260408083206001600160a01b038916808552908352928190208590558051948552519193600080516020611efa833981519152929081900390910190a350600192915050565b604051635260769b60e11b815233600482018181526024830185905260606044840190815284516064850152845160009488946001600160a01b0386169463a4c0ed369491938a938a939160849091019060208501908083838e5b83811015611aed578181015183820152602001611ad5565b50505050905090810190601f168015611b1a5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015611b3b57600080fd5b505af1158015611b4f573d6000803e3d6000fd5b505050506040513d6020811015611b6557600080fd5b5051611bb8576040805162461bcd60e51b815260206004820152601860248201527f436f6e74726163742046616c6c6261636b206661696c65640000000000000000604482015290519081900360640190fd5b506001949350505050565b6001600160a01b038216611bd657600080fd5b600254611be9908263ffffffff61191216565b6002556001600160a01b038216600090815260208190526040902054611c15908263ffffffff61191216565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b6001600160a01b038116611c7d57600080fd5b611c87828261169c565b611c9057600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b0382166000908152600160209081526040808320338452909152902054611ce6908263ffffffff61191216565b6001600160a01b0383166000908152600160209081526040808320338452909152902055611d148282611bc3565b6001600160a01b038216600081815260016020908152604080832033808552908352928190205481519081529051929392600080516020611efa833981519152929181900390910190a35050565b6001600160a01b038116611d7557600080fd5b611d7f828261169c565b15611d8957600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038316611dc357600080fd5b3360009081526001602090815260408083206001600160a01b0387168452909152902054611a27908363ffffffff61191216565b6000611e04338484611e0d565b50600192915050565b6001600160a01b038216611e2057600080fd5b6001600160a01b038316600090815260208190526040902054611e49908263ffffffff61191216565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611e7e908263ffffffff6115d816565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505056fe43616e6e6f7420696e63726561736520737570706c79206265796f6e64206361708c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a265627a7a72315820377577b98803c2210dfa17f6feaf68d6a856726073543a35d4a8526c1f78cc9f64736f6c6343000510003260806040526000805460ff60a01b1916600960a11b17905534801561002357600080fd5b50600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36108508061007c6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063715018a611610071578063715018a6146101785780638da5cb5b146101825780638f32d59b146101a6578063981b24d0146101ae5780639dc29fac146101cb578063f2fde38b146101f7576100a9565b806318160ddd146100ae578063313ce567146100c857806340c10f19146100e65780634ee2cd7e1461012657806370a0823114610152575b600080fd5b6100b661021d565b60408051918252519081900360200190f35b6100d061022e565b6040805160ff9092168252519081900360200190f35b610112600480360360408110156100fc57600080fd5b506001600160a01b03813516906020013561023e565b604080519115158252519081900360200190f35b6100b66004803603604081101561013c57600080fd5b506001600160a01b038135169060200135610305565b6100b66004803603602081101561016857600080fd5b50356001600160a01b0316610395565b6101806103a9565b005b61018a610404565b604080516001600160a01b039092168252519081900360200190f35b610112610413565b6100b6600480360360208110156101c457600080fd5b5035610424565b610112600480360360408110156101e157600080fd5b506001600160a01b038135169060200135610476565b6101806004803603602081101561020d57600080fd5b50356001600160a01b031661052b565b600061022843610424565b90505b90565b600054600160a01b900460ff1681565b6000610248610413565b61025157600080fd5b600061025b61021d565b905080838201101561026c57600080fd5b600061027785610395565b905080848201101561028857600080fd5b6102956002858401610548565b6001600160a01b03851660009081526001602052604090206102b990828601610548565b6040805185815290516001600160a01b038716917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a26001925050505b92915050565b6001600160a01b038216600090815260016020526040812054158061035f57506001600160a01b0383166000908152600160205260408120805484929061034857fe5b6000918252602090912001546001600160801b0316115b1561036c575060006102ff565b6001600160a01b038316600090815260016020526040902061038e9083610636565b90506102ff565b60006103a18243610305565b90505b919050565b6103b1610413565b6103ba57600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b6002546000901580610457575081600260008154811061044057fe5b6000918252602090912001546001600160801b0316115b15610464575060006103a4565b61046f600283610636565b90506103a4565b6000610480610413565b61048957600080fd5b600061049361021d565b90508260006104a186610395565b9050818110156104af578091505b6104bc6002838503610548565b6001600160a01b03861660009081526001602052604090206104e090838303610548565b6040805183815290516001600160a01b038816917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a250600195945050505050565b610533610413565b61053c57600080fd5b61054581610766565b50565b80816001600160801b03161461055d57600080fd5b815415806105915750815443908390600019810190811061057a57fe5b6000918252602090912001546001600160801b0316105b156105f857815460009083906105aa82600183016107d4565b815481106105b457fe5b600091825260209091200180546001600160801b03848116600160801b024382166fffffffffffffffffffffffffffffffff19909316929092171617905550610632565b81546000908390600019810190811061060d57fe5b600091825260209091200180546001600160801b03808516600160801b029116179055505b5050565b8154600090610647575060006102ff565b82548390600019810190811061065957fe5b6000918252602090912001546001600160801b031682106106a95782548390600019810190811061068657fe5b600091825260209091200154600160801b90046001600160801b031690506102ff565b826000815481106106b657fe5b6000918252602090912001546001600160801b03168210156106da575060006102ff565b8254600090600019015b8181111561073557600060026001838501010490508486828154811061070657fe5b6000918252602090912001546001600160801b0316116107285780925061072f565b6001810391505b506106e4565b84828154811061074157fe5b600091825260209091200154600160801b90046001600160801b031695945050505050565b6001600160a01b03811661077957600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b8154818355818111156107f8576000838152602090206107f89181019083016107fd565b505050565b61022b91905b808211156108175760008155600101610803565b509056fea265627a7a72315820eef52360cfb55d4a7a4e0a0476462053eb63c71a61f397940bb0010de8033bcf64736f6c63430005100032a265627a7a72315820f11fae8761b8f4d448627beabf048188e4bb6a9d7e28052263934852409f9f5d64736f6c63430005100032",
  "sourceMap": "3086:4417:2:-;;;3296:119;8:9:-1;5:2;;;30:1;27;20:12;5:2;3296:119:2;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3296:119:2;3365:21;:46;;-1:-1:-1;;;;;;3365:46:2;-1:-1:-1;;;;;3365:46:2;;;;;;;;;3086:4417;;;-1:-1:-1;3086:4417:2;;",
  "deployedSourceMap": "3086:4417:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3086:4417:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4850:818;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;4850:818:2;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4850:818:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4850:818:2;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;4850:818:2;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4850:818:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4850:818:2;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;4850:818:2;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4850:818:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4850:818:2;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;4850:818:2;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4850:818:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4850:818:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;4850:818:2;;-1:-1:-1;4850:818:2;-1:-1:-1;4850:818:2;:::i;:::-;;3119:20;;;:::i;:::-;;;;-1:-1:-1;;;;;3119:20:2;;;;;;;;;;;;;;3993:534;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3993:534:2;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3993:534:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3993:534:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3993:534:2;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3993:534:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3993:534:2;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3993:534:2;;;;;;;-1:-1:-1;;;;;3993:534:2;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3993:534:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3993:534:2;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;3993:534:2;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3993:534:2;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3993:534:2;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;3993:534:2;;-1:-1:-1;3993:534:2;-1:-1:-1;3993:534:2;:::i;3142:19::-;;;:::i;4850:818::-;5134:4;;-1:-1:-1;;;;;5134:4:2;5142:10;5134:18;5126:57;;;;;-1:-1:-1;;;5126:57:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;5218:30;5271:7;-1:-1:-1;;;;;5271:13:2;;:15;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5271:15:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5271:15:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5271:15:2;;-1:-1:-1;5296:9:2;5291:162;5311:19;;;5291:162;;;5342:10;-1:-1:-1;;;;;5342:25:2;;5373:8;;5382:1;5373:11;;;;;;;;;;;;;-1:-1:-1;;;;;5373:11:2;5390:7;;5398:1;5390:10;;;;;;;;;;;;;5406:12;;5419:1;5406:15;;;;;;;;;;;;;-1:-1:-1;;;;;5406:15:2;;5435:7;5342:106;;;;;;;;;;;;;-1:-1:-1;;;;;5342:106:2;-1:-1:-1;;;;;5342:106:2;;;;;;;;;;;-1:-1:-1;;;;;5342:106:2;;-1:-1:-1;;;;;5342:106:2;;;;;;;-1:-1:-1;;;;;5342:106:2;-1:-1:-1;;;;;5342:106:2;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5342:106:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5342:106:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;5332:3:2;;5291:162;;;-1:-1:-1;5456:39:2;;;-1:-1:-1;;;5456:39:2;;-1:-1:-1;;;;;5456:39:2;;;;;;;;;;;;;;;;;;;:19;;;;;5476:9;;;;5487:7;;5456:39;;;;;5476:9;;;;5456:39;1:33:-1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;5456:39:2;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5456:39:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5456:39:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;5521:60:2;;;-1:-1:-1;;;5521:60:2;;5557:4;5521:60;;;;-1:-1:-1;;;;;5521:60:2;;;;;;;;;:27;;;;;;:60;;;;;5456:39;;5521:60;;;;;;;;-1:-1:-1;5521:27:2;:60;;;5:2:-1;;;;30:1;27;20:12;5:2;5521:60:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5521:60:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;5603:4:2;:17;;-1:-1:-1;;;;;;5603:17:2;;;5629:35;;;-1:-1:-1;;;;;5629:35:2;;;;;;;;;;;5521:60;5629:35;;;4850:818;;;;;;;;;;:::o;3119:20::-;;;-1:-1:-1;;;;;3119:20:2;;:::o;3993:534::-;4265:7;4366:157;4381:10;;4366:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;4366:157:2;;;;;;4397:12;;4366:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;4366:157:2;;;;;;4415:4;4425:8;4439:9;4454;;4366:157;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;4366:157:2;;;;;;;;;;;;;;;;;;4469:18;;-1:-1:-1;4366:157:2;;-1:-1:-1;4493:25:2;;;;;;4366:157;;;;4493:25;;4366:157;4493:25;4366:157;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;4366:9:2;;-1:-1:-1;;;4366:157:2:i;:::-;4356:167;3993:534;-1:-1:-1;;;;;;;;;;;;;3993:534:2:o;3142:19::-;;;-1:-1:-1;;;;;3142:19:2;;:::o;6233:1268::-;6560:4;;6497:7;;-1:-1:-1;;;;;6560:4:2;:18;6552:50;;;;;-1:-1:-1;;;6552:50:2;;;;;;;;;;;;-1:-1:-1;;;6552:50:2;;;;;;;;;;;;;;;6638:25;:32;6618:9;:16;:52;6606:101;;;;;-1:-1:-1;;;6606:101:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;6738:1;6719:9;:16;:20;6711:63;;;;;-1:-1:-1;;;6711:63:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;6778:22;6822:10;6837:12;6854:4;6863:8;6876:9;6898:1;6803:101;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;6803:101:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6803:101:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6803:101:2;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6803:101:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6803:101:2;6778:126;;6908:27;6938:16;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;7010:21:2;;6980:53;;;-1:-1:-1;;;6980:53:2;;-1:-1:-1;;;;;7010:21:2;;;6980:53;;;;;;6908:46;;-1:-1:-1;6980:21:2;;;;;;:53;;;;;7010:21;;6980:53;;;;;;;;7010:21;6980;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;6980:53:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6980:53:2;;;;7037:11;-1:-1:-1;;;;;7037:26:2;;:28;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7037:28:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;7108:21:2;;7070:61;;;-1:-1:-1;;;7070:61:2;;-1:-1:-1;;;;;7108:21:2;;;7070:61;;;;;;:29;;;;-1:-1:-1;7070:29:2;;-1:-1:-1;7070:61:2;;;;;7108:21;;7070:61;;;;;;;;7108:21;7070:29;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;7070:61:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;7178:21:2;;7135:66;;;-1:-1:-1;;;7135:66:2;;-1:-1:-1;;;;;7178:21:2;;;7135:66;;;;;;:34;;;;-1:-1:-1;7135:34:2;;-1:-1:-1;7135:66:2;;;;;7178:21;;7135:66;;;;;;;;7178:21;7135:34;:66;;;5:2:-1;;;;30:1;27;20:12;5:2;7135:66:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;7215:21:2;;:156;;-1:-1:-1;;;7215:156:2;;-1:-1:-1;;;;;7215:156:2;;;;;;;;;;;;;;;;7290:10;7215:156;;;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;;;-1:-1:-1;7215:33:2;;-1:-1:-1;7253:11:2;;7269:16;;7290:10;;7305:9;;7319:18;;7342:25;;7215:156;;;;;;;;;;;;;;;;;;:21;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;7215:156:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7215:156:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7215:156:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7215:156:2;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7215:156:2;7206:6;:165;;-1:-1:-1;;;;;;7206:165:2;-1:-1:-1;;;;;7206:165:2;;;;;;;7376:38;;;-1:-1:-1;;;7376:38:2;;7406:6;;;7376:38;;;;;:21;;;;;;:38;;;;;7206:6;;7376:38;;;;;;7206:6;7376:21;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;7376:38:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;7419:4:2;:17;;-1:-1:-1;;;;;;7419:17:2;7426:10;7419:17;;;-1:-1:-1;;7419:4:2;7461:6;7446:23;;;-1:-1:-1;;;;;7461:6:2;;;;7446:23;;;;;;;;;;;;-1:-1:-1;;7489:6:2;;-1:-1:-1;;;;;7489:6:2;;6233:1268;-1:-1:-1;;;;;;;;;6233:1268:2:o;3086:4417::-;;;;;;;;:::o;:::-;;;;;;;;:::o",
  "source": "pragma solidity >0.5.4;\n\nimport \"@daostack/arc/contracts/controller/Controller.sol\";\nimport \"@daostack/arc/contracts/universalSchemes/SchemeRegistrar.sol\";\nimport \"@daostack/arc/contracts/universalSchemes/UpgradeScheme.sol\";\n\nimport \"@daostack/infra/contracts/votingMachines/AbsoluteVote.sol\";\nimport \"@daostack/infra/contracts/Reputation.sol\";\n\nimport \"../token/GoodDollar.sol\";\nimport \"../identity/IdentityGuard.sol\";\nimport \"../dao/schemes/FeeFormula.sol\";\n\n/**\n * @title ControllerCreator for creating a single controller. Taken from @daostack.\n */\ncontract ControllerCreatorGoodDollar {\n\tfunction create(Avatar _avatar, address _sender) public returns (address) {\n\t\tController controller = new Controller(_avatar);\n\t\tcontroller.registerScheme(\n\t\t\t_sender,\n\t\t\tbytes32(0),\n\t\t\tbytes4(0x0000001f),\n\t\t\taddress(_avatar)\n\t\t);\n\t\tcontroller.unregisterScheme(address(this), address(_avatar));\n\t\treturn address(controller);\n\t}\n}\n\n/**\n * @title Contract for adding founders to the DAO. Separated from DaoCreator to reduce\n * contract sizes\n */\ncontract AddFoundersGoodDollar {\n\tfunction create(Avatar _avatar, address _sender)\n\t\tinternal\n\t\treturns (address)\n\t{\n\t\tController controller = new Controller(_avatar);\n\t\tcontroller.registerScheme(\n\t\t\t_sender,\n\t\t\tbytes32(0),\n\t\t\tbytes4(0x0000001f),\n\t\t\taddress(_avatar)\n\t\t);\n\t\tcontroller.unregisterScheme(address(this), address(_avatar));\n\t\treturn address(controller);\n\t}\n\n\t/**\n\t * @param _founders An array with the addresses of the founders of the organization\n\t * @param _avatarTokenAmount Amount of tokens that the avatar receive on new organization\n\t * @param _foundersReputationAmount An array of amount of reputation that the\n\t *   founders receive in the new organization\n\t */\n\tfunction addFounders(\n\t\tGoodDollar nativeToken,\n\t\tReputation nativeReputation,\n\t\taddress _sender,\n\t\taddress[] memory _founders,\n\t\tuint256 _avatarTokenAmount,\n\t\tuint256[] memory _foundersReputationAmount\n\t) public returns (Avatar) {\n\t\tAvatar avatar = new Avatar(\"GoodDollar\", nativeToken, nativeReputation);\n\n\t\t//mint token to avatar\n\t\tnativeToken.mint(address(avatar), _avatarTokenAmount);\n\n\t\t// Mint reputation for founders:\n\t\tfor (uint256 i = 0; i < _founders.length; i++) {\n\t\t\trequire(\n\t\t\t\t_founders[i] != address(0),\n\t\t\t\t\"Founder cannot be zero address\"\n\t\t\t);\n\t\t\tif (_foundersReputationAmount[i] > 0) {\n\t\t\t\tnativeReputation.mint(\n\t\t\t\t\t_founders[i],\n\t\t\t\t\t_foundersReputationAmount[i]\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\t// Create Controller:\n\t\tControllerInterface controller = ControllerInterface(\n\t\t\tcreate(avatar, msg.sender)\n\t\t);\n\n\t\t// Set fee recipient and Transfer ownership:\n\t\tnativeToken.setFeeRecipient(address(avatar));\n\n\t\tavatar.transferOwnership(address(controller));\n\t\tnativeToken.transferOwnership(address(avatar));\n\t\tnativeReputation.transferOwnership(address(controller));\n\n\t\t// Add minters\n\t\tnativeToken.addMinter(_sender);\n\t\tnativeToken.addMinter(address(avatar));\n\t\tnativeToken.addMinter(address(controller));\n\t\tnativeToken.renounceMinter();\n\t\treturn (avatar);\n\t}\n}\n\n/**\n * @title Genesis Scheme that creates organizations. Taken and modified from @daostack.\n */\ncontract DaoCreatorGoodDollar {\n\tAvatar public avatar;\n\taddress public lock;\n\n\tevent NewOrg(address _avatar);\n\tevent InitialSchemesSet(address _avatar);\n\n\tAddFoundersGoodDollar private addFoundersGoodDollar;\n\n\tconstructor(AddFoundersGoodDollar _addFoundersGoodDollar) public {\n\t\taddFoundersGoodDollar = _addFoundersGoodDollar;\n\t}\n\n\t/**\n\t * @dev Create a new organization\n\t * @param _tokenName The name of the token associated with the organization\n\t * @param _tokenSymbol The symbol of the token\n\t * @param _founders An array with the addresses of the founders of the organization\n\t * @param _avatarTokenAmount Amount of tokens that the avatar receive in the new organization\n\t * @param _foundersReputationAmount An array of amount of reputation that the\n\t *   founders receive in the new organization\n\t * @param  _cap token cap - 0 for no cap.\n\t * @return The address of the avatar of the controller\n\t */\n\tfunction forgeOrg(\n\t\tstring calldata _tokenName,\n\t\tstring calldata _tokenSymbol,\n\t\tuint256 _cap,\n\t\tFeeFormula _formula,\n\t\tIdentity _identity,\n\t\taddress[] calldata _founders,\n\t\tuint256 _avatarTokenAmount,\n\t\tuint256[] calldata _foundersReputationAmount\n\t) external returns (address) {\n\t\t//The call for the private function is needed to bypass a deep stack issues\n\t\treturn\n\t\t\t_forgeOrg(\n\t\t\t\t_tokenName,\n\t\t\t\t_tokenSymbol,\n\t\t\t\t_cap,\n\t\t\t\t_formula,\n\t\t\t\t_identity,\n\t\t\t\t_founders,\n\t\t\t\t_avatarTokenAmount,\n\t\t\t\t_foundersReputationAmount\n\t\t\t);\n\t}\n\n\t/**\n\t * @dev Set initial schemes for the organization.\n\t * @param _avatar organization avatar (returns from forgeOrg)\n\t * @param _schemes the schemes to register for the organization\n\t * @param _params the schemes parameters\n\t * @param _permissions the schemes permissions.\n\t * @param _metaData dao meta data hash\n\t */\n\tfunction setSchemes(\n\t\tAvatar _avatar,\n\t\taddress[] calldata _schemes,\n\t\tbytes32[] calldata _params,\n\t\tbytes4[] calldata _permissions,\n\t\tstring calldata _metaData\n\t) external {\n\t\t// this action can only be executed by the account that holds the lock\n\t\t// for this controller\n\t\trequire(lock == msg.sender, \"Message sender is not lock\");\n\t\t// register initial schemes:\n\t\tControllerInterface controller = ControllerInterface(_avatar.owner());\n\t\tfor (uint256 i = 0; i < _schemes.length; i++) {\n\t\t\tcontroller.registerScheme(\n\t\t\t\t_schemes[i],\n\t\t\t\t_params[i],\n\t\t\t\t_permissions[i],\n\t\t\t\taddress(_avatar)\n\t\t\t);\n\t\t}\n\t\tcontroller.metaData(_metaData, _avatar);\n\t\t// Unregister self:\n\t\tcontroller.unregisterScheme(address(this), address(_avatar));\n\t\t// Remove lock:\n\t\tlock = address(0);\n\t\temit InitialSchemesSet(address(_avatar));\n\t}\n\n\t/**\n\t * @dev Create a new organization\n\t * @param _tokenName The name of the token associated with the organization\n\t * @param _tokenSymbol The symbol of the token\n\t * @param _founders An array with the addresses of the founders of the organization\n\t * @param _avatarTokenAmount Amount of tokens that the avatar receive on startup\n\t * @param _foundersReputationAmount An array of amount of reputation that the\n\t *   founders receive in the new organization\n\t * @param  _cap token cap - 0 for no cap.\n\t * @return The address of the avatar of the controller\n\t */\n\tfunction _forgeOrg(\n\t\tstring memory _tokenName,\n\t\tstring memory _tokenSymbol,\n\t\tuint256 _cap,\n\t\tFeeFormula _formula,\n\t\tIdentity _identity,\n\t\taddress[] memory _founders,\n\t\tuint256 _avatarTokenAmount,\n\t\tuint256[] memory _foundersReputationAmount\n\t) private returns (address) {\n\t\t// Create Token, Reputation and Avatar:\n\t\trequire(lock == address(0), \"Lock already exists\");\n\t\trequire(\n\t\t\t_founders.length == _foundersReputationAmount.length,\n\t\t\t\"Founder reputation missing\"\n\t\t);\n\t\trequire(_founders.length > 0, \"Must have at least one founder\");\n\t\tGoodDollar nativeToken = new GoodDollar(\n\t\t\t_tokenName,\n\t\t\t_tokenSymbol,\n\t\t\t_cap,\n\t\t\t_formula,\n\t\t\t_identity,\n\t\t\taddress(0)\n\t\t);\n\t\tReputation nativeReputation = new Reputation();\n\n\t\t// renounce minter\n\t\tnativeToken.addMinter(address(addFoundersGoodDollar));\n\t\tnativeToken.renounceMinter();\n\n\t\tnativeToken.transferOwnership(address(addFoundersGoodDollar));\n\t\tnativeReputation.transferOwnership(address(addFoundersGoodDollar));\n\n\t\tavatar = addFoundersGoodDollar.addFounders(\n\t\t\tnativeToken,\n\t\t\tnativeReputation,\n\t\t\tmsg.sender,\n\t\t\t_founders,\n\t\t\t_avatarTokenAmount,\n\t\t\t_foundersReputationAmount\n\t\t);\n\n\t\tnativeToken.addPauser(address(avatar));\n\n\t\tlock = msg.sender;\n\n\t\temit NewOrg(address(avatar));\n\t\treturn (address(avatar));\n\t}\n}\n",
  "sourcePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/DaoCreator.sol",
  "ast": {
    "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/DaoCreator.sol",
    "exportedSymbols": {
      "AddFoundersGoodDollar": [
        618
      ],
      "ControllerCreatorGoodDollar": [
        418
      ],
      "DaoCreatorGoodDollar": [
        907
      ]
    },
    "id": 908,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 362,
        "literals": [
          "solidity",
          ">",
          "0.5",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:2"
      },
      {
        "absolutePath": "@daostack/arc/contracts/controller/Controller.sol",
        "file": "@daostack/arc/contracts/controller/Controller.sol",
        "id": 363,
        "nodeType": "ImportDirective",
        "scope": 908,
        "sourceUnit": 9998,
        "src": "25:59:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/arc/contracts/universalSchemes/SchemeRegistrar.sol",
        "file": "@daostack/arc/contracts/universalSchemes/SchemeRegistrar.sol",
        "id": 364,
        "nodeType": "ImportDirective",
        "scope": 908,
        "sourceUnit": 11013,
        "src": "85:70:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/arc/contracts/universalSchemes/UpgradeScheme.sol",
        "file": "@daostack/arc/contracts/universalSchemes/UpgradeScheme.sol",
        "id": 365,
        "nodeType": "ImportDirective",
        "scope": 908,
        "sourceUnit": 11528,
        "src": "156:68:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/AbsoluteVote.sol",
        "file": "@daostack/infra/contracts/votingMachines/AbsoluteVote.sol",
        "id": 366,
        "nodeType": "ImportDirective",
        "scope": 908,
        "sourceUnit": 13211,
        "src": "226:67:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/Reputation.sol",
        "file": "@daostack/infra/contracts/Reputation.sol",
        "id": 367,
        "nodeType": "ImportDirective",
        "scope": 908,
        "sourceUnit": 12260,
        "src": "294:50:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/token/GoodDollar.sol",
        "file": "../token/GoodDollar.sol",
        "id": 368,
        "nodeType": "ImportDirective",
        "scope": 908,
        "sourceUnit": 7634,
        "src": "346:33:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/identity/IdentityGuard.sol",
        "file": "../identity/IdentityGuard.sol",
        "id": 369,
        "nodeType": "ImportDirective",
        "scope": 908,
        "sourceUnit": 5735,
        "src": "380:39:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/schemes/FeeFormula.sol",
        "file": "../dao/schemes/FeeFormula.sol",
        "id": 370,
        "nodeType": "ImportDirective",
        "scope": 908,
        "sourceUnit": 2634,
        "src": "420:39:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          9997
        ],
        "contractKind": "contract",
        "documentation": "@title ControllerCreator for creating a single controller. Taken from @daostack.",
        "fullyImplemented": true,
        "id": 418,
        "linearizedBaseContracts": [
          418
        ],
        "name": "ControllerCreatorGoodDollar",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 416,
              "nodeType": "Block",
              "src": "667:253:2",
              "statements": [
                {
                  "assignments": [
                    380
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 380,
                      "name": "controller",
                      "nodeType": "VariableDeclaration",
                      "scope": 416,
                      "src": "671:21:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Controller_$9997",
                        "typeString": "contract Controller"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 379,
                        "name": "Controller",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9997,
                        "src": "671:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 385,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 383,
                        "name": "_avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 372,
                        "src": "710:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      ],
                      "id": 382,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "695:14:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_creation_nonpayable$_t_contract$_Avatar_$8541_$returns$_t_contract$_Controller_$9997_$",
                        "typeString": "function (contract Avatar) returns (contract Controller)"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 381,
                        "name": "Controller",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9997,
                        "src": "699:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      }
                    },
                    "id": 384,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "695:23:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Controller_$9997",
                      "typeString": "contract Controller"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "671:47:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 389,
                        "name": "_sender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 374,
                        "src": "752:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 391,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "772:1:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "764:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": "bytes32"
                        },
                        "id": 392,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "764:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30783030303030303166",
                            "id": 394,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "786:10:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_31_by_1",
                              "typeString": "int_const 31"
                            },
                            "value": "0x0000001f"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_31_by_1",
                              "typeString": "int_const 31"
                            }
                          ],
                          "id": 393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "779:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes4_$",
                            "typeString": "type(bytes4)"
                          },
                          "typeName": "bytes4"
                        },
                        "id": 395,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "779:18:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 397,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 372,
                            "src": "810:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "802:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 398,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "802:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 386,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 380,
                        "src": "722:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      },
                      "id": 388,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "registerScheme",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9096,
                      "src": "722:25:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_bytes4_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address,bytes32,bytes4,address) external returns (bool)"
                      }
                    },
                    "id": 399,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "722:100:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 400,
                  "nodeType": "ExpressionStatement",
                  "src": "722:100:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 405,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18111,
                            "src": "862:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ControllerCreatorGoodDollar_$418",
                              "typeString": "contract ControllerCreatorGoodDollar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ControllerCreatorGoodDollar_$418",
                              "typeString": "contract ControllerCreatorGoodDollar"
                            }
                          ],
                          "id": 404,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "854:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 406,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "854:13:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 408,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 372,
                            "src": "877:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "869:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 409,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "869:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 401,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 380,
                        "src": "826:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      },
                      "id": 403,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "unregisterScheme",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9160,
                      "src": "826:27:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address,address) external returns (bool)"
                      }
                    },
                    "id": 410,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "826:60:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 411,
                  "nodeType": "ExpressionStatement",
                  "src": "826:60:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 413,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 380,
                        "src": "905:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      ],
                      "id": 412,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "897:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 414,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "897:19:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 378,
                  "id": 415,
                  "nodeType": "Return",
                  "src": "890:26:2"
                }
              ]
            },
            "documentation": null,
            "id": 417,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "create",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 375,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 372,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 417,
                  "src": "609:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$8541",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 371,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8541,
                    "src": "609:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 374,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 417,
                  "src": "625:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 373,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "625:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "608:33:2"
            },
            "returnParameters": {
              "id": 378,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 377,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 417,
                  "src": "658:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 376,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "658:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "657:9:2"
            },
            "scope": 418,
            "src": "593:327:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 908,
        "src": "553:369:2"
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          8541,
          9997
        ],
        "contractKind": "contract",
        "documentation": "@title Contract for adding founders to the DAO. Separated from DaoCreator to reduce\ncontract sizes",
        "fullyImplemented": true,
        "id": 618,
        "linearizedBaseContracts": [
          618
        ],
        "name": "AddFoundersGoodDollar",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 464,
              "nodeType": "Block",
              "src": "1152:253:2",
              "statements": [
                {
                  "assignments": [
                    428
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 428,
                      "name": "controller",
                      "nodeType": "VariableDeclaration",
                      "scope": 464,
                      "src": "1156:21:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Controller_$9997",
                        "typeString": "contract Controller"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 427,
                        "name": "Controller",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9997,
                        "src": "1156:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 433,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 431,
                        "name": "_avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 420,
                        "src": "1195:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      ],
                      "id": 430,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "1180:14:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_creation_nonpayable$_t_contract$_Avatar_$8541_$returns$_t_contract$_Controller_$9997_$",
                        "typeString": "function (contract Avatar) returns (contract Controller)"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 429,
                        "name": "Controller",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9997,
                        "src": "1184:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      }
                    },
                    "id": 432,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1180:23:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Controller_$9997",
                      "typeString": "contract Controller"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1156:47:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 437,
                        "name": "_sender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 422,
                        "src": "1237:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 439,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1257:1:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1249:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": "bytes32"
                        },
                        "id": 440,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1249:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30783030303030303166",
                            "id": 442,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1271:10:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_31_by_1",
                              "typeString": "int_const 31"
                            },
                            "value": "0x0000001f"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_31_by_1",
                              "typeString": "int_const 31"
                            }
                          ],
                          "id": 441,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1264:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes4_$",
                            "typeString": "type(bytes4)"
                          },
                          "typeName": "bytes4"
                        },
                        "id": 443,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1264:18:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 445,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 420,
                            "src": "1295:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1287:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 446,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1287:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 434,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 428,
                        "src": "1207:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      },
                      "id": 436,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "registerScheme",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9096,
                      "src": "1207:25:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_bytes4_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address,bytes32,bytes4,address) external returns (bool)"
                      }
                    },
                    "id": 447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1207:100:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 448,
                  "nodeType": "ExpressionStatement",
                  "src": "1207:100:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 453,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18113,
                            "src": "1347:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                              "typeString": "contract AddFoundersGoodDollar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                              "typeString": "contract AddFoundersGoodDollar"
                            }
                          ],
                          "id": 452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1339:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 454,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1339:13:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 456,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 420,
                            "src": "1362:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1354:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 457,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1354:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 449,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 428,
                        "src": "1311:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      },
                      "id": 451,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "unregisterScheme",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9160,
                      "src": "1311:27:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address,address) external returns (bool)"
                      }
                    },
                    "id": 458,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1311:60:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 459,
                  "nodeType": "ExpressionStatement",
                  "src": "1311:60:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 461,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 428,
                        "src": "1390:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      ],
                      "id": 460,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1382:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 462,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1382:19:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 426,
                  "id": 463,
                  "nodeType": "Return",
                  "src": "1375:26:2"
                }
              ]
            },
            "documentation": null,
            "id": 465,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "create",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 423,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 420,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 465,
                  "src": "1087:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$8541",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 419,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8541,
                    "src": "1087:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 422,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 465,
                  "src": "1103:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 421,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1103:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1086:33:2"
            },
            "returnParameters": {
              "id": 426,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 425,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 465,
                  "src": "1142:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 424,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1142:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1141:9:2"
            },
            "scope": 618,
            "src": "1071:334:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 616,
              "nodeType": "Block",
              "src": "1950:1036:2",
              "statements": [
                {
                  "assignments": [
                    485
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 485,
                      "name": "avatar",
                      "nodeType": "VariableDeclaration",
                      "scope": 616,
                      "src": "1954:13:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Avatar_$8541",
                        "typeString": "contract Avatar"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 484,
                        "name": "Avatar",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 8541,
                        "src": "1954:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 492,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "476f6f64446f6c6c6172",
                        "id": 488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1981:12:2",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_33b56660e273ec0b5fe5bdc778b5778c5c4557efc9e1532b7177cc3a3803c64a",
                          "typeString": "literal_string \"GoodDollar\""
                        },
                        "value": "GoodDollar"
                      },
                      {
                        "argumentTypes": null,
                        "id": 489,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 467,
                        "src": "1995:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 490,
                        "name": "nativeReputation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 469,
                        "src": "2008:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Reputation_$12259",
                          "typeString": "contract Reputation"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_33b56660e273ec0b5fe5bdc778b5778c5c4557efc9e1532b7177cc3a3803c64a",
                          "typeString": "literal_string \"GoodDollar\""
                        },
                        {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        },
                        {
                          "typeIdentifier": "t_contract$_Reputation_$12259",
                          "typeString": "contract Reputation"
                        }
                      ],
                      "id": 487,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "1970:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$_t_contract$_DAOToken_$10306_$_t_contract$_Reputation_$12259_$returns$_t_contract$_Avatar_$8541_$",
                        "typeString": "function (string memory,contract DAOToken,contract Reputation) returns (contract Avatar)"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 486,
                        "name": "Avatar",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 8541,
                        "src": "1974:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      }
                    },
                    "id": 491,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1970:55:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1954:71:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 497,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 485,
                            "src": "2080:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 496,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2072:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 498,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2072:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 499,
                        "name": "_avatarTokenAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 476,
                        "src": "2089:18:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 493,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 467,
                        "src": "2055:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 495,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7430,
                      "src": "2055:16:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 500,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2055:53:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 501,
                  "nodeType": "ExpressionStatement",
                  "src": "2055:53:2"
                },
                {
                  "body": {
                    "id": 542,
                    "nodeType": "Block",
                    "src": "2195:227:2",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 520,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 514,
                                  "name": "_founders",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 474,
                                  "src": "2213:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 516,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 515,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 503,
                                  "src": "2223:1:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2213:12:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 518,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2237:1:2",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 517,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2229:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2229:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2213:26:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "466f756e6465722063616e6e6f74206265207a65726f2061646472657373",
                              "id": 521,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2245:32:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ecaa619e403860540d89d9b935448537565dc101758969e3287f8b75435547d3",
                                "typeString": "literal_string \"Founder cannot be zero address\""
                              },
                              "value": "Founder cannot be zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ecaa619e403860540d89d9b935448537565dc101758969e3287f8b75435547d3",
                                "typeString": "literal_string \"Founder cannot be zero address\""
                              }
                            ],
                            "id": 513,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              18010,
                              18011
                            ],
                            "referencedDeclaration": 18011,
                            "src": "2200:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2200:82:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 523,
                        "nodeType": "ExpressionStatement",
                        "src": "2200:82:2"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 524,
                              "name": "_foundersReputationAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 479,
                              "src": "2291:25:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 526,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 525,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 503,
                              "src": "2317:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2291:28:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2322:1:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2291:32:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 541,
                        "nodeType": "IfStatement",
                        "src": "2287:131:2",
                        "trueBody": {
                          "id": 540,
                          "nodeType": "Block",
                          "src": "2325:93:2",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 532,
                                      "name": "_founders",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 474,
                                      "src": "2359:9:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 534,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 533,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 503,
                                      "src": "2369:1:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2359:12:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 535,
                                      "name": "_foundersReputationAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 479,
                                      "src": "2378:25:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 537,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 536,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 503,
                                      "src": "2404:1:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2378:28:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 529,
                                    "name": "nativeReputation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 469,
                                    "src": "2331:16:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Reputation_$12259",
                                      "typeString": "contract Reputation"
                                    }
                                  },
                                  "id": 531,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12021,
                                  "src": "2331:21:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,uint256) external returns (bool)"
                                  }
                                },
                                "id": 538,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2331:81:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 539,
                              "nodeType": "ExpressionStatement",
                              "src": "2331:81:2"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 509,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 506,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 503,
                      "src": "2168:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 507,
                        "name": "_founders",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 474,
                        "src": "2172:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 508,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2172:16:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2168:20:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 543,
                  "initializationExpression": {
                    "assignments": [
                      503
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 503,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 543,
                        "src": "2153:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 502,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2153:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 505,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 504,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2165:1:2",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2153:13:2"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 511,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "2190:3:2",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 510,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 503,
                        "src": "2190:1:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 512,
                    "nodeType": "ExpressionStatement",
                    "src": "2190:3:2"
                  },
                  "nodeType": "ForStatement",
                  "src": "2148:274:2"
                },
                {
                  "assignments": [
                    545
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 545,
                      "name": "controller",
                      "nodeType": "VariableDeclaration",
                      "scope": 616,
                      "src": "2449:30:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                        "typeString": "contract ControllerInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 544,
                        "name": "ControllerInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 10230,
                        "src": "2449:19:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                          "typeString": "contract ControllerInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 553,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 548,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 485,
                            "src": "2513:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 549,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18007,
                              "src": "2521:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 550,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2521:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 547,
                          "name": "create",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 465,
                          "src": "2506:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_Avatar_$8541_$_t_address_$returns$_t_address_$",
                            "typeString": "function (contract Avatar,address) returns (address)"
                          }
                        },
                        "id": 551,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2506:26:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 546,
                      "name": "ControllerInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10230,
                      "src": "2482:19:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ControllerInterface_$10230_$",
                        "typeString": "type(contract ControllerInterface)"
                      }
                    },
                    "id": 552,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2482:54:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                      "typeString": "contract ControllerInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2449:87:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 558,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 485,
                            "src": "2624:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2616:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 559,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2616:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 554,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 467,
                        "src": "2588:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 556,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setFeeRecipient",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7550,
                      "src": "2588:27:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 560,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2588:44:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 561,
                  "nodeType": "ExpressionStatement",
                  "src": "2588:44:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 566,
                            "name": "controller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 545,
                            "src": "2670:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                              "typeString": "contract ControllerInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                              "typeString": "contract ControllerInterface"
                            }
                          ],
                          "id": 565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2662:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 567,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2662:19:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 562,
                        "name": "avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 485,
                        "src": "2637:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      },
                      "id": 564,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17229,
                      "src": "2637:24:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2637:45:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 569,
                  "nodeType": "ExpressionStatement",
                  "src": "2637:45:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 574,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 485,
                            "src": "2724:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 573,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2716:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 575,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2716:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 570,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 467,
                        "src": "2686:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 572,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17229,
                      "src": "2686:29:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 576,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2686:46:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 577,
                  "nodeType": "ExpressionStatement",
                  "src": "2686:46:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 582,
                            "name": "controller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 545,
                            "src": "2779:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                              "typeString": "contract ControllerInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                              "typeString": "contract ControllerInterface"
                            }
                          ],
                          "id": 581,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2771:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 583,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2771:19:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 578,
                        "name": "nativeReputation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 469,
                        "src": "2736:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Reputation_$12259",
                          "typeString": "contract Reputation"
                        }
                      },
                      "id": 580,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17229,
                      "src": "2736:34:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 584,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2736:55:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 585,
                  "nodeType": "ExpressionStatement",
                  "src": "2736:55:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 589,
                        "name": "_sender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 471,
                        "src": "2835:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 586,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 467,
                        "src": "2813:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 588,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16638,
                      "src": "2813:21:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2813:30:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 591,
                  "nodeType": "ExpressionStatement",
                  "src": "2813:30:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 596,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 485,
                            "src": "2877:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 595,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2869:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 597,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2869:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 592,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 467,
                        "src": "2847:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 594,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16638,
                      "src": "2847:21:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 598,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2847:38:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 599,
                  "nodeType": "ExpressionStatement",
                  "src": "2847:38:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 604,
                            "name": "controller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 545,
                            "src": "2919:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                              "typeString": "contract ControllerInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                              "typeString": "contract ControllerInterface"
                            }
                          ],
                          "id": 603,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2911:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 605,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2911:19:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 600,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 467,
                        "src": "2889:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 602,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16638,
                      "src": "2889:21:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 606,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2889:42:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 607,
                  "nodeType": "ExpressionStatement",
                  "src": "2889:42:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 608,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 467,
                        "src": "2935:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 610,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "renounceMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16647,
                      "src": "2935:26:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2935:28:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 612,
                  "nodeType": "ExpressionStatement",
                  "src": "2935:28:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 613,
                        "name": "avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 485,
                        "src": "2975:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      }
                    ],
                    "id": 614,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "2974:8:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "functionReturnParameters": 483,
                  "id": 615,
                  "nodeType": "Return",
                  "src": "2967:15:2"
                }
              ]
            },
            "documentation": "@param _founders An array with the addresses of the founders of the organization\n@param _avatarTokenAmount Amount of tokens that the avatar receive on new organization\n@param _foundersReputationAmount An array of amount of reputation that the\n  founders receive in the new organization",
            "id": 617,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addFounders",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 480,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 467,
                  "name": "nativeToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 617,
                  "src": "1744:22:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_GoodDollar_$7633",
                    "typeString": "contract GoodDollar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 466,
                    "name": "GoodDollar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7633,
                    "src": "1744:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_GoodDollar_$7633",
                      "typeString": "contract GoodDollar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 469,
                  "name": "nativeReputation",
                  "nodeType": "VariableDeclaration",
                  "scope": 617,
                  "src": "1770:27:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Reputation_$12259",
                    "typeString": "contract Reputation"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 468,
                    "name": "Reputation",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12259,
                    "src": "1770:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Reputation_$12259",
                      "typeString": "contract Reputation"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 471,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 617,
                  "src": "1801:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 470,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1801:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 474,
                  "name": "_founders",
                  "nodeType": "VariableDeclaration",
                  "scope": 617,
                  "src": "1820:26:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 472,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1820:7:2",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 473,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1820:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 476,
                  "name": "_avatarTokenAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 617,
                  "src": "1850:26:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 475,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1850:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 479,
                  "name": "_foundersReputationAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 617,
                  "src": "1880:42:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 477,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1880:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 478,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1880:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1740:185:2"
            },
            "returnParameters": {
              "id": 483,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 482,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 617,
                  "src": "1942:6:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$8541",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 481,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8541,
                    "src": "1942:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1941:8:2"
            },
            "scope": 618,
            "src": "1720:1266:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 908,
        "src": "1037:1951:2"
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          7633,
          12259
        ],
        "contractKind": "contract",
        "documentation": "@title Genesis Scheme that creates organizations. Taken and modified from @daostack.",
        "fullyImplemented": true,
        "id": 907,
        "linearizedBaseContracts": [
          907
        ],
        "name": "DaoCreatorGoodDollar",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 620,
            "name": "avatar",
            "nodeType": "VariableDeclaration",
            "scope": 907,
            "src": "3119:20:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Avatar_$8541",
              "typeString": "contract Avatar"
            },
            "typeName": {
              "contractScope": null,
              "id": 619,
              "name": "Avatar",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8541,
              "src": "3119:6:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Avatar_$8541",
                "typeString": "contract Avatar"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 622,
            "name": "lock",
            "nodeType": "VariableDeclaration",
            "scope": 907,
            "src": "3142:19:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 621,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "3142:7:2",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 626,
            "name": "NewOrg",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 625,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 624,
                  "indexed": false,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 626,
                  "src": "3178:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 623,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3178:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3177:17:2"
            },
            "src": "3165:30:2"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 630,
            "name": "InitialSchemesSet",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 629,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 628,
                  "indexed": false,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 630,
                  "src": "3221:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 627,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3221:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3220:17:2"
            },
            "src": "3197:41:2"
          },
          {
            "constant": false,
            "id": 632,
            "name": "addFoundersGoodDollar",
            "nodeType": "VariableDeclaration",
            "scope": 907,
            "src": "3241:51:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
              "typeString": "contract AddFoundersGoodDollar"
            },
            "typeName": {
              "contractScope": null,
              "id": 631,
              "name": "AddFoundersGoodDollar",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 618,
              "src": "3241:21:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                "typeString": "contract AddFoundersGoodDollar"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 641,
              "nodeType": "Block",
              "src": "3361:54:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 639,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 637,
                      "name": "addFoundersGoodDollar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 632,
                      "src": "3365:21:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                        "typeString": "contract AddFoundersGoodDollar"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 638,
                      "name": "_addFoundersGoodDollar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 634,
                      "src": "3389:22:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                        "typeString": "contract AddFoundersGoodDollar"
                      }
                    },
                    "src": "3365:46:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                      "typeString": "contract AddFoundersGoodDollar"
                    }
                  },
                  "id": 640,
                  "nodeType": "ExpressionStatement",
                  "src": "3365:46:2"
                }
              ]
            },
            "documentation": null,
            "id": 642,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 635,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 634,
                  "name": "_addFoundersGoodDollar",
                  "nodeType": "VariableDeclaration",
                  "scope": 642,
                  "src": "3308:44:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                    "typeString": "contract AddFoundersGoodDollar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 633,
                    "name": "AddFoundersGoodDollar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 618,
                    "src": "3308:21:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                      "typeString": "contract AddFoundersGoodDollar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3307:46:2"
            },
            "returnParameters": {
              "id": 636,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3361:0:2"
            },
            "scope": 907,
            "src": "3296:119:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 676,
              "nodeType": "Block",
              "src": "4274:253:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 666,
                        "name": "_tokenName",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 644,
                        "src": "4381:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 667,
                        "name": "_tokenSymbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 646,
                        "src": "4397:12:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 668,
                        "name": "_cap",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 648,
                        "src": "4415:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 669,
                        "name": "_formula",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 650,
                        "src": "4425:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_FeeFormula_$2633",
                          "typeString": "contract FeeFormula"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 670,
                        "name": "_identity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 652,
                        "src": "4439:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Identity_$5447",
                          "typeString": "contract Identity"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 671,
                        "name": "_founders",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 655,
                        "src": "4454:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 672,
                        "name": "_avatarTokenAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 657,
                        "src": "4469:18:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 673,
                        "name": "_foundersReputationAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 660,
                        "src": "4493:25:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_contract$_FeeFormula_$2633",
                          "typeString": "contract FeeFormula"
                        },
                        {
                          "typeIdentifier": "t_contract$_Identity_$5447",
                          "typeString": "contract Identity"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      ],
                      "id": 665,
                      "name": "_forgeOrg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 906,
                      "src": "4366:9:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_contract$_FeeFormula_$2633_$_t_contract$_Identity_$5447_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (string memory,string memory,uint256,contract FeeFormula,contract Identity,address[] memory,uint256,uint256[] memory) returns (address)"
                      }
                    },
                    "id": 674,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4366:157:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 664,
                  "id": 675,
                  "nodeType": "Return",
                  "src": "4356:167:2"
                }
              ]
            },
            "documentation": "@dev Create a new organization\n@param _tokenName The name of the token associated with the organization\n@param _tokenSymbol The symbol of the token\n@param _founders An array with the addresses of the founders of the organization\n@param _avatarTokenAmount Amount of tokens that the avatar receive in the new organization\n@param _foundersReputationAmount An array of amount of reputation that the\n  founders receive in the new organization\n@param  _cap token cap - 0 for no cap.\n@return The address of the avatar of the controller",
            "id": 677,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "forgeOrg",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 661,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 644,
                  "name": "_tokenName",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "4014:26:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 643,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4014:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 646,
                  "name": "_tokenSymbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "4044:28:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 645,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4044:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 648,
                  "name": "_cap",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "4076:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 647,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4076:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 650,
                  "name": "_formula",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "4092:19:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_FeeFormula_$2633",
                    "typeString": "contract FeeFormula"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 649,
                    "name": "FeeFormula",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2633,
                    "src": "4092:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FeeFormula_$2633",
                      "typeString": "contract FeeFormula"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 652,
                  "name": "_identity",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "4115:18:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Identity_$5447",
                    "typeString": "contract Identity"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 651,
                    "name": "Identity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5447,
                    "src": "4115:8:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Identity_$5447",
                      "typeString": "contract Identity"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 655,
                  "name": "_founders",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "4137:28:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 653,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4137:7:2",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 654,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4137:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 657,
                  "name": "_avatarTokenAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "4169:26:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 656,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4169:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 660,
                  "name": "_foundersReputationAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "4199:44:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 658,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4199:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 659,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4199:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4010:236:2"
            },
            "returnParameters": {
              "id": 664,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 663,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "4265:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 662,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4265:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4264:9:2"
            },
            "scope": 907,
            "src": "3993:534:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 769,
              "nodeType": "Block",
              "src": "5024:644:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 697,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 694,
                          "name": "lock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 622,
                          "src": "5134:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 695,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18007,
                            "src": "5142:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5142:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "5134:18:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6573736167652073656e646572206973206e6f74206c6f636b",
                        "id": 698,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5154:28:2",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_df9548e5891236548bf59505f4f41dc48698a4e267e6def8ad5c03176f71f65c",
                          "typeString": "literal_string \"Message sender is not lock\""
                        },
                        "value": "Message sender is not lock"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_df9548e5891236548bf59505f4f41dc48698a4e267e6def8ad5c03176f71f65c",
                          "typeString": "literal_string \"Message sender is not lock\""
                        }
                      ],
                      "id": 693,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18010,
                        18011
                      ],
                      "referencedDeclaration": 18011,
                      "src": "5126:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 699,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5126:57:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 700,
                  "nodeType": "ExpressionStatement",
                  "src": "5126:57:2"
                },
                {
                  "assignments": [
                    702
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 702,
                      "name": "controller",
                      "nodeType": "VariableDeclaration",
                      "scope": 769,
                      "src": "5218:30:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                        "typeString": "contract ControllerInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 701,
                        "name": "ControllerInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 10230,
                        "src": "5218:19:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                          "typeString": "contract ControllerInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 708,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 704,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 679,
                            "src": "5271:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          },
                          "id": 705,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17178,
                          "src": "5271:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 706,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5271:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 703,
                      "name": "ControllerInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10230,
                      "src": "5251:19:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ControllerInterface_$10230_$",
                        "typeString": "type(contract ControllerInterface)"
                      }
                    },
                    "id": 707,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5251:36:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                      "typeString": "contract ControllerInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5218:69:2"
                },
                {
                  "body": {
                    "id": 737,
                    "nodeType": "Block",
                    "src": "5337:116:2",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 723,
                                "name": "_schemes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 682,
                                "src": "5373:8:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 725,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 724,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 710,
                                "src": "5382:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5373:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 726,
                                "name": "_params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 685,
                                "src": "5390:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                                  "typeString": "bytes32[] calldata"
                                }
                              },
                              "id": 728,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 727,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 710,
                                "src": "5398:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5390:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 729,
                                "name": "_permissions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 688,
                                "src": "5406:12:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes4_$dyn_calldata_ptr",
                                  "typeString": "bytes4[] calldata"
                                }
                              },
                              "id": 731,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 730,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 710,
                                "src": "5419:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5406:15:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 733,
                                  "name": "_avatar",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 679,
                                  "src": "5435:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Avatar_$8541",
                                    "typeString": "contract Avatar"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Avatar_$8541",
                                    "typeString": "contract Avatar"
                                  }
                                ],
                                "id": 732,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5427:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 734,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5427:16:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 720,
                              "name": "controller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 702,
                              "src": "5342:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                                "typeString": "contract ControllerInterface"
                              }
                            },
                            "id": 722,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "registerScheme",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10047,
                            "src": "5342:25:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_bytes4_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,bytes32,bytes4,address) external returns (bool)"
                            }
                          },
                          "id": 735,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5342:106:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 736,
                        "nodeType": "ExpressionStatement",
                        "src": "5342:106:2"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 716,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 713,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 710,
                      "src": "5311:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 714,
                        "name": "_schemes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 682,
                        "src": "5315:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      "id": 715,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5315:15:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5311:19:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 738,
                  "initializationExpression": {
                    "assignments": [
                      710
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 710,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 738,
                        "src": "5296:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 709,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5296:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 712,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 711,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5308:1:2",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5296:13:2"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 718,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "5332:3:2",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 717,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 710,
                        "src": "5332:1:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 719,
                    "nodeType": "ExpressionStatement",
                    "src": "5332:3:2"
                  },
                  "nodeType": "ForStatement",
                  "src": "5291:162:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 742,
                        "name": "_metaData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 690,
                        "src": "5476:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 743,
                        "name": "_avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 679,
                        "src": "5487:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 739,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 702,
                        "src": "5456:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                          "typeString": "contract ControllerInterface"
                        }
                      },
                      "id": 741,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "metaData",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10168,
                      "src": "5456:19:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_contract$_Avatar_$8541_$returns$_t_bool_$",
                        "typeString": "function (string memory,contract Avatar) external returns (bool)"
                      }
                    },
                    "id": 744,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5456:39:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 745,
                  "nodeType": "ExpressionStatement",
                  "src": "5456:39:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 750,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18115,
                            "src": "5557:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DaoCreatorGoodDollar_$907",
                              "typeString": "contract DaoCreatorGoodDollar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DaoCreatorGoodDollar_$907",
                              "typeString": "contract DaoCreatorGoodDollar"
                            }
                          ],
                          "id": 749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5549:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 751,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5549:13:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 753,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 679,
                            "src": "5572:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 752,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5564:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 754,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5564:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 746,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 702,
                        "src": "5521:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                          "typeString": "contract ControllerInterface"
                        }
                      },
                      "id": 748,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "unregisterScheme",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10056,
                      "src": "5521:27:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address,address) external returns (bool)"
                      }
                    },
                    "id": 755,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5521:60:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 756,
                  "nodeType": "ExpressionStatement",
                  "src": "5521:60:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 761,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 757,
                      "name": "lock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 622,
                      "src": "5603:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 759,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5618:1:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 758,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5610:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 760,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5610:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "5603:17:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 762,
                  "nodeType": "ExpressionStatement",
                  "src": "5603:17:2"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 765,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 679,
                            "src": "5655:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 764,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5647:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 766,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5647:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 763,
                      "name": "InitialSchemesSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 630,
                      "src": "5629:17:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 767,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5629:35:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 768,
                  "nodeType": "EmitStatement",
                  "src": "5624:40:2"
                }
              ]
            },
            "documentation": "@dev Set initial schemes for the organization.\n@param _avatar organization avatar (returns from forgeOrg)\n@param _schemes the schemes to register for the organization\n@param _params the schemes parameters\n@param _permissions the schemes permissions.\n@param _metaData dao meta data hash",
            "id": 770,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setSchemes",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 691,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 679,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 770,
                  "src": "4873:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$8541",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 678,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8541,
                    "src": "4873:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 682,
                  "name": "_schemes",
                  "nodeType": "VariableDeclaration",
                  "scope": 770,
                  "src": "4891:27:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 680,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4891:7:2",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 681,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4891:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 685,
                  "name": "_params",
                  "nodeType": "VariableDeclaration",
                  "scope": 770,
                  "src": "4922:26:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 683,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "4922:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 684,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4922:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 688,
                  "name": "_permissions",
                  "nodeType": "VariableDeclaration",
                  "scope": 770,
                  "src": "4952:30:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes4_$dyn_calldata_ptr",
                    "typeString": "bytes4[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 686,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "4952:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "id": 687,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4952:8:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                      "typeString": "bytes4[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 690,
                  "name": "_metaData",
                  "nodeType": "VariableDeclaration",
                  "scope": 770,
                  "src": "4986:25:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 689,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4986:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4869:145:2"
            },
            "returnParameters": {
              "id": 692,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5024:0:2"
            },
            "scope": 907,
            "src": "4850:818:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 905,
              "nodeType": "Block",
              "src": "6506:995:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 798,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 794,
                          "name": "lock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 622,
                          "src": "6560:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 796,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6576:1:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 795,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6568:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6568:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "6560:18:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4c6f636b20616c726561647920657869737473",
                        "id": 799,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6580:21:2",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6adee1c715684195ea4b8e979094a753cb53be673930db0efd9bc1ededb8e347",
                          "typeString": "literal_string \"Lock already exists\""
                        },
                        "value": "Lock already exists"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6adee1c715684195ea4b8e979094a753cb53be673930db0efd9bc1ededb8e347",
                          "typeString": "literal_string \"Lock already exists\""
                        }
                      ],
                      "id": 793,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18010,
                        18011
                      ],
                      "referencedDeclaration": 18011,
                      "src": "6552:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 800,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6552:50:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 801,
                  "nodeType": "ExpressionStatement",
                  "src": "6552:50:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 807,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 803,
                            "name": "_founders",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 783,
                            "src": "6618:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6618:16:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 805,
                            "name": "_foundersReputationAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 788,
                            "src": "6638:25:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 806,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6638:32:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6618:52:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "466f756e6465722072657075746174696f6e206d697373696e67",
                        "id": 808,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6675:28:2",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_06e38549615e9e8e837dacf67c21c7b341e0e9bad11c3e95d7ddf60a09cc0384",
                          "typeString": "literal_string \"Founder reputation missing\""
                        },
                        "value": "Founder reputation missing"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_06e38549615e9e8e837dacf67c21c7b341e0e9bad11c3e95d7ddf60a09cc0384",
                          "typeString": "literal_string \"Founder reputation missing\""
                        }
                      ],
                      "id": 802,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18010,
                        18011
                      ],
                      "referencedDeclaration": 18011,
                      "src": "6606:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 809,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6606:101:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 810,
                  "nodeType": "ExpressionStatement",
                  "src": "6606:101:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 815,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 812,
                            "name": "_founders",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 783,
                            "src": "6719:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 813,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6719:16:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 814,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6738:1:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "6719:20:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d7573742068617665206174206c65617374206f6e6520666f756e646572",
                        "id": 816,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6741:32:2",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_59a464732e9456910eb4953c756b7c7d628498db9b933b3c32e07be2f83b1b6e",
                          "typeString": "literal_string \"Must have at least one founder\""
                        },
                        "value": "Must have at least one founder"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_59a464732e9456910eb4953c756b7c7d628498db9b933b3c32e07be2f83b1b6e",
                          "typeString": "literal_string \"Must have at least one founder\""
                        }
                      ],
                      "id": 811,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18010,
                        18011
                      ],
                      "referencedDeclaration": 18011,
                      "src": "6711:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 817,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6711:63:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 818,
                  "nodeType": "ExpressionStatement",
                  "src": "6711:63:2"
                },
                {
                  "assignments": [
                    820
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 820,
                      "name": "nativeToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 905,
                      "src": "6778:22:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_GoodDollar_$7633",
                        "typeString": "contract GoodDollar"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 819,
                        "name": "GoodDollar",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7633,
                        "src": "6778:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 832,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 823,
                        "name": "_tokenName",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 772,
                        "src": "6822:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 824,
                        "name": "_tokenSymbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 774,
                        "src": "6837:12:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 825,
                        "name": "_cap",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 776,
                        "src": "6854:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 826,
                        "name": "_formula",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 778,
                        "src": "6863:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_FeeFormula_$2633",
                          "typeString": "contract FeeFormula"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 827,
                        "name": "_identity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 780,
                        "src": "6876:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Identity_$5447",
                          "typeString": "contract Identity"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 829,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6898:1:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6890:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 830,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6890:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_contract$_FeeFormula_$2633",
                          "typeString": "contract FeeFormula"
                        },
                        {
                          "typeIdentifier": "t_contract$_Identity_$5447",
                          "typeString": "contract Identity"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 822,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "6803:14:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_contract$_AbstractFees_$2581_$_t_contract$_Identity_$5447_$_t_address_$returns$_t_contract$_GoodDollar_$7633_$",
                        "typeString": "function (string memory,string memory,uint256,contract AbstractFees,contract Identity,address) returns (contract GoodDollar)"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 821,
                        "name": "GoodDollar",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7633,
                        "src": "6807:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      }
                    },
                    "id": 831,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6803:101:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_GoodDollar_$7633",
                      "typeString": "contract GoodDollar"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6778:126:2"
                },
                {
                  "assignments": [
                    834
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 834,
                      "name": "nativeReputation",
                      "nodeType": "VariableDeclaration",
                      "scope": 905,
                      "src": "6908:27:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Reputation_$12259",
                        "typeString": "contract Reputation"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 833,
                        "name": "Reputation",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12259,
                        "src": "6908:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Reputation_$12259",
                          "typeString": "contract Reputation"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 838,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 836,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "6938:14:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Reputation_$12259_$",
                        "typeString": "function () returns (contract Reputation)"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 835,
                        "name": "Reputation",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12259,
                        "src": "6942:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Reputation_$12259",
                          "typeString": "contract Reputation"
                        }
                      }
                    },
                    "id": 837,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6938:16:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Reputation_$12259",
                      "typeString": "contract Reputation"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6908:46:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 843,
                            "name": "addFoundersGoodDollar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 632,
                            "src": "7010:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                              "typeString": "contract AddFoundersGoodDollar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                              "typeString": "contract AddFoundersGoodDollar"
                            }
                          ],
                          "id": 842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7002:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 844,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7002:30:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 839,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 820,
                        "src": "6980:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 841,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16638,
                      "src": "6980:21:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 845,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6980:53:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 846,
                  "nodeType": "ExpressionStatement",
                  "src": "6980:53:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 847,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 820,
                        "src": "7037:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 849,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "renounceMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16647,
                      "src": "7037:26:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 850,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7037:28:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 851,
                  "nodeType": "ExpressionStatement",
                  "src": "7037:28:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 856,
                            "name": "addFoundersGoodDollar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 632,
                            "src": "7108:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                              "typeString": "contract AddFoundersGoodDollar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                              "typeString": "contract AddFoundersGoodDollar"
                            }
                          ],
                          "id": 855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7100:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 857,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7100:30:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 852,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 820,
                        "src": "7070:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 854,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17229,
                      "src": "7070:29:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 858,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7070:61:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 859,
                  "nodeType": "ExpressionStatement",
                  "src": "7070:61:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 864,
                            "name": "addFoundersGoodDollar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 632,
                            "src": "7178:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                              "typeString": "contract AddFoundersGoodDollar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                              "typeString": "contract AddFoundersGoodDollar"
                            }
                          ],
                          "id": 863,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7170:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 865,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7170:30:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 860,
                        "name": "nativeReputation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 834,
                        "src": "7135:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Reputation_$12259",
                          "typeString": "contract Reputation"
                        }
                      },
                      "id": 862,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17229,
                      "src": "7135:34:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 866,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7135:66:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 867,
                  "nodeType": "ExpressionStatement",
                  "src": "7135:66:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 879,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 868,
                      "name": "avatar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 620,
                      "src": "7206:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Avatar_$8541",
                        "typeString": "contract Avatar"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 871,
                          "name": "nativeToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 820,
                          "src": "7253:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_GoodDollar_$7633",
                            "typeString": "contract GoodDollar"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 872,
                          "name": "nativeReputation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 834,
                          "src": "7269:16:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Reputation_$12259",
                            "typeString": "contract Reputation"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 873,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18007,
                            "src": "7290:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 874,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7290:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 875,
                          "name": "_founders",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 783,
                          "src": "7305:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 876,
                          "name": "_avatarTokenAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 785,
                          "src": "7319:18:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 877,
                          "name": "_foundersReputationAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 788,
                          "src": "7342:25:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_GoodDollar_$7633",
                            "typeString": "contract GoodDollar"
                          },
                          {
                            "typeIdentifier": "t_contract$_Reputation_$12259",
                            "typeString": "contract Reputation"
                          },
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 869,
                          "name": "addFoundersGoodDollar",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 632,
                          "src": "7215:21:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                            "typeString": "contract AddFoundersGoodDollar"
                          }
                        },
                        "id": 870,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "addFounders",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 617,
                        "src": "7215:33:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_contract$_GoodDollar_$7633_$_t_contract$_Reputation_$12259_$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_contract$_Avatar_$8541_$",
                          "typeString": "function (contract GoodDollar,contract Reputation,address,address[] memory,uint256,uint256[] memory) external returns (contract Avatar)"
                        }
                      },
                      "id": 878,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7215:156:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Avatar_$8541",
                        "typeString": "contract Avatar"
                      }
                    },
                    "src": "7206:165:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "id": 880,
                  "nodeType": "ExpressionStatement",
                  "src": "7206:165:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 885,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 620,
                            "src": "7406:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 884,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7398:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 886,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7398:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 881,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 820,
                        "src": "7376:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 883,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addPauser",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16741,
                      "src": "7376:21:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 887,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7376:38:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 888,
                  "nodeType": "ExpressionStatement",
                  "src": "7376:38:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 892,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 889,
                      "name": "lock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 622,
                      "src": "7419:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 890,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18007,
                        "src": "7426:3:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 891,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7426:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "7419:17:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 893,
                  "nodeType": "ExpressionStatement",
                  "src": "7419:17:2"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 896,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 620,
                            "src": "7461:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 895,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7453:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 897,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7453:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 894,
                      "name": "NewOrg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 626,
                      "src": "7446:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 898,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7446:23:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 899,
                  "nodeType": "EmitStatement",
                  "src": "7441:28:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 901,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 620,
                            "src": "7489:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 900,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7481:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 902,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7481:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "id": 903,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "7480:17:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 792,
                  "id": 904,
                  "nodeType": "Return",
                  "src": "7473:24:2"
                }
              ]
            },
            "documentation": "@dev Create a new organization\n@param _tokenName The name of the token associated with the organization\n@param _tokenSymbol The symbol of the token\n@param _founders An array with the addresses of the founders of the organization\n@param _avatarTokenAmount Amount of tokens that the avatar receive on startup\n@param _foundersReputationAmount An array of amount of reputation that the\n  founders receive in the new organization\n@param  _cap token cap - 0 for no cap.\n@return The address of the avatar of the controller",
            "id": 906,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_forgeOrg",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 789,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 772,
                  "name": "_tokenName",
                  "nodeType": "VariableDeclaration",
                  "scope": 906,
                  "src": "6255:24:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 771,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6255:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 774,
                  "name": "_tokenSymbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 906,
                  "src": "6283:26:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 773,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6283:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 776,
                  "name": "_cap",
                  "nodeType": "VariableDeclaration",
                  "scope": 906,
                  "src": "6313:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 775,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6313:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 778,
                  "name": "_formula",
                  "nodeType": "VariableDeclaration",
                  "scope": 906,
                  "src": "6329:19:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_FeeFormula_$2633",
                    "typeString": "contract FeeFormula"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 777,
                    "name": "FeeFormula",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2633,
                    "src": "6329:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FeeFormula_$2633",
                      "typeString": "contract FeeFormula"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 780,
                  "name": "_identity",
                  "nodeType": "VariableDeclaration",
                  "scope": 906,
                  "src": "6352:18:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Identity_$5447",
                    "typeString": "contract Identity"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 779,
                    "name": "Identity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5447,
                    "src": "6352:8:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Identity_$5447",
                      "typeString": "contract Identity"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 783,
                  "name": "_founders",
                  "nodeType": "VariableDeclaration",
                  "scope": 906,
                  "src": "6374:26:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 781,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "6374:7:2",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 782,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6374:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 785,
                  "name": "_avatarTokenAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 906,
                  "src": "6404:26:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 784,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6404:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 788,
                  "name": "_foundersReputationAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 906,
                  "src": "6434:42:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 786,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "6434:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 787,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6434:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6251:228:2"
            },
            "returnParameters": {
              "id": 792,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 791,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 906,
                  "src": "6497:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 790,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6497:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6496:9:2"
            },
            "scope": 907,
            "src": "6233:1268:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          }
        ],
        "scope": 908,
        "src": "3086:4417:2"
      }
    ],
    "src": "0:7504:2"
  },
  "legacyAST": {
    "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/DaoCreator.sol",
    "exportedSymbols": {
      "AddFoundersGoodDollar": [
        618
      ],
      "ControllerCreatorGoodDollar": [
        418
      ],
      "DaoCreatorGoodDollar": [
        907
      ]
    },
    "id": 908,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 362,
        "literals": [
          "solidity",
          ">",
          "0.5",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:2"
      },
      {
        "absolutePath": "@daostack/arc/contracts/controller/Controller.sol",
        "file": "@daostack/arc/contracts/controller/Controller.sol",
        "id": 363,
        "nodeType": "ImportDirective",
        "scope": 908,
        "sourceUnit": 9998,
        "src": "25:59:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/arc/contracts/universalSchemes/SchemeRegistrar.sol",
        "file": "@daostack/arc/contracts/universalSchemes/SchemeRegistrar.sol",
        "id": 364,
        "nodeType": "ImportDirective",
        "scope": 908,
        "sourceUnit": 11013,
        "src": "85:70:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/arc/contracts/universalSchemes/UpgradeScheme.sol",
        "file": "@daostack/arc/contracts/universalSchemes/UpgradeScheme.sol",
        "id": 365,
        "nodeType": "ImportDirective",
        "scope": 908,
        "sourceUnit": 11528,
        "src": "156:68:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/AbsoluteVote.sol",
        "file": "@daostack/infra/contracts/votingMachines/AbsoluteVote.sol",
        "id": 366,
        "nodeType": "ImportDirective",
        "scope": 908,
        "sourceUnit": 13211,
        "src": "226:67:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/Reputation.sol",
        "file": "@daostack/infra/contracts/Reputation.sol",
        "id": 367,
        "nodeType": "ImportDirective",
        "scope": 908,
        "sourceUnit": 12260,
        "src": "294:50:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/token/GoodDollar.sol",
        "file": "../token/GoodDollar.sol",
        "id": 368,
        "nodeType": "ImportDirective",
        "scope": 908,
        "sourceUnit": 7634,
        "src": "346:33:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/identity/IdentityGuard.sol",
        "file": "../identity/IdentityGuard.sol",
        "id": 369,
        "nodeType": "ImportDirective",
        "scope": 908,
        "sourceUnit": 5735,
        "src": "380:39:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/schemes/FeeFormula.sol",
        "file": "../dao/schemes/FeeFormula.sol",
        "id": 370,
        "nodeType": "ImportDirective",
        "scope": 908,
        "sourceUnit": 2634,
        "src": "420:39:2",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          9997
        ],
        "contractKind": "contract",
        "documentation": "@title ControllerCreator for creating a single controller. Taken from @daostack.",
        "fullyImplemented": true,
        "id": 418,
        "linearizedBaseContracts": [
          418
        ],
        "name": "ControllerCreatorGoodDollar",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 416,
              "nodeType": "Block",
              "src": "667:253:2",
              "statements": [
                {
                  "assignments": [
                    380
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 380,
                      "name": "controller",
                      "nodeType": "VariableDeclaration",
                      "scope": 416,
                      "src": "671:21:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Controller_$9997",
                        "typeString": "contract Controller"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 379,
                        "name": "Controller",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9997,
                        "src": "671:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 385,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 383,
                        "name": "_avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 372,
                        "src": "710:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      ],
                      "id": 382,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "695:14:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_creation_nonpayable$_t_contract$_Avatar_$8541_$returns$_t_contract$_Controller_$9997_$",
                        "typeString": "function (contract Avatar) returns (contract Controller)"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 381,
                        "name": "Controller",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9997,
                        "src": "699:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      }
                    },
                    "id": 384,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "695:23:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Controller_$9997",
                      "typeString": "contract Controller"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "671:47:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 389,
                        "name": "_sender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 374,
                        "src": "752:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 391,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "772:1:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "764:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": "bytes32"
                        },
                        "id": 392,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "764:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30783030303030303166",
                            "id": 394,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "786:10:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_31_by_1",
                              "typeString": "int_const 31"
                            },
                            "value": "0x0000001f"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_31_by_1",
                              "typeString": "int_const 31"
                            }
                          ],
                          "id": 393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "779:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes4_$",
                            "typeString": "type(bytes4)"
                          },
                          "typeName": "bytes4"
                        },
                        "id": 395,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "779:18:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 397,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 372,
                            "src": "810:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "802:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 398,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "802:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 386,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 380,
                        "src": "722:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      },
                      "id": 388,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "registerScheme",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9096,
                      "src": "722:25:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_bytes4_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address,bytes32,bytes4,address) external returns (bool)"
                      }
                    },
                    "id": 399,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "722:100:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 400,
                  "nodeType": "ExpressionStatement",
                  "src": "722:100:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 405,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18111,
                            "src": "862:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ControllerCreatorGoodDollar_$418",
                              "typeString": "contract ControllerCreatorGoodDollar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ControllerCreatorGoodDollar_$418",
                              "typeString": "contract ControllerCreatorGoodDollar"
                            }
                          ],
                          "id": 404,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "854:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 406,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "854:13:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 408,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 372,
                            "src": "877:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "869:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 409,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "869:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 401,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 380,
                        "src": "826:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      },
                      "id": 403,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "unregisterScheme",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9160,
                      "src": "826:27:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address,address) external returns (bool)"
                      }
                    },
                    "id": 410,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "826:60:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 411,
                  "nodeType": "ExpressionStatement",
                  "src": "826:60:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 413,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 380,
                        "src": "905:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      ],
                      "id": 412,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "897:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 414,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "897:19:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 378,
                  "id": 415,
                  "nodeType": "Return",
                  "src": "890:26:2"
                }
              ]
            },
            "documentation": null,
            "id": 417,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "create",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 375,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 372,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 417,
                  "src": "609:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$8541",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 371,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8541,
                    "src": "609:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 374,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 417,
                  "src": "625:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 373,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "625:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "608:33:2"
            },
            "returnParameters": {
              "id": 378,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 377,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 417,
                  "src": "658:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 376,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "658:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "657:9:2"
            },
            "scope": 418,
            "src": "593:327:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 908,
        "src": "553:369:2"
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          8541,
          9997
        ],
        "contractKind": "contract",
        "documentation": "@title Contract for adding founders to the DAO. Separated from DaoCreator to reduce\ncontract sizes",
        "fullyImplemented": true,
        "id": 618,
        "linearizedBaseContracts": [
          618
        ],
        "name": "AddFoundersGoodDollar",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 464,
              "nodeType": "Block",
              "src": "1152:253:2",
              "statements": [
                {
                  "assignments": [
                    428
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 428,
                      "name": "controller",
                      "nodeType": "VariableDeclaration",
                      "scope": 464,
                      "src": "1156:21:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Controller_$9997",
                        "typeString": "contract Controller"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 427,
                        "name": "Controller",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9997,
                        "src": "1156:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 433,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 431,
                        "name": "_avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 420,
                        "src": "1195:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      ],
                      "id": 430,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "1180:14:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_creation_nonpayable$_t_contract$_Avatar_$8541_$returns$_t_contract$_Controller_$9997_$",
                        "typeString": "function (contract Avatar) returns (contract Controller)"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 429,
                        "name": "Controller",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9997,
                        "src": "1184:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      }
                    },
                    "id": 432,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1180:23:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Controller_$9997",
                      "typeString": "contract Controller"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1156:47:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 437,
                        "name": "_sender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 422,
                        "src": "1237:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 439,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1257:1:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1249:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": "bytes32"
                        },
                        "id": 440,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1249:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30783030303030303166",
                            "id": 442,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1271:10:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_31_by_1",
                              "typeString": "int_const 31"
                            },
                            "value": "0x0000001f"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_31_by_1",
                              "typeString": "int_const 31"
                            }
                          ],
                          "id": 441,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1264:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes4_$",
                            "typeString": "type(bytes4)"
                          },
                          "typeName": "bytes4"
                        },
                        "id": 443,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1264:18:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 445,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 420,
                            "src": "1295:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1287:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 446,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1287:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 434,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 428,
                        "src": "1207:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      },
                      "id": 436,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "registerScheme",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9096,
                      "src": "1207:25:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_bytes4_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address,bytes32,bytes4,address) external returns (bool)"
                      }
                    },
                    "id": 447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1207:100:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 448,
                  "nodeType": "ExpressionStatement",
                  "src": "1207:100:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 453,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18113,
                            "src": "1347:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                              "typeString": "contract AddFoundersGoodDollar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                              "typeString": "contract AddFoundersGoodDollar"
                            }
                          ],
                          "id": 452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1339:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 454,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1339:13:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 456,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 420,
                            "src": "1362:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1354:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 457,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1354:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 449,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 428,
                        "src": "1311:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      },
                      "id": 451,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "unregisterScheme",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9160,
                      "src": "1311:27:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address,address) external returns (bool)"
                      }
                    },
                    "id": 458,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1311:60:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 459,
                  "nodeType": "ExpressionStatement",
                  "src": "1311:60:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 461,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 428,
                        "src": "1390:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      ],
                      "id": 460,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1382:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 462,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1382:19:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 426,
                  "id": 463,
                  "nodeType": "Return",
                  "src": "1375:26:2"
                }
              ]
            },
            "documentation": null,
            "id": 465,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "create",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 423,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 420,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 465,
                  "src": "1087:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$8541",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 419,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8541,
                    "src": "1087:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 422,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 465,
                  "src": "1103:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 421,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1103:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1086:33:2"
            },
            "returnParameters": {
              "id": 426,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 425,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 465,
                  "src": "1142:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 424,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1142:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1141:9:2"
            },
            "scope": 618,
            "src": "1071:334:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 616,
              "nodeType": "Block",
              "src": "1950:1036:2",
              "statements": [
                {
                  "assignments": [
                    485
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 485,
                      "name": "avatar",
                      "nodeType": "VariableDeclaration",
                      "scope": 616,
                      "src": "1954:13:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Avatar_$8541",
                        "typeString": "contract Avatar"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 484,
                        "name": "Avatar",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 8541,
                        "src": "1954:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 492,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "476f6f64446f6c6c6172",
                        "id": 488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1981:12:2",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_33b56660e273ec0b5fe5bdc778b5778c5c4557efc9e1532b7177cc3a3803c64a",
                          "typeString": "literal_string \"GoodDollar\""
                        },
                        "value": "GoodDollar"
                      },
                      {
                        "argumentTypes": null,
                        "id": 489,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 467,
                        "src": "1995:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 490,
                        "name": "nativeReputation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 469,
                        "src": "2008:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Reputation_$12259",
                          "typeString": "contract Reputation"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_33b56660e273ec0b5fe5bdc778b5778c5c4557efc9e1532b7177cc3a3803c64a",
                          "typeString": "literal_string \"GoodDollar\""
                        },
                        {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        },
                        {
                          "typeIdentifier": "t_contract$_Reputation_$12259",
                          "typeString": "contract Reputation"
                        }
                      ],
                      "id": 487,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "1970:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$_t_contract$_DAOToken_$10306_$_t_contract$_Reputation_$12259_$returns$_t_contract$_Avatar_$8541_$",
                        "typeString": "function (string memory,contract DAOToken,contract Reputation) returns (contract Avatar)"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 486,
                        "name": "Avatar",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 8541,
                        "src": "1974:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      }
                    },
                    "id": 491,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1970:55:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1954:71:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 497,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 485,
                            "src": "2080:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 496,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2072:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 498,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2072:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 499,
                        "name": "_avatarTokenAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 476,
                        "src": "2089:18:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 493,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 467,
                        "src": "2055:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 495,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7430,
                      "src": "2055:16:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 500,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2055:53:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 501,
                  "nodeType": "ExpressionStatement",
                  "src": "2055:53:2"
                },
                {
                  "body": {
                    "id": 542,
                    "nodeType": "Block",
                    "src": "2195:227:2",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 520,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 514,
                                  "name": "_founders",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 474,
                                  "src": "2213:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 516,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 515,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 503,
                                  "src": "2223:1:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2213:12:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 518,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2237:1:2",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 517,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2229:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2229:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2213:26:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "466f756e6465722063616e6e6f74206265207a65726f2061646472657373",
                              "id": 521,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2245:32:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ecaa619e403860540d89d9b935448537565dc101758969e3287f8b75435547d3",
                                "typeString": "literal_string \"Founder cannot be zero address\""
                              },
                              "value": "Founder cannot be zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ecaa619e403860540d89d9b935448537565dc101758969e3287f8b75435547d3",
                                "typeString": "literal_string \"Founder cannot be zero address\""
                              }
                            ],
                            "id": 513,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              18010,
                              18011
                            ],
                            "referencedDeclaration": 18011,
                            "src": "2200:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2200:82:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 523,
                        "nodeType": "ExpressionStatement",
                        "src": "2200:82:2"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 524,
                              "name": "_foundersReputationAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 479,
                              "src": "2291:25:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 526,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 525,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 503,
                              "src": "2317:1:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2291:28:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2322:1:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2291:32:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 541,
                        "nodeType": "IfStatement",
                        "src": "2287:131:2",
                        "trueBody": {
                          "id": 540,
                          "nodeType": "Block",
                          "src": "2325:93:2",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 532,
                                      "name": "_founders",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 474,
                                      "src": "2359:9:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 534,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 533,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 503,
                                      "src": "2369:1:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2359:12:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 535,
                                      "name": "_foundersReputationAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 479,
                                      "src": "2378:25:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 537,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 536,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 503,
                                      "src": "2404:1:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2378:28:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 529,
                                    "name": "nativeReputation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 469,
                                    "src": "2331:16:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Reputation_$12259",
                                      "typeString": "contract Reputation"
                                    }
                                  },
                                  "id": 531,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12021,
                                  "src": "2331:21:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,uint256) external returns (bool)"
                                  }
                                },
                                "id": 538,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2331:81:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 539,
                              "nodeType": "ExpressionStatement",
                              "src": "2331:81:2"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 509,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 506,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 503,
                      "src": "2168:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 507,
                        "name": "_founders",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 474,
                        "src": "2172:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 508,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2172:16:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2168:20:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 543,
                  "initializationExpression": {
                    "assignments": [
                      503
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 503,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 543,
                        "src": "2153:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 502,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2153:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 505,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 504,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2165:1:2",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2153:13:2"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 511,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "2190:3:2",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 510,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 503,
                        "src": "2190:1:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 512,
                    "nodeType": "ExpressionStatement",
                    "src": "2190:3:2"
                  },
                  "nodeType": "ForStatement",
                  "src": "2148:274:2"
                },
                {
                  "assignments": [
                    545
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 545,
                      "name": "controller",
                      "nodeType": "VariableDeclaration",
                      "scope": 616,
                      "src": "2449:30:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                        "typeString": "contract ControllerInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 544,
                        "name": "ControllerInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 10230,
                        "src": "2449:19:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                          "typeString": "contract ControllerInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 553,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 548,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 485,
                            "src": "2513:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 549,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18007,
                              "src": "2521:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 550,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2521:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 547,
                          "name": "create",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 465,
                          "src": "2506:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_Avatar_$8541_$_t_address_$returns$_t_address_$",
                            "typeString": "function (contract Avatar,address) returns (address)"
                          }
                        },
                        "id": 551,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2506:26:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 546,
                      "name": "ControllerInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10230,
                      "src": "2482:19:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ControllerInterface_$10230_$",
                        "typeString": "type(contract ControllerInterface)"
                      }
                    },
                    "id": 552,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2482:54:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                      "typeString": "contract ControllerInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2449:87:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 558,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 485,
                            "src": "2624:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2616:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 559,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2616:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 554,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 467,
                        "src": "2588:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 556,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setFeeRecipient",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7550,
                      "src": "2588:27:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 560,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2588:44:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 561,
                  "nodeType": "ExpressionStatement",
                  "src": "2588:44:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 566,
                            "name": "controller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 545,
                            "src": "2670:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                              "typeString": "contract ControllerInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                              "typeString": "contract ControllerInterface"
                            }
                          ],
                          "id": 565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2662:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 567,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2662:19:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 562,
                        "name": "avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 485,
                        "src": "2637:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      },
                      "id": 564,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17229,
                      "src": "2637:24:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2637:45:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 569,
                  "nodeType": "ExpressionStatement",
                  "src": "2637:45:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 574,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 485,
                            "src": "2724:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 573,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2716:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 575,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2716:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 570,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 467,
                        "src": "2686:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 572,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17229,
                      "src": "2686:29:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 576,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2686:46:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 577,
                  "nodeType": "ExpressionStatement",
                  "src": "2686:46:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 582,
                            "name": "controller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 545,
                            "src": "2779:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                              "typeString": "contract ControllerInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                              "typeString": "contract ControllerInterface"
                            }
                          ],
                          "id": 581,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2771:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 583,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2771:19:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 578,
                        "name": "nativeReputation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 469,
                        "src": "2736:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Reputation_$12259",
                          "typeString": "contract Reputation"
                        }
                      },
                      "id": 580,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17229,
                      "src": "2736:34:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 584,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2736:55:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 585,
                  "nodeType": "ExpressionStatement",
                  "src": "2736:55:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 589,
                        "name": "_sender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 471,
                        "src": "2835:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 586,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 467,
                        "src": "2813:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 588,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16638,
                      "src": "2813:21:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 590,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2813:30:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 591,
                  "nodeType": "ExpressionStatement",
                  "src": "2813:30:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 596,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 485,
                            "src": "2877:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 595,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2869:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 597,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2869:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 592,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 467,
                        "src": "2847:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 594,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16638,
                      "src": "2847:21:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 598,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2847:38:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 599,
                  "nodeType": "ExpressionStatement",
                  "src": "2847:38:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 604,
                            "name": "controller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 545,
                            "src": "2919:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                              "typeString": "contract ControllerInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                              "typeString": "contract ControllerInterface"
                            }
                          ],
                          "id": 603,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2911:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 605,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2911:19:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 600,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 467,
                        "src": "2889:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 602,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16638,
                      "src": "2889:21:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 606,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2889:42:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 607,
                  "nodeType": "ExpressionStatement",
                  "src": "2889:42:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 608,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 467,
                        "src": "2935:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 610,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "renounceMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16647,
                      "src": "2935:26:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2935:28:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 612,
                  "nodeType": "ExpressionStatement",
                  "src": "2935:28:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 613,
                        "name": "avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 485,
                        "src": "2975:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      }
                    ],
                    "id": 614,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "2974:8:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "functionReturnParameters": 483,
                  "id": 615,
                  "nodeType": "Return",
                  "src": "2967:15:2"
                }
              ]
            },
            "documentation": "@param _founders An array with the addresses of the founders of the organization\n@param _avatarTokenAmount Amount of tokens that the avatar receive on new organization\n@param _foundersReputationAmount An array of amount of reputation that the\n  founders receive in the new organization",
            "id": 617,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addFounders",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 480,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 467,
                  "name": "nativeToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 617,
                  "src": "1744:22:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_GoodDollar_$7633",
                    "typeString": "contract GoodDollar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 466,
                    "name": "GoodDollar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7633,
                    "src": "1744:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_GoodDollar_$7633",
                      "typeString": "contract GoodDollar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 469,
                  "name": "nativeReputation",
                  "nodeType": "VariableDeclaration",
                  "scope": 617,
                  "src": "1770:27:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Reputation_$12259",
                    "typeString": "contract Reputation"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 468,
                    "name": "Reputation",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12259,
                    "src": "1770:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Reputation_$12259",
                      "typeString": "contract Reputation"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 471,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 617,
                  "src": "1801:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 470,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1801:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 474,
                  "name": "_founders",
                  "nodeType": "VariableDeclaration",
                  "scope": 617,
                  "src": "1820:26:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 472,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1820:7:2",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 473,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1820:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 476,
                  "name": "_avatarTokenAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 617,
                  "src": "1850:26:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 475,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1850:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 479,
                  "name": "_foundersReputationAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 617,
                  "src": "1880:42:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 477,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1880:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 478,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1880:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1740:185:2"
            },
            "returnParameters": {
              "id": 483,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 482,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 617,
                  "src": "1942:6:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$8541",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 481,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8541,
                    "src": "1942:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1941:8:2"
            },
            "scope": 618,
            "src": "1720:1266:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 908,
        "src": "1037:1951:2"
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          7633,
          12259
        ],
        "contractKind": "contract",
        "documentation": "@title Genesis Scheme that creates organizations. Taken and modified from @daostack.",
        "fullyImplemented": true,
        "id": 907,
        "linearizedBaseContracts": [
          907
        ],
        "name": "DaoCreatorGoodDollar",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 620,
            "name": "avatar",
            "nodeType": "VariableDeclaration",
            "scope": 907,
            "src": "3119:20:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Avatar_$8541",
              "typeString": "contract Avatar"
            },
            "typeName": {
              "contractScope": null,
              "id": 619,
              "name": "Avatar",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8541,
              "src": "3119:6:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Avatar_$8541",
                "typeString": "contract Avatar"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 622,
            "name": "lock",
            "nodeType": "VariableDeclaration",
            "scope": 907,
            "src": "3142:19:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 621,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "3142:7:2",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 626,
            "name": "NewOrg",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 625,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 624,
                  "indexed": false,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 626,
                  "src": "3178:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 623,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3178:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3177:17:2"
            },
            "src": "3165:30:2"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 630,
            "name": "InitialSchemesSet",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 629,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 628,
                  "indexed": false,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 630,
                  "src": "3221:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 627,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3221:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3220:17:2"
            },
            "src": "3197:41:2"
          },
          {
            "constant": false,
            "id": 632,
            "name": "addFoundersGoodDollar",
            "nodeType": "VariableDeclaration",
            "scope": 907,
            "src": "3241:51:2",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
              "typeString": "contract AddFoundersGoodDollar"
            },
            "typeName": {
              "contractScope": null,
              "id": 631,
              "name": "AddFoundersGoodDollar",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 618,
              "src": "3241:21:2",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                "typeString": "contract AddFoundersGoodDollar"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 641,
              "nodeType": "Block",
              "src": "3361:54:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 639,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 637,
                      "name": "addFoundersGoodDollar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 632,
                      "src": "3365:21:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                        "typeString": "contract AddFoundersGoodDollar"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 638,
                      "name": "_addFoundersGoodDollar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 634,
                      "src": "3389:22:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                        "typeString": "contract AddFoundersGoodDollar"
                      }
                    },
                    "src": "3365:46:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                      "typeString": "contract AddFoundersGoodDollar"
                    }
                  },
                  "id": 640,
                  "nodeType": "ExpressionStatement",
                  "src": "3365:46:2"
                }
              ]
            },
            "documentation": null,
            "id": 642,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 635,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 634,
                  "name": "_addFoundersGoodDollar",
                  "nodeType": "VariableDeclaration",
                  "scope": 642,
                  "src": "3308:44:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                    "typeString": "contract AddFoundersGoodDollar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 633,
                    "name": "AddFoundersGoodDollar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 618,
                    "src": "3308:21:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                      "typeString": "contract AddFoundersGoodDollar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3307:46:2"
            },
            "returnParameters": {
              "id": 636,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3361:0:2"
            },
            "scope": 907,
            "src": "3296:119:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 676,
              "nodeType": "Block",
              "src": "4274:253:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 666,
                        "name": "_tokenName",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 644,
                        "src": "4381:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 667,
                        "name": "_tokenSymbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 646,
                        "src": "4397:12:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 668,
                        "name": "_cap",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 648,
                        "src": "4415:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 669,
                        "name": "_formula",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 650,
                        "src": "4425:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_FeeFormula_$2633",
                          "typeString": "contract FeeFormula"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 670,
                        "name": "_identity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 652,
                        "src": "4439:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Identity_$5447",
                          "typeString": "contract Identity"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 671,
                        "name": "_founders",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 655,
                        "src": "4454:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 672,
                        "name": "_avatarTokenAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 657,
                        "src": "4469:18:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 673,
                        "name": "_foundersReputationAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 660,
                        "src": "4493:25:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_contract$_FeeFormula_$2633",
                          "typeString": "contract FeeFormula"
                        },
                        {
                          "typeIdentifier": "t_contract$_Identity_$5447",
                          "typeString": "contract Identity"
                        },
                        {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      ],
                      "id": 665,
                      "name": "_forgeOrg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 906,
                      "src": "4366:9:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_contract$_FeeFormula_$2633_$_t_contract$_Identity_$5447_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (string memory,string memory,uint256,contract FeeFormula,contract Identity,address[] memory,uint256,uint256[] memory) returns (address)"
                      }
                    },
                    "id": 674,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4366:157:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 664,
                  "id": 675,
                  "nodeType": "Return",
                  "src": "4356:167:2"
                }
              ]
            },
            "documentation": "@dev Create a new organization\n@param _tokenName The name of the token associated with the organization\n@param _tokenSymbol The symbol of the token\n@param _founders An array with the addresses of the founders of the organization\n@param _avatarTokenAmount Amount of tokens that the avatar receive in the new organization\n@param _foundersReputationAmount An array of amount of reputation that the\n  founders receive in the new organization\n@param  _cap token cap - 0 for no cap.\n@return The address of the avatar of the controller",
            "id": 677,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "forgeOrg",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 661,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 644,
                  "name": "_tokenName",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "4014:26:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 643,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4014:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 646,
                  "name": "_tokenSymbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "4044:28:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 645,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4044:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 648,
                  "name": "_cap",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "4076:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 647,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4076:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 650,
                  "name": "_formula",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "4092:19:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_FeeFormula_$2633",
                    "typeString": "contract FeeFormula"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 649,
                    "name": "FeeFormula",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2633,
                    "src": "4092:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FeeFormula_$2633",
                      "typeString": "contract FeeFormula"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 652,
                  "name": "_identity",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "4115:18:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Identity_$5447",
                    "typeString": "contract Identity"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 651,
                    "name": "Identity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5447,
                    "src": "4115:8:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Identity_$5447",
                      "typeString": "contract Identity"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 655,
                  "name": "_founders",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "4137:28:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 653,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4137:7:2",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 654,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4137:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 657,
                  "name": "_avatarTokenAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "4169:26:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 656,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4169:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 660,
                  "name": "_foundersReputationAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "4199:44:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 658,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4199:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 659,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4199:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4010:236:2"
            },
            "returnParameters": {
              "id": 664,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 663,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 677,
                  "src": "4265:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 662,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4265:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4264:9:2"
            },
            "scope": 907,
            "src": "3993:534:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 769,
              "nodeType": "Block",
              "src": "5024:644:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 697,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 694,
                          "name": "lock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 622,
                          "src": "5134:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 695,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18007,
                            "src": "5142:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5142:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "5134:18:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6573736167652073656e646572206973206e6f74206c6f636b",
                        "id": 698,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5154:28:2",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_df9548e5891236548bf59505f4f41dc48698a4e267e6def8ad5c03176f71f65c",
                          "typeString": "literal_string \"Message sender is not lock\""
                        },
                        "value": "Message sender is not lock"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_df9548e5891236548bf59505f4f41dc48698a4e267e6def8ad5c03176f71f65c",
                          "typeString": "literal_string \"Message sender is not lock\""
                        }
                      ],
                      "id": 693,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18010,
                        18011
                      ],
                      "referencedDeclaration": 18011,
                      "src": "5126:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 699,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5126:57:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 700,
                  "nodeType": "ExpressionStatement",
                  "src": "5126:57:2"
                },
                {
                  "assignments": [
                    702
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 702,
                      "name": "controller",
                      "nodeType": "VariableDeclaration",
                      "scope": 769,
                      "src": "5218:30:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                        "typeString": "contract ControllerInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 701,
                        "name": "ControllerInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 10230,
                        "src": "5218:19:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                          "typeString": "contract ControllerInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 708,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 704,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 679,
                            "src": "5271:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          },
                          "id": 705,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17178,
                          "src": "5271:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 706,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5271:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 703,
                      "name": "ControllerInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10230,
                      "src": "5251:19:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ControllerInterface_$10230_$",
                        "typeString": "type(contract ControllerInterface)"
                      }
                    },
                    "id": 707,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5251:36:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                      "typeString": "contract ControllerInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5218:69:2"
                },
                {
                  "body": {
                    "id": 737,
                    "nodeType": "Block",
                    "src": "5337:116:2",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 723,
                                "name": "_schemes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 682,
                                "src": "5373:8:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 725,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 724,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 710,
                                "src": "5382:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5373:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 726,
                                "name": "_params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 685,
                                "src": "5390:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                                  "typeString": "bytes32[] calldata"
                                }
                              },
                              "id": 728,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 727,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 710,
                                "src": "5398:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5390:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 729,
                                "name": "_permissions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 688,
                                "src": "5406:12:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes4_$dyn_calldata_ptr",
                                  "typeString": "bytes4[] calldata"
                                }
                              },
                              "id": 731,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 730,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 710,
                                "src": "5419:1:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5406:15:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 733,
                                  "name": "_avatar",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 679,
                                  "src": "5435:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Avatar_$8541",
                                    "typeString": "contract Avatar"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Avatar_$8541",
                                    "typeString": "contract Avatar"
                                  }
                                ],
                                "id": 732,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5427:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 734,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5427:16:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 720,
                              "name": "controller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 702,
                              "src": "5342:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                                "typeString": "contract ControllerInterface"
                              }
                            },
                            "id": 722,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "registerScheme",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10047,
                            "src": "5342:25:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_bytes4_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,bytes32,bytes4,address) external returns (bool)"
                            }
                          },
                          "id": 735,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5342:106:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 736,
                        "nodeType": "ExpressionStatement",
                        "src": "5342:106:2"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 716,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 713,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 710,
                      "src": "5311:1:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 714,
                        "name": "_schemes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 682,
                        "src": "5315:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      "id": 715,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5315:15:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5311:19:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 738,
                  "initializationExpression": {
                    "assignments": [
                      710
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 710,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 738,
                        "src": "5296:9:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 709,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5296:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 712,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 711,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5308:1:2",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5296:13:2"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 718,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "5332:3:2",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 717,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 710,
                        "src": "5332:1:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 719,
                    "nodeType": "ExpressionStatement",
                    "src": "5332:3:2"
                  },
                  "nodeType": "ForStatement",
                  "src": "5291:162:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 742,
                        "name": "_metaData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 690,
                        "src": "5476:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 743,
                        "name": "_avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 679,
                        "src": "5487:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 739,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 702,
                        "src": "5456:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                          "typeString": "contract ControllerInterface"
                        }
                      },
                      "id": 741,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "metaData",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10168,
                      "src": "5456:19:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_contract$_Avatar_$8541_$returns$_t_bool_$",
                        "typeString": "function (string memory,contract Avatar) external returns (bool)"
                      }
                    },
                    "id": 744,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5456:39:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 745,
                  "nodeType": "ExpressionStatement",
                  "src": "5456:39:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 750,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18115,
                            "src": "5557:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DaoCreatorGoodDollar_$907",
                              "typeString": "contract DaoCreatorGoodDollar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DaoCreatorGoodDollar_$907",
                              "typeString": "contract DaoCreatorGoodDollar"
                            }
                          ],
                          "id": 749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5549:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 751,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5549:13:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 753,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 679,
                            "src": "5572:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 752,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5564:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 754,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5564:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 746,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 702,
                        "src": "5521:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                          "typeString": "contract ControllerInterface"
                        }
                      },
                      "id": 748,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "unregisterScheme",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10056,
                      "src": "5521:27:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address,address) external returns (bool)"
                      }
                    },
                    "id": 755,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5521:60:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 756,
                  "nodeType": "ExpressionStatement",
                  "src": "5521:60:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 761,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 757,
                      "name": "lock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 622,
                      "src": "5603:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 759,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5618:1:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 758,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5610:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 760,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5610:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "5603:17:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 762,
                  "nodeType": "ExpressionStatement",
                  "src": "5603:17:2"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 765,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 679,
                            "src": "5655:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 764,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5647:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 766,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5647:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 763,
                      "name": "InitialSchemesSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 630,
                      "src": "5629:17:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 767,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5629:35:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 768,
                  "nodeType": "EmitStatement",
                  "src": "5624:40:2"
                }
              ]
            },
            "documentation": "@dev Set initial schemes for the organization.\n@param _avatar organization avatar (returns from forgeOrg)\n@param _schemes the schemes to register for the organization\n@param _params the schemes parameters\n@param _permissions the schemes permissions.\n@param _metaData dao meta data hash",
            "id": 770,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setSchemes",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 691,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 679,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 770,
                  "src": "4873:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$8541",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 678,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8541,
                    "src": "4873:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 682,
                  "name": "_schemes",
                  "nodeType": "VariableDeclaration",
                  "scope": 770,
                  "src": "4891:27:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 680,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4891:7:2",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 681,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4891:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 685,
                  "name": "_params",
                  "nodeType": "VariableDeclaration",
                  "scope": 770,
                  "src": "4922:26:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 683,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "4922:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 684,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4922:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 688,
                  "name": "_permissions",
                  "nodeType": "VariableDeclaration",
                  "scope": 770,
                  "src": "4952:30:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes4_$dyn_calldata_ptr",
                    "typeString": "bytes4[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 686,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "4952:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "id": 687,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4952:8:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                      "typeString": "bytes4[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 690,
                  "name": "_metaData",
                  "nodeType": "VariableDeclaration",
                  "scope": 770,
                  "src": "4986:25:2",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 689,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4986:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4869:145:2"
            },
            "returnParameters": {
              "id": 692,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5024:0:2"
            },
            "scope": 907,
            "src": "4850:818:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 905,
              "nodeType": "Block",
              "src": "6506:995:2",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 798,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 794,
                          "name": "lock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 622,
                          "src": "6560:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 796,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6576:1:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 795,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6568:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6568:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "6560:18:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4c6f636b20616c726561647920657869737473",
                        "id": 799,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6580:21:2",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6adee1c715684195ea4b8e979094a753cb53be673930db0efd9bc1ededb8e347",
                          "typeString": "literal_string \"Lock already exists\""
                        },
                        "value": "Lock already exists"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6adee1c715684195ea4b8e979094a753cb53be673930db0efd9bc1ededb8e347",
                          "typeString": "literal_string \"Lock already exists\""
                        }
                      ],
                      "id": 793,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18010,
                        18011
                      ],
                      "referencedDeclaration": 18011,
                      "src": "6552:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 800,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6552:50:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 801,
                  "nodeType": "ExpressionStatement",
                  "src": "6552:50:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 807,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 803,
                            "name": "_founders",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 783,
                            "src": "6618:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6618:16:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 805,
                            "name": "_foundersReputationAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 788,
                            "src": "6638:25:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 806,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6638:32:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6618:52:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "466f756e6465722072657075746174696f6e206d697373696e67",
                        "id": 808,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6675:28:2",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_06e38549615e9e8e837dacf67c21c7b341e0e9bad11c3e95d7ddf60a09cc0384",
                          "typeString": "literal_string \"Founder reputation missing\""
                        },
                        "value": "Founder reputation missing"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_06e38549615e9e8e837dacf67c21c7b341e0e9bad11c3e95d7ddf60a09cc0384",
                          "typeString": "literal_string \"Founder reputation missing\""
                        }
                      ],
                      "id": 802,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18010,
                        18011
                      ],
                      "referencedDeclaration": 18011,
                      "src": "6606:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 809,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6606:101:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 810,
                  "nodeType": "ExpressionStatement",
                  "src": "6606:101:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 815,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 812,
                            "name": "_founders",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 783,
                            "src": "6719:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 813,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6719:16:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 814,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6738:1:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "6719:20:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d7573742068617665206174206c65617374206f6e6520666f756e646572",
                        "id": 816,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6741:32:2",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_59a464732e9456910eb4953c756b7c7d628498db9b933b3c32e07be2f83b1b6e",
                          "typeString": "literal_string \"Must have at least one founder\""
                        },
                        "value": "Must have at least one founder"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_59a464732e9456910eb4953c756b7c7d628498db9b933b3c32e07be2f83b1b6e",
                          "typeString": "literal_string \"Must have at least one founder\""
                        }
                      ],
                      "id": 811,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18010,
                        18011
                      ],
                      "referencedDeclaration": 18011,
                      "src": "6711:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 817,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6711:63:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 818,
                  "nodeType": "ExpressionStatement",
                  "src": "6711:63:2"
                },
                {
                  "assignments": [
                    820
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 820,
                      "name": "nativeToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 905,
                      "src": "6778:22:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_GoodDollar_$7633",
                        "typeString": "contract GoodDollar"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 819,
                        "name": "GoodDollar",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7633,
                        "src": "6778:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 832,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 823,
                        "name": "_tokenName",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 772,
                        "src": "6822:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 824,
                        "name": "_tokenSymbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 774,
                        "src": "6837:12:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 825,
                        "name": "_cap",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 776,
                        "src": "6854:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 826,
                        "name": "_formula",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 778,
                        "src": "6863:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_FeeFormula_$2633",
                          "typeString": "contract FeeFormula"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 827,
                        "name": "_identity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 780,
                        "src": "6876:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Identity_$5447",
                          "typeString": "contract Identity"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 829,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6898:1:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6890:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 830,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6890:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_contract$_FeeFormula_$2633",
                          "typeString": "contract FeeFormula"
                        },
                        {
                          "typeIdentifier": "t_contract$_Identity_$5447",
                          "typeString": "contract Identity"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 822,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "6803:14:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_creation_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_contract$_AbstractFees_$2581_$_t_contract$_Identity_$5447_$_t_address_$returns$_t_contract$_GoodDollar_$7633_$",
                        "typeString": "function (string memory,string memory,uint256,contract AbstractFees,contract Identity,address) returns (contract GoodDollar)"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 821,
                        "name": "GoodDollar",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7633,
                        "src": "6807:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      }
                    },
                    "id": 831,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6803:101:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_GoodDollar_$7633",
                      "typeString": "contract GoodDollar"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6778:126:2"
                },
                {
                  "assignments": [
                    834
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 834,
                      "name": "nativeReputation",
                      "nodeType": "VariableDeclaration",
                      "scope": 905,
                      "src": "6908:27:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Reputation_$12259",
                        "typeString": "contract Reputation"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 833,
                        "name": "Reputation",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12259,
                        "src": "6908:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Reputation_$12259",
                          "typeString": "contract Reputation"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 838,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 836,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "6938:14:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Reputation_$12259_$",
                        "typeString": "function () returns (contract Reputation)"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 835,
                        "name": "Reputation",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 12259,
                        "src": "6942:10:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Reputation_$12259",
                          "typeString": "contract Reputation"
                        }
                      }
                    },
                    "id": 837,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6938:16:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Reputation_$12259",
                      "typeString": "contract Reputation"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6908:46:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 843,
                            "name": "addFoundersGoodDollar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 632,
                            "src": "7010:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                              "typeString": "contract AddFoundersGoodDollar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                              "typeString": "contract AddFoundersGoodDollar"
                            }
                          ],
                          "id": 842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7002:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 844,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7002:30:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 839,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 820,
                        "src": "6980:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 841,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16638,
                      "src": "6980:21:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 845,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6980:53:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 846,
                  "nodeType": "ExpressionStatement",
                  "src": "6980:53:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 847,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 820,
                        "src": "7037:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 849,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "renounceMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16647,
                      "src": "7037:26:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 850,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7037:28:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 851,
                  "nodeType": "ExpressionStatement",
                  "src": "7037:28:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 856,
                            "name": "addFoundersGoodDollar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 632,
                            "src": "7108:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                              "typeString": "contract AddFoundersGoodDollar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                              "typeString": "contract AddFoundersGoodDollar"
                            }
                          ],
                          "id": 855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7100:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 857,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7100:30:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 852,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 820,
                        "src": "7070:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 854,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17229,
                      "src": "7070:29:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 858,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7070:61:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 859,
                  "nodeType": "ExpressionStatement",
                  "src": "7070:61:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 864,
                            "name": "addFoundersGoodDollar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 632,
                            "src": "7178:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                              "typeString": "contract AddFoundersGoodDollar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                              "typeString": "contract AddFoundersGoodDollar"
                            }
                          ],
                          "id": 863,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7170:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 865,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7170:30:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 860,
                        "name": "nativeReputation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 834,
                        "src": "7135:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Reputation_$12259",
                          "typeString": "contract Reputation"
                        }
                      },
                      "id": 862,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17229,
                      "src": "7135:34:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 866,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7135:66:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 867,
                  "nodeType": "ExpressionStatement",
                  "src": "7135:66:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 879,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 868,
                      "name": "avatar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 620,
                      "src": "7206:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Avatar_$8541",
                        "typeString": "contract Avatar"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 871,
                          "name": "nativeToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 820,
                          "src": "7253:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_GoodDollar_$7633",
                            "typeString": "contract GoodDollar"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 872,
                          "name": "nativeReputation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 834,
                          "src": "7269:16:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Reputation_$12259",
                            "typeString": "contract Reputation"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 873,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18007,
                            "src": "7290:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 874,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7290:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 875,
                          "name": "_founders",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 783,
                          "src": "7305:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 876,
                          "name": "_avatarTokenAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 785,
                          "src": "7319:18:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 877,
                          "name": "_foundersReputationAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 788,
                          "src": "7342:25:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_contract$_GoodDollar_$7633",
                            "typeString": "contract GoodDollar"
                          },
                          {
                            "typeIdentifier": "t_contract$_Reputation_$12259",
                            "typeString": "contract Reputation"
                          },
                          {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 869,
                          "name": "addFoundersGoodDollar",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 632,
                          "src": "7215:21:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_AddFoundersGoodDollar_$618",
                            "typeString": "contract AddFoundersGoodDollar"
                          }
                        },
                        "id": 870,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "addFounders",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 617,
                        "src": "7215:33:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_nonpayable$_t_contract$_GoodDollar_$7633_$_t_contract$_Reputation_$12259_$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_contract$_Avatar_$8541_$",
                          "typeString": "function (contract GoodDollar,contract Reputation,address,address[] memory,uint256,uint256[] memory) external returns (contract Avatar)"
                        }
                      },
                      "id": 878,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7215:156:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Avatar_$8541",
                        "typeString": "contract Avatar"
                      }
                    },
                    "src": "7206:165:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "id": 880,
                  "nodeType": "ExpressionStatement",
                  "src": "7206:165:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 885,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 620,
                            "src": "7406:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 884,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7398:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 886,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7398:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 881,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 820,
                        "src": "7376:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 883,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addPauser",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16741,
                      "src": "7376:21:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 887,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7376:38:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 888,
                  "nodeType": "ExpressionStatement",
                  "src": "7376:38:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 892,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 889,
                      "name": "lock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 622,
                      "src": "7419:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 890,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18007,
                        "src": "7426:3:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 891,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7426:10:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "7419:17:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 893,
                  "nodeType": "ExpressionStatement",
                  "src": "7419:17:2"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 896,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 620,
                            "src": "7461:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 895,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7453:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 897,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7453:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 894,
                      "name": "NewOrg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 626,
                      "src": "7446:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 898,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7446:23:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 899,
                  "nodeType": "EmitStatement",
                  "src": "7441:28:2"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 901,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 620,
                            "src": "7489:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 900,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7481:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 902,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7481:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "id": 903,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "7480:17:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 792,
                  "id": 904,
                  "nodeType": "Return",
                  "src": "7473:24:2"
                }
              ]
            },
            "documentation": "@dev Create a new organization\n@param _tokenName The name of the token associated with the organization\n@param _tokenSymbol The symbol of the token\n@param _founders An array with the addresses of the founders of the organization\n@param _avatarTokenAmount Amount of tokens that the avatar receive on startup\n@param _foundersReputationAmount An array of amount of reputation that the\n  founders receive in the new organization\n@param  _cap token cap - 0 for no cap.\n@return The address of the avatar of the controller",
            "id": 906,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_forgeOrg",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 789,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 772,
                  "name": "_tokenName",
                  "nodeType": "VariableDeclaration",
                  "scope": 906,
                  "src": "6255:24:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 771,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6255:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 774,
                  "name": "_tokenSymbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 906,
                  "src": "6283:26:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 773,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6283:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 776,
                  "name": "_cap",
                  "nodeType": "VariableDeclaration",
                  "scope": 906,
                  "src": "6313:12:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 775,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6313:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 778,
                  "name": "_formula",
                  "nodeType": "VariableDeclaration",
                  "scope": 906,
                  "src": "6329:19:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_FeeFormula_$2633",
                    "typeString": "contract FeeFormula"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 777,
                    "name": "FeeFormula",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2633,
                    "src": "6329:10:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FeeFormula_$2633",
                      "typeString": "contract FeeFormula"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 780,
                  "name": "_identity",
                  "nodeType": "VariableDeclaration",
                  "scope": 906,
                  "src": "6352:18:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Identity_$5447",
                    "typeString": "contract Identity"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 779,
                    "name": "Identity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5447,
                    "src": "6352:8:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Identity_$5447",
                      "typeString": "contract Identity"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 783,
                  "name": "_founders",
                  "nodeType": "VariableDeclaration",
                  "scope": 906,
                  "src": "6374:26:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 781,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "6374:7:2",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 782,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6374:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 785,
                  "name": "_avatarTokenAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 906,
                  "src": "6404:26:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 784,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6404:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 788,
                  "name": "_foundersReputationAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 906,
                  "src": "6434:42:2",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 786,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "6434:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 787,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6434:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6251:228:2"
            },
            "returnParameters": {
              "id": 792,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 791,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 906,
                  "src": "6497:7:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 790,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6497:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6496:9:2"
            },
            "scope": 907,
            "src": "6233:1268:2",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          }
        ],
        "scope": 908,
        "src": "3086:4417:2"
      }
    ],
    "src": "0:7504:2"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.16+commit.9c3226ce.Emscripten.clang"
  },
  "networks": {
    "3": {
      "events": {
        "0x244496352f5e67e59ce96b4a53ef9ea7cb88b7db33eb13dc5e771bd04385a60e": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "name": "_avatar",
              "type": "address"
            }
          ],
          "name": "NewOrg",
          "type": "event"
        },
        "0x9007c9042f12be953f7dbe3909f56c3f088e9fe294dbebbef4a67afa63462b6a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "name": "_avatar",
              "type": "address"
            }
          ],
          "name": "InitialSchemesSet",
          "type": "event"
        }
      },
      "links": {},
      "address": "0xBf687B0AF57043227eCe527C473ff06233Ab3f39",
      "transactionHash": "0xe1e6a954fa0553fab1465325f9317bfa2380590293cf538d50c409ee9eb9540d"
    },
    "122": {
      "events": {
        "0x244496352f5e67e59ce96b4a53ef9ea7cb88b7db33eb13dc5e771bd04385a60e": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "name": "_avatar",
              "type": "address"
            }
          ],
          "name": "NewOrg",
          "type": "event"
        },
        "0x9007c9042f12be953f7dbe3909f56c3f088e9fe294dbebbef4a67afa63462b6a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "name": "_avatar",
              "type": "address"
            }
          ],
          "name": "InitialSchemesSet",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x9682d2f6eADd15C5077B84598884Ab238ECB0bDC",
      "transactionHash": "0x0274fdfecc2fd6953f049d0a609bacc1f020cc55c56afe908b7689071db2f39f"
    },
    "4447": {
      "events": {
        "0x9007c9042f12be953f7dbe3909f56c3f088e9fe294dbebbef4a67afa63462b6a": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "_avatar",
              "type": "address"
            }
          ],
          "name": "InitialSchemesSet",
          "type": "event"
        },
        "0x244496352f5e67e59ce96b4a53ef9ea7cb88b7db33eb13dc5e771bd04385a60e": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "_avatar",
              "type": "address"
            }
          ],
          "name": "NewOrg",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x9907D92A4bA65eB8bC74f9faa1821ABAF15f4827",
      "transactionHash": "0xe0f60b5dbaeb4ac428a1b166a82042608d8fdc03583fc69dce674efe1e8ddc6f"
    }
  },
  "schemaVersion": "3.2.3",
  "updatedAt": "2022-10-27T11:34:11.006Z",
  "devdoc": {
    "methods": {
      "forgeOrg(string,string,uint256,address,address,address[],uint256,uint256[])": {
        "details": "Create a new organization",
        "params": {
          "_avatarTokenAmount": "Amount of tokens that the avatar receive in the new organization",
          "_cap": "token cap - 0 for no cap.",
          "_founders": "An array with the addresses of the founders of the organization",
          "_foundersReputationAmount": "An array of amount of reputation that the  founders receive in the new organization",
          "_tokenName": "The name of the token associated with the organization",
          "_tokenSymbol": "The symbol of the token"
        },
        "return": "The address of the avatar of the controller"
      },
      "setSchemes(address,address[],bytes32[],bytes4[],string)": {
        "details": "Set initial schemes for the organization.",
        "params": {
          "_avatar": "organization avatar (returns from forgeOrg)",
          "_metaData": "dao meta data hash",
          "_params": "the schemes parameters",
          "_permissions": "the schemes permissions.",
          "_schemes": "the schemes to register for the organization"
        }
      }
    },
    "title": "Genesis Scheme that creates organizations. Taken and modified from @daostack."
  },
  "userdoc": {
    "methods": {}
  }
}