{
  "contractName": "DaoCreatorGoodDollarWithRep",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract AddFoundersGoodDollarWithRep",
          "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": "contract Reputation",
          "name": "_reputation",
          "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 AddFoundersGoodDollarWithRep\",\"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\":\"contract Reputation\",\"name\":\"_reputation\",\"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,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/DaoCreator2.sol\":\"DaoCreatorGoodDollarWithRep\"},\"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/DaoCreator2.sol\":{\"keccak256\":\"0xcbb96b41780888d647fb4b9ab6e46866a9627e144cfa2f154153c373222f0a61\",\"urls\":[\"bzz-raw://3254b5944c8bfe67a5485b25eacba322edde04c5d0f769bbf945dfa7fee94e83\",\"dweb:/ipfs/QmWDPqMicgCz8Cp2gKGV4joceeKtMCfVeiq4TjtRQi9oWp\"]},\"/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": "0x608060405234801561001057600080fd5b506040516132d93803806132d98339818101604052602081101561003357600080fd5b5051600280546001600160a01b0319166001600160a01b03909216919091179055613276806100636000396000f3fe60806040523480156200001157600080fd5b5060043610620000525760003560e01c8063064bf38614620000575780635aef7de614620001d6578063a545da4e14620001fc578063f83d08ba1462000396575b600080fd5b620001d4600480360360a08110156200006f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156200009a57600080fd5b820183602082011115620000ad57600080fd5b803590602001918460208302840111600160201b83111715620000cf57600080fd5b919390929091602081019035600160201b811115620000ed57600080fd5b8201836020820111156200010057600080fd5b803590602001918460208302840111600160201b831117156200012257600080fd5b919390929091602081019035600160201b8111156200014057600080fd5b8201836020820111156200015357600080fd5b803590602001918460208302840111600160201b831117156200017557600080fd5b919390929091602081019035600160201b8111156200019357600080fd5b820183602082011115620001a657600080fd5b803590602001918460018302840111600160201b83111715620001c857600080fd5b509092509050620003a0565b005b620001e062000719565b604080516001600160a01b039092168252519081900360200190f35b620001e060048036036101208110156200021557600080fd5b810190602081018135600160201b8111156200023057600080fd5b8201836020820111156200024357600080fd5b803590602001918460018302840111600160201b831117156200026557600080fd5b919390929091602081019035600160201b8111156200028357600080fd5b8201836020820111156200029657600080fd5b803590602001918460018302840111600160201b83111715620002b857600080fd5b919390928235926001600160a01b036020820135811693604083013582169360608401359092169290919060a081019060800135600160201b811115620002fe57600080fd5b8201836020820111156200031157600080fd5b803590602001918460208302840111600160201b831117156200033357600080fd5b91939092823592604081019060200135600160201b8111156200035557600080fd5b8201836020820111156200036857600080fd5b803590602001918460208302840111600160201b831117156200038a57600080fd5b50909250905062000728565b620001e06200084b565b6001546001600160a01b0316331462000400576040805162461bcd60e51b815260206004820152601a60248201527f4d6573736167652073656e646572206973206e6f74206c6f636b000000000000604482015290519081900360640190fd5b6000896001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200043c57600080fd5b505afa15801562000451573d6000803e3d6000fd5b505050506040513d60208110156200046857600080fd5b5051905060005b888110156200059257816001600160a01b031663e869d45f8b8b848181106200049457fe5b905060200201356001600160a01b03168a8a85818110620004b157fe5b90506020020135898986818110620004c557fe5b905060200201356001600160e01b0319168f6040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001848152602001836001600160e01b0319166001600160e01b0319168152602001826001600160a01b03166001600160a01b03168152602001945050505050602060405180830381600087803b1580156200055b57600080fd5b505af115801562000570573d6000803e3d6000fd5b505050506040513d60208110156200058757600080fd5b50506001016200046f565b506040805163c9b62eb160e01b81526001600160a01b038c81166024830152600482019283526044820185905283169163c9b62eb191869186918f91908190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156200061257600080fd5b505af115801562000627573d6000803e3d6000fd5b505050506040513d60208110156200063e57600080fd5b50506040805163039de01d60e01b81523060048201526001600160a01b038c8116602483015291519183169163039de01d916044808201926020929091908290030181600087803b1580156200069357600080fd5b505af1158015620006a8573d6000803e3d6000fd5b505050506040513d6020811015620006bf57600080fd5b5050600180546001600160a01b0319169055604080516001600160a01b038c16815290517f9007c9042f12be953f7dbe3909f56c3f088e9fe294dbebbef4a67afa63462b6a9181900360200190a150505050505050505050565b6000546001600160a01b031681565b6000620008398e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508c8c8c8c8c8c80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508b8b8b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506200085a92505050565b9e9d5050505050505050505050505050565b6001546001600160a01b031681565b6001546000906001600160a01b031615620008b2576040805162461bcd60e51b81526020600482015260136024820152724c6f636b20616c72656164792065786973747360681b604482015290519081900360640190fd5b815184511462000909576040805162461bcd60e51b815260206004820152601a60248201527f466f756e6465722072657075746174696f6e206d697373696e67000000000000604482015290519081900360640190fd5b60008a8a8a8a8a6000604051620009209062000d77565b604081018590526001600160a01b0380851660608301528381166080830152821660a082015260c08082528751908201528651819060208083019160e08401918b019080838360005b838110156200098357818101518382015260200162000969565b50505050905090810190601f168015620009b15780820380516001836020036101000a031916815260200191505b5083810382528851815288516020918201918a019080838360005b83811015620009e6578181015183820152602001620009cc565b50505050905090810190601f16801562000a145780820380516001836020036101000a031916815260200191505b5098505050505050505050604051809103906000f08015801562000a3c573d6000803e3d6000fd5b5060025460408051634c1d96ab60e11b81526001600160a01b03928316600482015290519293509083169163983b2d569160248082019260009290919082900301818387803b15801562000a8f57600080fd5b505af115801562000aa4573d6000803e3d6000fd5b50505050806001600160a01b031663986502756040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000ae457600080fd5b505af115801562000af9573d6000803e3d6000fd5b50506002546040805163f2fde38b60e01b81526001600160a01b0392831660048201529051918516935063f2fde38b925060248082019260009290919082900301818387803b15801562000b4c57600080fd5b505af115801562000b61573d6000803e3d6000fd5b50506002546040516304bd7c3f60e51b81526001600160a01b03858116600483019081528b821660248401523360448401819052608484018b905260c0606485019081528c5160c48601528c519390951696506397af87e0955087948d9491938d938d938d93919260a482019160e401906020808901910280838360005b8381101562000bf957818101518382015260200162000bdf565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101562000c3a57818101518382015260200162000c20565b5050505090500198505050505050505050602060405180830381600087803b15801562000c6657600080fd5b505af115801562000c7b573d6000803e3d6000fd5b505050506040513d602081101562000c9257600080fd5b5051600080546001600160a01b0319166001600160a01b0392831617808255604080516320b707b160e21b8152918416600483015251928416926382dc1ec49260248084019391929182900301818387803b15801562000cf157600080fd5b505af115801562000d06573d6000803e3d6000fd5b5050600180546001600160a01b031916331790555050600054604080516001600160a01b03929092168252517f244496352f5e67e59ce96b4a53ef9ea7cb88b7db33eb13dc5e771bd04385a60e9181900360200190a150506000546001600160a01b03169998505050505050505050565b6124bc8062000d868339019056fe60806040523480156200001157600080fd5b50604051620024bc380380620024bc833981810160405260c08110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060408181526020830151908301516060840151608090940151600380546001600160a01b03191633179081905592965090945091849184918991899189918491849184918491849184916001600160a01b0316906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a382516200022a906004906020860190620004b9565b50815162000240906005906020850190620004b9565b50600655506200025b9050336001600160e01b036200038616565b50506008805460ff19169055506200027c336001600160e01b03620003d816565b5050506001600160a01b038116620002db576040805162461bcd60e51b815260206004820152601960248201527f537570706c696564206964656e74697479206973206e756c6c00000000000000604482015290519081900360640190fd5b600b80546001600160a01b0319166001600160a01b0392831617905581166200034b576040805162461bcd60e51b815260206004820152601860248201527f537570706c69656420666f726d756c61206973206e756c6c0000000000000000604482015290519081900360640190fd5b600c80546001600160a01b039283166001600160a01b031991821617909155600d8054939092169216919091179055506200055e9350505050565b620003a18160076200042a60201b62001d621790919060201c565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b620003f38160096200042a60201b62001d621790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6001600160a01b0381166200043e57600080fd5b6200045382826001600160e01b036200048316565b156200045e57600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b0382166200049957600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004fc57805160ff19168380011785556200052c565b828001600101855582156200052c579182015b828111156200052c5782518255916020019190600101906200050f565b506200053a9291506200053e565b5090565b6200055b91905b808211156200053a576000815560010162000545565b90565b611f4e806200056e6000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c806370a082311161013057806398650275116100b8578063d5a06d4c1161007c578063d5a06d4c146106a7578063dd62ed3e146106c4578063e74b981b146106f2578063ecc06c7614610718578063f2fde38b1461073e57610232565b80639865027514610619578063a457c2d714610621578063a9059cbb1461064d578063aa271e1a14610679578063cd5965831461069f57610232565b80638456cb59116100ff5780638456cb59146105d35780638da5cb5b146105db5780638f32d59b146105e357806395d89b41146105eb578063983b2d56146105f357610232565b806370a0823114610553578063715018a61461057957806379cc67901461058157806382dc1ec4146105ad57610232565b806339509351116101be57806346fbf68e1161018257806346fbf68e146104ef5780634b75f54f146105155780635c975abb1461051d5780635d5bf178146105255780636ef8d66d1461054b57610232565b806339509351146103ed5780633f4ba83a146104195780634000aea01461042157806340c10f19146104a657806342966c68146104d257610232565b806323b872dd1161020557806323b872dd146103365780632c159a1a1461036c578063313ce56714610390578063355274ea1461039857806339364fd7146103a057610232565b806306fdde0314610237578063095ea7b3146102b45780630b26cf66146102f457806318160ddd1461031c575b600080fd5b61023f610764565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610279578181015183820152602001610261565b50505050905090810190601f1680156102a65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e0600480360360408110156102ca57600080fd5b506001600160a01b0381351690602001356107f2565b604080519115158252519081900360200190f35b61031a6004803603602081101561030a57600080fd5b50356001600160a01b0316610805565b005b6103246108a6565b60408051918252519081900360200190f35b6102e06004803603606081101561034c57600080fd5b506001600160a01b038135811691602081013590911690604001356108ac565b6103746108d0565b604080516001600160a01b039092168252519081900360200190f35b6103246108df565b6103246108e4565b6103d4600480360360608110156103b657600080fd5b508035906001600160a01b03602082013581169160400135166108ea565b6040805192835290151560208301528051918290030190f35b6102e06004803603604081101561040357600080fd5b506001600160a01b038135169060200135610985565b61031a610991565b6102e06004803603606081101561043757600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561046757600080fd5b82018360208201111561047957600080fd5b8035906020019184600183028401116401000000008311171561049b57600080fd5b5090925090506109f1565b6102e0600480360360408110156104bc57600080fd5b506001600160a01b038135169060200135610a4c565b61031a600480360360208110156104e857600080fd5b5035610b9c565b6102e06004803603602081101561050557600080fd5b50356001600160a01b0316610c69565b610374610c82565b6102e0610c91565b61031a6004803603602081101561053b57600080fd5b50356001600160a01b0316610c9a565b61031a610d83565b6103246004803603602081101561056957600080fd5b50356001600160a01b0316610d8e565b61031a610da9565b61031a6004803603604081101561059757600080fd5b506001600160a01b038135169060200135610e04565b61031a600480360360208110156105c357600080fd5b50356001600160a01b0316610f9c565b61031a610fb7565b61037461101b565b6102e061102a565b61023f61103b565b61031a6004803603602081101561060957600080fd5b50356001600160a01b0316611096565b61031a6110b1565b6102e06004803603604081101561063757600080fd5b506001600160a01b0381351690602001356110ba565b6102e06004803603604081101561066357600080fd5b506001600160a01b0381351690602001356110c6565b6102e06004803603602081101561068f57600080fd5b50356001600160a01b03166110e8565b6103746110fb565b6103d4600480360360208110156106bd57600080fd5b503561110a565b610324600480360360408110156106da57600080fd5b506001600160a01b03813581169160200135166111a2565b61031a6004803603602081101561070857600080fd5b50356001600160a01b03166111cd565b61031a6004803603602081101561072e57600080fd5b50356001600160a01b0316611200565b61031a6004803603602081101561075457600080fd5b50356001600160a01b0316611298565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107ea5780601f106107bf576101008083540402835291602001916107ea565b820191906000526020600020905b8154815290600101906020018083116107cd57829003601f168201915b505050505081565b60006107fe83836112b2565b9392505050565b61080e336110e8565b61081757600080fd5b6001600160a01b038116158015906108335750610833816112cf565b610884576040805162461bcd60e51b815260206004820152601760248201527f496e76616c69642062726964676520636f6e7472616374000000000000000000604482015290519081900360640190fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60025490565b6000806108ba8585856112d5565b90506108c785858361145d565b95945050505050565b600b546001600160a01b031681565b600281565b60065481565b600c5460408051631eed540360e11b8152600481018690526001600160a01b038581166024830152848116604483015282516000948594921692633ddaa806926064808301939192829003018186803b15801561094657600080fd5b505afa15801561095a573d6000803e3d6000fd5b505050506040513d604081101561097057600080fd5b50805160209091015190969095509350505050565b60006107fe838361147b565b61099a33610c69565b6109a357600080fd5b60085460ff166109b257600080fd5b6008805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b6000806109ff3387876112d5565b9050610a42868286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061149892505050565b9695505050505050565b6000610a57336110e8565b610a6057600080fd5b600b546040805163fe575a8760e01b81526001600160a01b03808716600483015291518693929092169163fe575a8791602480820192602092909190829003018186803b158015610ab057600080fd5b505afa158015610ac4573d6000803e3d6000fd5b505050506040513d6020811015610ada57600080fd5b505115610b28576040805162461bcd60e51b8152602060048201526017602482015276149958d95a5d995c881a5cc8189b1858dadb1a5cdd1959604a1b604482015290519081900360640190fd5b60065415610b8857600654610b4b84610b3f6108a6565b9063ffffffff6115d816565b1115610b885760405162461bcd60e51b8152600401808060200182810382526021815260200180611ed96021913960400191505060405180910390fd5b610b9284846115ea565b5060019392505050565b600b546040805163fe575a8760e01b815233600482015290516001600160a01b039092169163fe575a8791602480820192602092909190829003018186803b158015610be757600080fd5b505afa158015610bfb573d6000803e3d6000fd5b505050506040513d6020811015610c1157600080fd5b505115610c5d576040805162461bcd60e51b815260206004820152601560248201527410d85b1b195c881a5cc8189b1858dadb1a5cdd1959605a1b604482015290519081900360640190fd5b610c6681611692565b50565b6000610c7c60078363ffffffff61169c16565b92915050565b600c546001600160a01b031681565b60085460ff1690565b610ca261102a565b610cab57600080fd5b806001600160a01b031663223668446040518163ffffffff1660e01b815260040160206040518083038186803b158015610ce457600080fd5b505afa158015610cf8573d6000803e3d6000fd5b505050506040513d6020811015610d0e57600080fd5b5051610d61576040805162461bcd60e51b815260206004820152601a60248201527f4964656e74697479206973206e6f742072656769737465726564000000000000604482015290519081900360640190fd5b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b610d8c336116d1565b565b6001600160a01b031660009081526020819052604090205490565b610db161102a565b610dba57600080fd5b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b600b546040805163fe575a8760e01b815233600482015290516001600160a01b039092169163fe575a8791602480820192602092909190829003018186803b158015610e4f57600080fd5b505afa158015610e63573d6000803e3d6000fd5b505050506040513d6020811015610e7957600080fd5b505115610ec5576040805162461bcd60e51b815260206004820152601560248201527410d85b1b195c881a5cc8189b1858dadb1a5cdd1959605a1b604482015290519081900360640190fd5b600b546040805163fe575a8760e01b81526001600160a01b03808616600483015291518593929092169163fe575a8791602480820192602092909190829003018186803b158015610f1557600080fd5b505afa158015610f29573d6000803e3d6000fd5b505050506040513d6020811015610f3f57600080fd5b505115610f8d576040805162461bcd60e51b8152602060048201526017602482015276149958d95a5d995c881a5cc8189b1858dadb1a5cdd1959604a1b604482015290519081900360640190fd5b610f978383611719565b505050565b610fa533610c69565b610fae57600080fd5b610c6681611727565b610fc033610c69565b610fc957600080fd5b60085460ff1615610fd957600080fd5b6008805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b6003546001600160a01b031690565b6003546001600160a01b0316331490565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107ea5780601f106107bf576101008083540402835291602001916107ea565b61109f336110e8565b6110a857600080fd5b610c668161176f565b610d8c336117b7565b60006107fe83836117ff565b6000806110d43385856112d5565b90506110e0848261181c565b949350505050565b6000610c7c60098363ffffffff61169c16565b600a546001600160a01b031681565b600c5460408051631eed540360e11b815260048101849052600060248201819052604482018190528251909384936001600160a01b0390911692633ddaa8069260648083019392829003018186803b15801561116557600080fd5b505afa158015611179573d6000803e3d6000fd5b505050506040513d604081101561118f57600080fd5b5080516020909101519092509050915091565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6111d561102a565b6111de57600080fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b61120861102a565b61121157600080fd5b806001600160a01b031663223668446040518163ffffffff1660e01b815260040160206040518083038186803b15801561124a57600080fd5b505afa15801561125e573d6000803e3d6000fd5b505050506040513d602081101561127457600080fd5b5050600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6112a061102a565b6112a957600080fd5b610c6681611839565b60085460009060ff16156112c557600080fd5b6107fe83836118a8565b3b151590565b60008060006112e58487876108ea565b9150915060008211801561136d5750600b546040805163639e625760e11b815233600482015290516001600160a01b039092169163c73cc4ae91602480820192602092909190829003018186803b15801561133f57600080fd5b505afa158015611353573d6000803e3d6000fd5b505050506040513d602081101561136957600080fd5b5051155b1561145357801580611396575061138386610d8e565b611393858463ffffffff6115d816565b11155b6113e7576040805162461bcd60e51b815260206004820181905260248201527f4e6f7420656e6f7567682062616c616e636520746f2070617920545820666565604482015290519081900360640190fd5b6001600160a01b03861633141561141457600d5461140e906001600160a01b03168361181c565b5061142e565b600d5461142c9087906001600160a01b03168461145d565b505b8061144857611443848363ffffffff61191216565b61144a565b835b925050506107fe565b5091949350505050565b60085460009060ff161561147057600080fd5b6110e0848484611927565b60085460009060ff161561148e57600080fd5b6107fe83836119de565b60085460009060ff16156114ab57600080fd5b60006114b7858561181c565b9050846001600160a01b0316336001600160a01b03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1686866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561153357818101518382015260200161151b565b50505050905090810190601f1680156115605780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3611577856112cf565b156110e057611587858585611a7a565b6110e0576040805162461bcd60e51b815260206004820152601860248201527f436f6e74726163742066616c6c6261636b206661696c65640000000000000000604482015290519081900360640190fd5b6000828201838110156107fe57600080fd5b6001600160a01b0382166115fd57600080fd5b600254611610908263ffffffff6115d816565b6002556001600160a01b03821660009081526020819052604090205461163c908263ffffffff6115d816565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610c663382611bc3565b60006001600160a01b0382166116b157600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6116e260078263ffffffff611c6a16565b6040516001600160a01b038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b6117238282611cb2565b5050565b61173860078263ffffffff611d6216565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b61178060098263ffffffff611d6216565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6117c860098263ffffffff611c6a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60085460009060ff161561181257600080fd5b6107fe8383611dae565b60085460009060ff161561182f57600080fd5b6107fe8383611df7565b6001600160a01b03811661184c57600080fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b0383166118bd57600080fd5b3360008181526001602090815260408083206001600160a01b0388168085529083529281902086905580518681529051929392600080516020611efa833981519152929181900390910190a350600192915050565b60008282111561192157600080fd5b50900390565b6001600160a01b038316600090815260016020908152604080832033845290915281205461195b908363ffffffff61191216565b6001600160a01b038516600090815260016020908152604080832033845290915290205561198a848484611e0d565b6001600160a01b038416600081815260016020908152604080832033808552908352928190205481519081529051929392600080516020611efa833981519152929181900390910190a35060019392505050565b60006001600160a01b0383166119f357600080fd5b3360009081526001602090815260408083206001600160a01b0387168452909152902054611a27908363ffffffff6115d816565b3360008181526001602090815260408083206001600160a01b038916808552908352928190208590558051948552519193600080516020611efa833981519152929081900390910190a350600192915050565b604051635260769b60e11b815233600482018181526024830185905260606044840190815284516064850152845160009488946001600160a01b0386169463a4c0ed369491938a938a939160849091019060208501908083838e5b83811015611aed578181015183820152602001611ad5565b50505050905090810190601f168015611b1a5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015611b3b57600080fd5b505af1158015611b4f573d6000803e3d6000fd5b505050506040513d6020811015611b6557600080fd5b5051611bb8576040805162461bcd60e51b815260206004820152601860248201527f436f6e74726163742046616c6c6261636b206661696c65640000000000000000604482015290519081900360640190fd5b506001949350505050565b6001600160a01b038216611bd657600080fd5b600254611be9908263ffffffff61191216565b6002556001600160a01b038216600090815260208190526040902054611c15908263ffffffff61191216565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b6001600160a01b038116611c7d57600080fd5b611c87828261169c565b611c9057600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b0382166000908152600160209081526040808320338452909152902054611ce6908263ffffffff61191216565b6001600160a01b0383166000908152600160209081526040808320338452909152902055611d148282611bc3565b6001600160a01b038216600081815260016020908152604080832033808552908352928190205481519081529051929392600080516020611efa833981519152929181900390910190a35050565b6001600160a01b038116611d7557600080fd5b611d7f828261169c565b15611d8957600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038316611dc357600080fd5b3360009081526001602090815260408083206001600160a01b0387168452909152902054611a27908363ffffffff61191216565b6000611e04338484611e0d565b50600192915050565b6001600160a01b038216611e2057600080fd5b6001600160a01b038316600090815260208190526040902054611e49908263ffffffff61191216565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611e7e908263ffffffff6115d816565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505056fe43616e6e6f7420696e63726561736520737570706c79206265796f6e64206361708c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a265627a7a72315820377577b98803c2210dfa17f6feaf68d6a856726073543a35d4a8526c1f78cc9f64736f6c63430005100032a265627a7a723158205dcde01549ddde602299e865f7e0fb1b7573fce830fb206e4876dcdc782c1ebc64736f6c63430005100032",
  "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620000525760003560e01c8063064bf38614620000575780635aef7de614620001d6578063a545da4e14620001fc578063f83d08ba1462000396575b600080fd5b620001d4600480360360a08110156200006f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156200009a57600080fd5b820183602082011115620000ad57600080fd5b803590602001918460208302840111600160201b83111715620000cf57600080fd5b919390929091602081019035600160201b811115620000ed57600080fd5b8201836020820111156200010057600080fd5b803590602001918460208302840111600160201b831117156200012257600080fd5b919390929091602081019035600160201b8111156200014057600080fd5b8201836020820111156200015357600080fd5b803590602001918460208302840111600160201b831117156200017557600080fd5b919390929091602081019035600160201b8111156200019357600080fd5b820183602082011115620001a657600080fd5b803590602001918460018302840111600160201b83111715620001c857600080fd5b509092509050620003a0565b005b620001e062000719565b604080516001600160a01b039092168252519081900360200190f35b620001e060048036036101208110156200021557600080fd5b810190602081018135600160201b8111156200023057600080fd5b8201836020820111156200024357600080fd5b803590602001918460018302840111600160201b831117156200026557600080fd5b919390929091602081019035600160201b8111156200028357600080fd5b8201836020820111156200029657600080fd5b803590602001918460018302840111600160201b83111715620002b857600080fd5b919390928235926001600160a01b036020820135811693604083013582169360608401359092169290919060a081019060800135600160201b811115620002fe57600080fd5b8201836020820111156200031157600080fd5b803590602001918460208302840111600160201b831117156200033357600080fd5b91939092823592604081019060200135600160201b8111156200035557600080fd5b8201836020820111156200036857600080fd5b803590602001918460208302840111600160201b831117156200038a57600080fd5b50909250905062000728565b620001e06200084b565b6001546001600160a01b0316331462000400576040805162461bcd60e51b815260206004820152601a60248201527f4d6573736167652073656e646572206973206e6f74206c6f636b000000000000604482015290519081900360640190fd5b6000896001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200043c57600080fd5b505afa15801562000451573d6000803e3d6000fd5b505050506040513d60208110156200046857600080fd5b5051905060005b888110156200059257816001600160a01b031663e869d45f8b8b848181106200049457fe5b905060200201356001600160a01b03168a8a85818110620004b157fe5b90506020020135898986818110620004c557fe5b905060200201356001600160e01b0319168f6040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001848152602001836001600160e01b0319166001600160e01b0319168152602001826001600160a01b03166001600160a01b03168152602001945050505050602060405180830381600087803b1580156200055b57600080fd5b505af115801562000570573d6000803e3d6000fd5b505050506040513d60208110156200058757600080fd5b50506001016200046f565b506040805163c9b62eb160e01b81526001600160a01b038c81166024830152600482019283526044820185905283169163c9b62eb191869186918f91908190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b1580156200061257600080fd5b505af115801562000627573d6000803e3d6000fd5b505050506040513d60208110156200063e57600080fd5b50506040805163039de01d60e01b81523060048201526001600160a01b038c8116602483015291519183169163039de01d916044808201926020929091908290030181600087803b1580156200069357600080fd5b505af1158015620006a8573d6000803e3d6000fd5b505050506040513d6020811015620006bf57600080fd5b5050600180546001600160a01b0319169055604080516001600160a01b038c16815290517f9007c9042f12be953f7dbe3909f56c3f088e9fe294dbebbef4a67afa63462b6a9181900360200190a150505050505050505050565b6000546001600160a01b031681565b6000620008398e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508c8c8c8c8c8c80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508b8b8b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506200085a92505050565b9e9d5050505050505050505050505050565b6001546001600160a01b031681565b6001546000906001600160a01b031615620008b2576040805162461bcd60e51b81526020600482015260136024820152724c6f636b20616c72656164792065786973747360681b604482015290519081900360640190fd5b815184511462000909576040805162461bcd60e51b815260206004820152601a60248201527f466f756e6465722072657075746174696f6e206d697373696e67000000000000604482015290519081900360640190fd5b60008a8a8a8a8a6000604051620009209062000d77565b604081018590526001600160a01b0380851660608301528381166080830152821660a082015260c08082528751908201528651819060208083019160e08401918b019080838360005b838110156200098357818101518382015260200162000969565b50505050905090810190601f168015620009b15780820380516001836020036101000a031916815260200191505b5083810382528851815288516020918201918a019080838360005b83811015620009e6578181015183820152602001620009cc565b50505050905090810190601f16801562000a145780820380516001836020036101000a031916815260200191505b5098505050505050505050604051809103906000f08015801562000a3c573d6000803e3d6000fd5b5060025460408051634c1d96ab60e11b81526001600160a01b03928316600482015290519293509083169163983b2d569160248082019260009290919082900301818387803b15801562000a8f57600080fd5b505af115801562000aa4573d6000803e3d6000fd5b50505050806001600160a01b031663986502756040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562000ae457600080fd5b505af115801562000af9573d6000803e3d6000fd5b50506002546040805163f2fde38b60e01b81526001600160a01b0392831660048201529051918516935063f2fde38b925060248082019260009290919082900301818387803b15801562000b4c57600080fd5b505af115801562000b61573d6000803e3d6000fd5b50506002546040516304bd7c3f60e51b81526001600160a01b03858116600483019081528b821660248401523360448401819052608484018b905260c0606485019081528c5160c48601528c519390951696506397af87e0955087948d9491938d938d938d93919260a482019160e401906020808901910280838360005b8381101562000bf957818101518382015260200162000bdf565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101562000c3a57818101518382015260200162000c20565b5050505090500198505050505050505050602060405180830381600087803b15801562000c6657600080fd5b505af115801562000c7b573d6000803e3d6000fd5b505050506040513d602081101562000c9257600080fd5b5051600080546001600160a01b0319166001600160a01b0392831617808255604080516320b707b160e21b8152918416600483015251928416926382dc1ec49260248084019391929182900301818387803b15801562000cf157600080fd5b505af115801562000d06573d6000803e3d6000fd5b5050600180546001600160a01b031916331790555050600054604080516001600160a01b03929092168252517f244496352f5e67e59ce96b4a53ef9ea7cb88b7db33eb13dc5e771bd04385a60e9181900360200190a150506000546001600160a01b03169998505050505050505050565b6124bc8062000d868339019056fe60806040523480156200001157600080fd5b50604051620024bc380380620024bc833981810160405260c08110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060408181526020830151908301516060840151608090940151600380546001600160a01b03191633179081905592965090945091849184918991899189918491849184918491849184916001600160a01b0316906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a382516200022a906004906020860190620004b9565b50815162000240906005906020850190620004b9565b50600655506200025b9050336001600160e01b036200038616565b50506008805460ff19169055506200027c336001600160e01b03620003d816565b5050506001600160a01b038116620002db576040805162461bcd60e51b815260206004820152601960248201527f537570706c696564206964656e74697479206973206e756c6c00000000000000604482015290519081900360640190fd5b600b80546001600160a01b0319166001600160a01b0392831617905581166200034b576040805162461bcd60e51b815260206004820152601860248201527f537570706c69656420666f726d756c61206973206e756c6c0000000000000000604482015290519081900360640190fd5b600c80546001600160a01b039283166001600160a01b031991821617909155600d8054939092169216919091179055506200055e9350505050565b620003a18160076200042a60201b62001d621790919060201c565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b620003f38160096200042a60201b62001d621790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6001600160a01b0381166200043e57600080fd5b6200045382826001600160e01b036200048316565b156200045e57600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b0382166200049957600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004fc57805160ff19168380011785556200052c565b828001600101855582156200052c579182015b828111156200052c5782518255916020019190600101906200050f565b506200053a9291506200053e565b5090565b6200055b91905b808211156200053a576000815560010162000545565b90565b611f4e806200056e6000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c806370a082311161013057806398650275116100b8578063d5a06d4c1161007c578063d5a06d4c146106a7578063dd62ed3e146106c4578063e74b981b146106f2578063ecc06c7614610718578063f2fde38b1461073e57610232565b80639865027514610619578063a457c2d714610621578063a9059cbb1461064d578063aa271e1a14610679578063cd5965831461069f57610232565b80638456cb59116100ff5780638456cb59146105d35780638da5cb5b146105db5780638f32d59b146105e357806395d89b41146105eb578063983b2d56146105f357610232565b806370a0823114610553578063715018a61461057957806379cc67901461058157806382dc1ec4146105ad57610232565b806339509351116101be57806346fbf68e1161018257806346fbf68e146104ef5780634b75f54f146105155780635c975abb1461051d5780635d5bf178146105255780636ef8d66d1461054b57610232565b806339509351146103ed5780633f4ba83a146104195780634000aea01461042157806340c10f19146104a657806342966c68146104d257610232565b806323b872dd1161020557806323b872dd146103365780632c159a1a1461036c578063313ce56714610390578063355274ea1461039857806339364fd7146103a057610232565b806306fdde0314610237578063095ea7b3146102b45780630b26cf66146102f457806318160ddd1461031c575b600080fd5b61023f610764565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610279578181015183820152602001610261565b50505050905090810190601f1680156102a65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e0600480360360408110156102ca57600080fd5b506001600160a01b0381351690602001356107f2565b604080519115158252519081900360200190f35b61031a6004803603602081101561030a57600080fd5b50356001600160a01b0316610805565b005b6103246108a6565b60408051918252519081900360200190f35b6102e06004803603606081101561034c57600080fd5b506001600160a01b038135811691602081013590911690604001356108ac565b6103746108d0565b604080516001600160a01b039092168252519081900360200190f35b6103246108df565b6103246108e4565b6103d4600480360360608110156103b657600080fd5b508035906001600160a01b03602082013581169160400135166108ea565b6040805192835290151560208301528051918290030190f35b6102e06004803603604081101561040357600080fd5b506001600160a01b038135169060200135610985565b61031a610991565b6102e06004803603606081101561043757600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561046757600080fd5b82018360208201111561047957600080fd5b8035906020019184600183028401116401000000008311171561049b57600080fd5b5090925090506109f1565b6102e0600480360360408110156104bc57600080fd5b506001600160a01b038135169060200135610a4c565b61031a600480360360208110156104e857600080fd5b5035610b9c565b6102e06004803603602081101561050557600080fd5b50356001600160a01b0316610c69565b610374610c82565b6102e0610c91565b61031a6004803603602081101561053b57600080fd5b50356001600160a01b0316610c9a565b61031a610d83565b6103246004803603602081101561056957600080fd5b50356001600160a01b0316610d8e565b61031a610da9565b61031a6004803603604081101561059757600080fd5b506001600160a01b038135169060200135610e04565b61031a600480360360208110156105c357600080fd5b50356001600160a01b0316610f9c565b61031a610fb7565b61037461101b565b6102e061102a565b61023f61103b565b61031a6004803603602081101561060957600080fd5b50356001600160a01b0316611096565b61031a6110b1565b6102e06004803603604081101561063757600080fd5b506001600160a01b0381351690602001356110ba565b6102e06004803603604081101561066357600080fd5b506001600160a01b0381351690602001356110c6565b6102e06004803603602081101561068f57600080fd5b50356001600160a01b03166110e8565b6103746110fb565b6103d4600480360360208110156106bd57600080fd5b503561110a565b610324600480360360408110156106da57600080fd5b506001600160a01b03813581169160200135166111a2565b61031a6004803603602081101561070857600080fd5b50356001600160a01b03166111cd565b61031a6004803603602081101561072e57600080fd5b50356001600160a01b0316611200565b61031a6004803603602081101561075457600080fd5b50356001600160a01b0316611298565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107ea5780601f106107bf576101008083540402835291602001916107ea565b820191906000526020600020905b8154815290600101906020018083116107cd57829003601f168201915b505050505081565b60006107fe83836112b2565b9392505050565b61080e336110e8565b61081757600080fd5b6001600160a01b038116158015906108335750610833816112cf565b610884576040805162461bcd60e51b815260206004820152601760248201527f496e76616c69642062726964676520636f6e7472616374000000000000000000604482015290519081900360640190fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60025490565b6000806108ba8585856112d5565b90506108c785858361145d565b95945050505050565b600b546001600160a01b031681565b600281565b60065481565b600c5460408051631eed540360e11b8152600481018690526001600160a01b038581166024830152848116604483015282516000948594921692633ddaa806926064808301939192829003018186803b15801561094657600080fd5b505afa15801561095a573d6000803e3d6000fd5b505050506040513d604081101561097057600080fd5b50805160209091015190969095509350505050565b60006107fe838361147b565b61099a33610c69565b6109a357600080fd5b60085460ff166109b257600080fd5b6008805460ff191690556040805133815290517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9181900360200190a1565b6000806109ff3387876112d5565b9050610a42868286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061149892505050565b9695505050505050565b6000610a57336110e8565b610a6057600080fd5b600b546040805163fe575a8760e01b81526001600160a01b03808716600483015291518693929092169163fe575a8791602480820192602092909190829003018186803b158015610ab057600080fd5b505afa158015610ac4573d6000803e3d6000fd5b505050506040513d6020811015610ada57600080fd5b505115610b28576040805162461bcd60e51b8152602060048201526017602482015276149958d95a5d995c881a5cc8189b1858dadb1a5cdd1959604a1b604482015290519081900360640190fd5b60065415610b8857600654610b4b84610b3f6108a6565b9063ffffffff6115d816565b1115610b885760405162461bcd60e51b8152600401808060200182810382526021815260200180611ed96021913960400191505060405180910390fd5b610b9284846115ea565b5060019392505050565b600b546040805163fe575a8760e01b815233600482015290516001600160a01b039092169163fe575a8791602480820192602092909190829003018186803b158015610be757600080fd5b505afa158015610bfb573d6000803e3d6000fd5b505050506040513d6020811015610c1157600080fd5b505115610c5d576040805162461bcd60e51b815260206004820152601560248201527410d85b1b195c881a5cc8189b1858dadb1a5cdd1959605a1b604482015290519081900360640190fd5b610c6681611692565b50565b6000610c7c60078363ffffffff61169c16565b92915050565b600c546001600160a01b031681565b60085460ff1690565b610ca261102a565b610cab57600080fd5b806001600160a01b031663223668446040518163ffffffff1660e01b815260040160206040518083038186803b158015610ce457600080fd5b505afa158015610cf8573d6000803e3d6000fd5b505050506040513d6020811015610d0e57600080fd5b5051610d61576040805162461bcd60e51b815260206004820152601a60248201527f4964656e74697479206973206e6f742072656769737465726564000000000000604482015290519081900360640190fd5b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b610d8c336116d1565b565b6001600160a01b031660009081526020819052604090205490565b610db161102a565b610dba57600080fd5b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b600b546040805163fe575a8760e01b815233600482015290516001600160a01b039092169163fe575a8791602480820192602092909190829003018186803b158015610e4f57600080fd5b505afa158015610e63573d6000803e3d6000fd5b505050506040513d6020811015610e7957600080fd5b505115610ec5576040805162461bcd60e51b815260206004820152601560248201527410d85b1b195c881a5cc8189b1858dadb1a5cdd1959605a1b604482015290519081900360640190fd5b600b546040805163fe575a8760e01b81526001600160a01b03808616600483015291518593929092169163fe575a8791602480820192602092909190829003018186803b158015610f1557600080fd5b505afa158015610f29573d6000803e3d6000fd5b505050506040513d6020811015610f3f57600080fd5b505115610f8d576040805162461bcd60e51b8152602060048201526017602482015276149958d95a5d995c881a5cc8189b1858dadb1a5cdd1959604a1b604482015290519081900360640190fd5b610f978383611719565b505050565b610fa533610c69565b610fae57600080fd5b610c6681611727565b610fc033610c69565b610fc957600080fd5b60085460ff1615610fd957600080fd5b6008805460ff191660011790556040805133815290517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589181900360200190a1565b6003546001600160a01b031690565b6003546001600160a01b0316331490565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107ea5780601f106107bf576101008083540402835291602001916107ea565b61109f336110e8565b6110a857600080fd5b610c668161176f565b610d8c336117b7565b60006107fe83836117ff565b6000806110d43385856112d5565b90506110e0848261181c565b949350505050565b6000610c7c60098363ffffffff61169c16565b600a546001600160a01b031681565b600c5460408051631eed540360e11b815260048101849052600060248201819052604482018190528251909384936001600160a01b0390911692633ddaa8069260648083019392829003018186803b15801561116557600080fd5b505afa158015611179573d6000803e3d6000fd5b505050506040513d604081101561118f57600080fd5b5080516020909101519092509050915091565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6111d561102a565b6111de57600080fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b61120861102a565b61121157600080fd5b806001600160a01b031663223668446040518163ffffffff1660e01b815260040160206040518083038186803b15801561124a57600080fd5b505afa15801561125e573d6000803e3d6000fd5b505050506040513d602081101561127457600080fd5b5050600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6112a061102a565b6112a957600080fd5b610c6681611839565b60085460009060ff16156112c557600080fd5b6107fe83836118a8565b3b151590565b60008060006112e58487876108ea565b9150915060008211801561136d5750600b546040805163639e625760e11b815233600482015290516001600160a01b039092169163c73cc4ae91602480820192602092909190829003018186803b15801561133f57600080fd5b505afa158015611353573d6000803e3d6000fd5b505050506040513d602081101561136957600080fd5b5051155b1561145357801580611396575061138386610d8e565b611393858463ffffffff6115d816565b11155b6113e7576040805162461bcd60e51b815260206004820181905260248201527f4e6f7420656e6f7567682062616c616e636520746f2070617920545820666565604482015290519081900360640190fd5b6001600160a01b03861633141561141457600d5461140e906001600160a01b03168361181c565b5061142e565b600d5461142c9087906001600160a01b03168461145d565b505b8061144857611443848363ffffffff61191216565b61144a565b835b925050506107fe565b5091949350505050565b60085460009060ff161561147057600080fd5b6110e0848484611927565b60085460009060ff161561148e57600080fd5b6107fe83836119de565b60085460009060ff16156114ab57600080fd5b60006114b7858561181c565b9050846001600160a01b0316336001600160a01b03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1686866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561153357818101518382015260200161151b565b50505050905090810190601f1680156115605780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3611577856112cf565b156110e057611587858585611a7a565b6110e0576040805162461bcd60e51b815260206004820152601860248201527f436f6e74726163742066616c6c6261636b206661696c65640000000000000000604482015290519081900360640190fd5b6000828201838110156107fe57600080fd5b6001600160a01b0382166115fd57600080fd5b600254611610908263ffffffff6115d816565b6002556001600160a01b03821660009081526020819052604090205461163c908263ffffffff6115d816565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610c663382611bc3565b60006001600160a01b0382166116b157600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6116e260078263ffffffff611c6a16565b6040516001600160a01b038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b6117238282611cb2565b5050565b61173860078263ffffffff611d6216565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b61178060098263ffffffff611d6216565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6117c860098263ffffffff611c6a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60085460009060ff161561181257600080fd5b6107fe8383611dae565b60085460009060ff161561182f57600080fd5b6107fe8383611df7565b6001600160a01b03811661184c57600080fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b0383166118bd57600080fd5b3360008181526001602090815260408083206001600160a01b0388168085529083529281902086905580518681529051929392600080516020611efa833981519152929181900390910190a350600192915050565b60008282111561192157600080fd5b50900390565b6001600160a01b038316600090815260016020908152604080832033845290915281205461195b908363ffffffff61191216565b6001600160a01b038516600090815260016020908152604080832033845290915290205561198a848484611e0d565b6001600160a01b038416600081815260016020908152604080832033808552908352928190205481519081529051929392600080516020611efa833981519152929181900390910190a35060019392505050565b60006001600160a01b0383166119f357600080fd5b3360009081526001602090815260408083206001600160a01b0387168452909152902054611a27908363ffffffff6115d816565b3360008181526001602090815260408083206001600160a01b038916808552908352928190208590558051948552519193600080516020611efa833981519152929081900390910190a350600192915050565b604051635260769b60e11b815233600482018181526024830185905260606044840190815284516064850152845160009488946001600160a01b0386169463a4c0ed369491938a938a939160849091019060208501908083838e5b83811015611aed578181015183820152602001611ad5565b50505050905090810190601f168015611b1a5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015611b3b57600080fd5b505af1158015611b4f573d6000803e3d6000fd5b505050506040513d6020811015611b6557600080fd5b5051611bb8576040805162461bcd60e51b815260206004820152601860248201527f436f6e74726163742046616c6c6261636b206661696c65640000000000000000604482015290519081900360640190fd5b506001949350505050565b6001600160a01b038216611bd657600080fd5b600254611be9908263ffffffff61191216565b6002556001600160a01b038216600090815260208190526040902054611c15908263ffffffff61191216565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b6001600160a01b038116611c7d57600080fd5b611c87828261169c565b611c9057600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b0382166000908152600160209081526040808320338452909152902054611ce6908263ffffffff61191216565b6001600160a01b0383166000908152600160209081526040808320338452909152902055611d148282611bc3565b6001600160a01b038216600081815260016020908152604080832033808552908352928190205481519081529051929392600080516020611efa833981519152929181900390910190a35050565b6001600160a01b038116611d7557600080fd5b611d7f828261169c565b15611d8957600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038316611dc357600080fd5b3360009081526001602090815260408083206001600160a01b0387168452909152902054611a27908363ffffffff61191216565b6000611e04338484611e0d565b50600192915050565b6001600160a01b038216611e2057600080fd5b6001600160a01b038316600090815260208190526040902054611e49908263ffffffff61191216565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611e7e908263ffffffff6115d816565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505056fe43616e6e6f7420696e63726561736520737570706c79206265796f6e64206361708c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a265627a7a72315820377577b98803c2210dfa17f6feaf68d6a856726073543a35d4a8526c1f78cc9f64736f6c63430005100032a265627a7a723158205dcde01549ddde602299e865f7e0fb1b7573fce830fb206e4876dcdc782c1ebc64736f6c63430005100032",
  "sourceMap": "2487:4397:3:-;;;2711:126;8:9:-1;5:2;;;30:1;27;20:12;5:2;2711:126:3;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2711:126:3;2787:21;:46;;-1:-1:-1;;;;;;2787:46:3;-1:-1:-1;;;;;2787:46:3;;;;;;;;;2487:4397;;;-1:-1:-1;2487:4397:3;;",
  "deployedSourceMap": "2487:4397:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2487:4397:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4315:818;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;4315:818:3;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4315:818:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4315:818:3;;;;;;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;4315:818:3;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4315:818:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4315:818:3;;;;;;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;4315:818:3;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4315:818:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4315:818:3;;;;;;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;4315:818:3;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4315:818:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4315:818:3;;;;;;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;4315:818:3;;-1:-1:-1;4315:818:3;-1:-1:-1;4315:818:3;:::i;:::-;;2527:20;;;:::i;:::-;;;;-1:-1:-1;;;;;2527:20:3;;;;;;;;;;;;;;3415:577;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3415:577:3;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3415:577:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3415:577:3;;;;;;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;3415:577:3;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3415:577:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3415:577:3;;;;;;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;3415:577:3;;;;;;;-1:-1:-1;;;;;3415:577:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3415:577:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3415:577:3;;;;;;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;3415:577:3;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3415:577:3;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3415:577:3;;;;;;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;3415:577:3;;-1:-1:-1;3415:577:3;-1:-1:-1;3415:577:3;:::i;2550:19::-;;;:::i;4315:818::-;4599:4;;-1:-1:-1;;;;;4599:4:3;4607:10;4599:18;4591:57;;;;;-1:-1:-1;;;4591:57:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4683:30;4736:7;-1:-1:-1;;;;;4736:13:3;;:15;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4736:15:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4736:15:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4736:15:3;;-1:-1:-1;4761:9:3;4756:162;4776:19;;;4756:162;;;4807:10;-1:-1:-1;;;;;4807:25:3;;4838:8;;4847:1;4838:11;;;;;;;;;;;;;-1:-1:-1;;;;;4838:11:3;4855:7;;4863:1;4855:10;;;;;;;;;;;;;4871:12;;4884:1;4871:15;;;;;;;;;;;;;-1:-1:-1;;;;;4871:15:3;;4900:7;4807:106;;;;;;;;;;;;;-1:-1:-1;;;;;4807:106:3;-1:-1:-1;;;;;4807:106:3;;;;;;;;;;;-1:-1:-1;;;;;4807:106:3;;-1:-1:-1;;;;;4807:106:3;;;;;;;-1:-1:-1;;;;;4807:106:3;-1:-1:-1;;;;;4807:106:3;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4807:106:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4807:106:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;4797:3:3;;4756:162;;;-1:-1:-1;4921:39:3;;;-1:-1:-1;;;4921:39:3;;-1:-1:-1;;;;;4921:39:3;;;;;;;;;;;;;;;;;;;:19;;;;;4941:9;;;;4952:7;;4921:39;;;;;4941:9;;;;4921: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;;4921:39:3;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4921:39:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4921:39:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;4986:60:3;;;-1:-1:-1;;;4986:60:3;;5022:4;4986:60;;;;-1:-1:-1;;;;;4986:60:3;;;;;;;;;:27;;;;;;:60;;;;;4921:39;;4986:60;;;;;;;;-1:-1:-1;4986:27:3;:60;;;5:2:-1;;;;30:1;27;20:12;5:2;4986:60:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4986:60:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;5068:4:3;:17;;-1:-1:-1;;;;;;5068:17:3;;;5094:35;;;-1:-1:-1;;;;;5094:35:3;;;;;;;;;;;4986:60;5094:35;;;4315:818;;;;;;;;;;:::o;2527:20::-;;;-1:-1:-1;;;;;2527:20:3;;:::o;3415:577::-;3713:7;3814:174;3829:10;;3814:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;3814:174:3;;;;;;3845:12;;3814:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;3814:174:3;;;;;;3863:4;3873:8;3887:9;3902:11;3919:9;;3814:174;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;3814:174:3;;;;;;3934:18;3958:25;;3814:174;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3814:9:3;;-1:-1:-1;;;3814:174:3:i;:::-;3804:184;3415:577;-1:-1:-1;;;;;;;;;;;;;;3415:577:3:o;2550:19::-;;;-1:-1:-1;;;;;2550:19:3;;:::o;5698:1184::-;6057:4;;5994:7;;-1:-1:-1;;;;;6057:4:3;:18;6049:50;;;;;-1:-1:-1;;;6049:50:3;;;;;;;;;;;;-1:-1:-1;;;6049:50:3;;;;;;;;;;;;;;;6135:25;:32;6115:9;:16;:52;6103:101;;;;;-1:-1:-1;;;6103:101:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;6278:22;6322:10;6337:12;6354:4;6363:8;6376:9;6398:1;6303:101;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;6303:101:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-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;6303:101:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6303:101:3;;;;;;;;;;;;;;;;;;;;;;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;6303:101:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;6460:21:3;;6430:53;;;-1:-1:-1;;;6430:53:3;;-1:-1:-1;;;;;6460:21:3;;;6430:53;;;;;;6278:126;;-1:-1:-1;6430:21:3;;;;;;:53;;;;;6460:21;;6430:53;;;;;;;;6460:21;6430;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;6430:53:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6430:53:3;;;;6487:11;-1:-1:-1;;;;;6487:26:3;;:28;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6487:28:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;6558:21:3;;6520:61;;;-1:-1:-1;;;6520:61:3;;-1:-1:-1;;;;;6558:21:3;;;6520:61;;;;;;:29;;;;-1:-1:-1;6520:29:3;;-1:-1:-1;6520:61:3;;;;;6558:21;;6520:61;;;;;;;;6558:21;6520:29;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;6520:61:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;6595:21:3;;:157;;-1:-1:-1;;;6595:157:3;;-1:-1:-1;;;;;6595:157:3;;;;;;;;;;;;;;;;6671:10;6595:157;;;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;;;-1:-1:-1;6595:33:3;;-1:-1:-1;6633:11:3;;6649:17;;6671:10;;6686:9;;6700:18;;6723:25;;6595:157;;;;;;;;;;;;;;;;;;: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;6595:157:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;6595:157:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6595:157:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6595:157:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6595:157:3;6586:6;:166;;-1:-1:-1;;;;;;6586:166:3;-1:-1:-1;;;;;6586:166:3;;;;;;;6757:38;;;-1:-1:-1;;;6757:38:3;;6787:6;;;6757:38;;;;;:21;;;;;;:38;;;;;6586:6;;6757:38;;;;;;6586:6;6757:21;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;6757:38:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;6800:4:3;:17;;-1:-1:-1;;;;;;6800:17:3;6807:10;6800:17;;;-1:-1:-1;;6800:4:3;6842:6;6827:23;;;-1:-1:-1;;;;;6842:6:3;;;;6827:23;;;;;;;;;;;;-1:-1:-1;;6870:6:3;;-1:-1:-1;;;;;6870:6:3;5698:1184;;;;;;;;;;;:::o;2487:4397::-;;;;;;;;:::o",
  "source": "pragma solidity >0.5.4;\n\nimport \"@daostack/arc/contracts/controller/Controller.sol\";\nimport \"@daostack/infra/contracts/Reputation.sol\";\n\nimport \"../token/GoodDollar.sol\";\nimport \"../identity/IdentityGuard.sol\";\nimport \"../dao/schemes/FeeFormula.sol\";\nimport \"./DaoCreator.sol\";\n\n/**\n * @title Contract for adding founders to the DAO. Separated from DaoCreator to reduce\n * contract sizes\n */\ncontract AddFoundersGoodDollarWithRep {\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\t// nativeReputation.transferOwnership(address(controller)); //GReputation doesnt have ownership\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 DaoCreatorGoodDollarWithRep {\n\tAvatar public avatar;\n\taddress public lock;\n\n\tevent NewOrg(address _avatar);\n\tevent InitialSchemesSet(address _avatar);\n\n\tAddFoundersGoodDollarWithRep private addFoundersGoodDollar;\n\n\tconstructor(AddFoundersGoodDollarWithRep _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\tReputation _reputation,\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_reputation,\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\tReputation _nativeReputation,\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\t// require(_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\n\t\t// renounce minter\n\t\tnativeToken.addMinter(address(addFoundersGoodDollar));\n\t\tnativeToken.renounceMinter();\n\n\t\tnativeToken.transferOwnership(address(addFoundersGoodDollar));\n\n\t\tavatar = addFoundersGoodDollar.addFounders(\n\t\t\tnativeToken,\n\t\t\t_nativeReputation,\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/DaoCreator2.sol",
  "ast": {
    "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/DaoCreator2.sol",
    "exportedSymbols": {
      "AddFoundersGoodDollarWithRep": [
        1107
      ],
      "DaoCreatorGoodDollarWithRep": [
        1379
      ]
    },
    "id": 1380,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 909,
        "literals": [
          "solidity",
          ">",
          "0.5",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:3"
      },
      {
        "absolutePath": "@daostack/arc/contracts/controller/Controller.sol",
        "file": "@daostack/arc/contracts/controller/Controller.sol",
        "id": 910,
        "nodeType": "ImportDirective",
        "scope": 1380,
        "sourceUnit": 9998,
        "src": "25:59:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/Reputation.sol",
        "file": "@daostack/infra/contracts/Reputation.sol",
        "id": 911,
        "nodeType": "ImportDirective",
        "scope": 1380,
        "sourceUnit": 12260,
        "src": "85:50:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/token/GoodDollar.sol",
        "file": "../token/GoodDollar.sol",
        "id": 912,
        "nodeType": "ImportDirective",
        "scope": 1380,
        "sourceUnit": 7634,
        "src": "137:33:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/identity/IdentityGuard.sol",
        "file": "../identity/IdentityGuard.sol",
        "id": 913,
        "nodeType": "ImportDirective",
        "scope": 1380,
        "sourceUnit": 5735,
        "src": "171:39:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/schemes/FeeFormula.sol",
        "file": "../dao/schemes/FeeFormula.sol",
        "id": 914,
        "nodeType": "ImportDirective",
        "scope": 1380,
        "sourceUnit": 2634,
        "src": "211:39:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/DaoCreator.sol",
        "file": "./DaoCreator.sol",
        "id": 915,
        "nodeType": "ImportDirective",
        "scope": 1380,
        "sourceUnit": 908,
        "src": "251:26:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "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": 1107,
        "linearizedBaseContracts": [
          1107
        ],
        "name": "AddFoundersGoodDollarWithRep",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 961,
              "nodeType": "Block",
              "src": "514:253:3",
              "statements": [
                {
                  "assignments": [
                    925
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 925,
                      "name": "controller",
                      "nodeType": "VariableDeclaration",
                      "scope": 961,
                      "src": "518:21:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Controller_$9997",
                        "typeString": "contract Controller"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 924,
                        "name": "Controller",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9997,
                        "src": "518:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 930,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 928,
                        "name": "_avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 917,
                        "src": "557:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      ],
                      "id": 927,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "542:14:3",
                      "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": 926,
                        "name": "Controller",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9997,
                        "src": "546:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      }
                    },
                    "id": 929,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "542:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Controller_$9997",
                      "typeString": "contract Controller"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "518:47:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 934,
                        "name": "_sender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 919,
                        "src": "599:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 936,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "619:1:3",
                            "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": 935,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "611:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": "bytes32"
                        },
                        "id": 937,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "611:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30783030303030303166",
                            "id": 939,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "633:10:3",
                            "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": 938,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "626:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes4_$",
                            "typeString": "type(bytes4)"
                          },
                          "typeName": "bytes4"
                        },
                        "id": 940,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "626:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 942,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 917,
                            "src": "657:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 941,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "649:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 943,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "649:16:3",
                        "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": 931,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 925,
                        "src": "569:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      },
                      "id": 933,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "registerScheme",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9096,
                      "src": "569:25:3",
                      "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": 944,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "569:100:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 945,
                  "nodeType": "ExpressionStatement",
                  "src": "569:100:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 950,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18117,
                            "src": "709:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                              "typeString": "contract AddFoundersGoodDollarWithRep"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                              "typeString": "contract AddFoundersGoodDollarWithRep"
                            }
                          ],
                          "id": 949,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "701:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 951,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "701:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 953,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 917,
                            "src": "724:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "716:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 954,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "716:16:3",
                        "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": 946,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 925,
                        "src": "673:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      },
                      "id": 948,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "unregisterScheme",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9160,
                      "src": "673:27:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address,address) external returns (bool)"
                      }
                    },
                    "id": 955,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "673:60:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 956,
                  "nodeType": "ExpressionStatement",
                  "src": "673:60:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 958,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 925,
                        "src": "752:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      ],
                      "id": 957,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "744:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 959,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "744:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 923,
                  "id": 960,
                  "nodeType": "Return",
                  "src": "737:26:3"
                }
              ]
            },
            "documentation": null,
            "id": 962,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "create",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 920,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 917,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 962,
                  "src": "449:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$8541",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 916,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8541,
                    "src": "449:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 919,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 962,
                  "src": "465:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 918,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "465:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "448:33:3"
            },
            "returnParameters": {
              "id": 923,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 922,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 962,
                  "src": "504:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 921,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "504:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "503:9:3"
            },
            "scope": 1107,
            "src": "433:334:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1105,
              "nodeType": "Block",
              "src": "1312:1075:3",
              "statements": [
                {
                  "assignments": [
                    982
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 982,
                      "name": "avatar",
                      "nodeType": "VariableDeclaration",
                      "scope": 1105,
                      "src": "1316:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Avatar_$8541",
                        "typeString": "contract Avatar"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 981,
                        "name": "Avatar",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 8541,
                        "src": "1316:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 989,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "476f6f64446f6c6c6172",
                        "id": 985,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1343:12:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_33b56660e273ec0b5fe5bdc778b5778c5c4557efc9e1532b7177cc3a3803c64a",
                          "typeString": "literal_string \"GoodDollar\""
                        },
                        "value": "GoodDollar"
                      },
                      {
                        "argumentTypes": null,
                        "id": 986,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 964,
                        "src": "1357:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 987,
                        "name": "nativeReputation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 966,
                        "src": "1370:16:3",
                        "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": 984,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "1332:10:3",
                      "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": 983,
                        "name": "Avatar",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 8541,
                        "src": "1336:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      }
                    },
                    "id": 988,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1332:55:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1316:71:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 994,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 982,
                            "src": "1442:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 993,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1434:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 995,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1434:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 996,
                        "name": "_avatarTokenAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 973,
                        "src": "1451:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 990,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 964,
                        "src": "1417:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 992,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7430,
                      "src": "1417:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 997,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1417:53:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 998,
                  "nodeType": "ExpressionStatement",
                  "src": "1417:53:3"
                },
                {
                  "body": {
                    "id": 1039,
                    "nodeType": "Block",
                    "src": "1557:227:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1017,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1011,
                                  "name": "_founders",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 971,
                                  "src": "1575:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 1013,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1012,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1000,
                                  "src": "1585:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1575:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1015,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1599:1:3",
                                    "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": 1014,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1591:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 1016,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1591:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1575:26:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "466f756e6465722063616e6e6f74206265207a65726f2061646472657373",
                              "id": 1018,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1607:32:3",
                              "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": 1010,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              18010,
                              18011
                            ],
                            "referencedDeclaration": 18011,
                            "src": "1562:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1562:82:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1020,
                        "nodeType": "ExpressionStatement",
                        "src": "1562:82:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1021,
                              "name": "_foundersReputationAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 976,
                              "src": "1653:25:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 1023,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1022,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1000,
                              "src": "1679:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1653:28:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1024,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1684:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1653:32:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1038,
                        "nodeType": "IfStatement",
                        "src": "1649:131:3",
                        "trueBody": {
                          "id": 1037,
                          "nodeType": "Block",
                          "src": "1687:93:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1029,
                                      "name": "_founders",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 971,
                                      "src": "1721:9:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 1031,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1030,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1000,
                                      "src": "1731:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1721:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1032,
                                      "name": "_foundersReputationAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 976,
                                      "src": "1740:25:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 1034,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1033,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1000,
                                      "src": "1766:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1740:28:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1026,
                                    "name": "nativeReputation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 966,
                                    "src": "1693:16:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Reputation_$12259",
                                      "typeString": "contract Reputation"
                                    }
                                  },
                                  "id": 1028,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12021,
                                  "src": "1693:21:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,uint256) external returns (bool)"
                                  }
                                },
                                "id": 1035,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1693:81:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1036,
                              "nodeType": "ExpressionStatement",
                              "src": "1693:81:3"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1006,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1003,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1000,
                      "src": "1530:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1004,
                        "name": "_founders",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 971,
                        "src": "1534:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 1005,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1534:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1530:20:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1040,
                  "initializationExpression": {
                    "assignments": [
                      1000
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1000,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 1040,
                        "src": "1515:9:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 999,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1515:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1002,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1001,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1527:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1515:13:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1008,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "1552:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1007,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1000,
                        "src": "1552:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1009,
                    "nodeType": "ExpressionStatement",
                    "src": "1552:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "1510:274:3"
                },
                {
                  "assignments": [
                    1042
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1042,
                      "name": "controller",
                      "nodeType": "VariableDeclaration",
                      "scope": 1105,
                      "src": "1811:30:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                        "typeString": "contract ControllerInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1041,
                        "name": "ControllerInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 10230,
                        "src": "1811:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                          "typeString": "contract ControllerInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1050,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1045,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 982,
                            "src": "1875:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1046,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18007,
                              "src": "1883:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1047,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1883:10:3",
                            "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": 1044,
                          "name": "create",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 962,
                          "src": "1868:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_Avatar_$8541_$_t_address_$returns$_t_address_$",
                            "typeString": "function (contract Avatar,address) returns (address)"
                          }
                        },
                        "id": 1048,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1868:26:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1043,
                      "name": "ControllerInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10230,
                      "src": "1844:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ControllerInterface_$10230_$",
                        "typeString": "type(contract ControllerInterface)"
                      }
                    },
                    "id": 1049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1844:54:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                      "typeString": "contract ControllerInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1811:87:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1055,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 982,
                            "src": "1986:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 1054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1978:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1056,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1978:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1051,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 964,
                        "src": "1950:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 1053,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setFeeRecipient",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7550,
                      "src": "1950:27:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 1057,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1950:44:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1058,
                  "nodeType": "ExpressionStatement",
                  "src": "1950:44:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1063,
                            "name": "controller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1042,
                            "src": "2032:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                              "typeString": "contract ControllerInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                              "typeString": "contract ControllerInterface"
                            }
                          ],
                          "id": 1062,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2024:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1064,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2024:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1059,
                        "name": "avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 982,
                        "src": "1999:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      },
                      "id": 1061,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17229,
                      "src": "1999:24:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 1065,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1999:45:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1066,
                  "nodeType": "ExpressionStatement",
                  "src": "1999:45:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1071,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 982,
                            "src": "2086:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 1070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2078:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1072,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2078:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1067,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 964,
                        "src": "2048:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 1069,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17229,
                      "src": "2048:29:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 1073,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2048:46:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1074,
                  "nodeType": "ExpressionStatement",
                  "src": "2048:46:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1078,
                        "name": "_sender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 968,
                        "src": "2236:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1075,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 964,
                        "src": "2214:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 1077,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16638,
                      "src": "2214:21:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 1079,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2214:30:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1080,
                  "nodeType": "ExpressionStatement",
                  "src": "2214:30:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1085,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 982,
                            "src": "2278:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 1084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2270:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1086,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2270:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1081,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 964,
                        "src": "2248:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 1083,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16638,
                      "src": "2248:21:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 1087,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2248:38:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1088,
                  "nodeType": "ExpressionStatement",
                  "src": "2248:38:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1093,
                            "name": "controller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1042,
                            "src": "2320:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                              "typeString": "contract ControllerInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                              "typeString": "contract ControllerInterface"
                            }
                          ],
                          "id": 1092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2312:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1094,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2312:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1089,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 964,
                        "src": "2290:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 1091,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16638,
                      "src": "2290:21:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 1095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2290:42:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1096,
                  "nodeType": "ExpressionStatement",
                  "src": "2290:42:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1097,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 964,
                        "src": "2336:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 1099,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "renounceMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16647,
                      "src": "2336:26:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 1100,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2336:28:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1101,
                  "nodeType": "ExpressionStatement",
                  "src": "2336:28:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 1102,
                        "name": "avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 982,
                        "src": "2376:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      }
                    ],
                    "id": 1103,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "2375:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "functionReturnParameters": 980,
                  "id": 1104,
                  "nodeType": "Return",
                  "src": "2368:15:3"
                }
              ]
            },
            "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": 1106,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addFounders",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 977,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 964,
                  "name": "nativeToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 1106,
                  "src": "1106:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_GoodDollar_$7633",
                    "typeString": "contract GoodDollar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 963,
                    "name": "GoodDollar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7633,
                    "src": "1106:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_GoodDollar_$7633",
                      "typeString": "contract GoodDollar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 966,
                  "name": "nativeReputation",
                  "nodeType": "VariableDeclaration",
                  "scope": 1106,
                  "src": "1132:27:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Reputation_$12259",
                    "typeString": "contract Reputation"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 965,
                    "name": "Reputation",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12259,
                    "src": "1132:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Reputation_$12259",
                      "typeString": "contract Reputation"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 968,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 1106,
                  "src": "1163:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 967,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1163:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 971,
                  "name": "_founders",
                  "nodeType": "VariableDeclaration",
                  "scope": 1106,
                  "src": "1182:26:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 969,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1182:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 970,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1182:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 973,
                  "name": "_avatarTokenAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1106,
                  "src": "1212:26:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 972,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1212:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 976,
                  "name": "_foundersReputationAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1106,
                  "src": "1242:42:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 974,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1242:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 975,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1242:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1102:185:3"
            },
            "returnParameters": {
              "id": 980,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 979,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1106,
                  "src": "1304:6:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$8541",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 978,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8541,
                    "src": "1304:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1303:8:3"
            },
            "scope": 1107,
            "src": "1082:1305:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1380,
        "src": "392:1997:3"
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          7633
        ],
        "contractKind": "contract",
        "documentation": "@title Genesis Scheme that creates organizations. Taken and modified from @daostack.",
        "fullyImplemented": true,
        "id": 1379,
        "linearizedBaseContracts": [
          1379
        ],
        "name": "DaoCreatorGoodDollarWithRep",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1109,
            "name": "avatar",
            "nodeType": "VariableDeclaration",
            "scope": 1379,
            "src": "2527:20:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Avatar_$8541",
              "typeString": "contract Avatar"
            },
            "typeName": {
              "contractScope": null,
              "id": 1108,
              "name": "Avatar",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8541,
              "src": "2527:6:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Avatar_$8541",
                "typeString": "contract Avatar"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1111,
            "name": "lock",
            "nodeType": "VariableDeclaration",
            "scope": 1379,
            "src": "2550:19:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 1110,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "2550:7:3",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1115,
            "name": "NewOrg",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1114,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1113,
                  "indexed": false,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 1115,
                  "src": "2586:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1112,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2586:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2585:17:3"
            },
            "src": "2573:30:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1119,
            "name": "InitialSchemesSet",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1118,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1117,
                  "indexed": false,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 1119,
                  "src": "2629:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1116,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2629:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2628:17:3"
            },
            "src": "2605:41:3"
          },
          {
            "constant": false,
            "id": 1121,
            "name": "addFoundersGoodDollar",
            "nodeType": "VariableDeclaration",
            "scope": 1379,
            "src": "2649:58:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
              "typeString": "contract AddFoundersGoodDollarWithRep"
            },
            "typeName": {
              "contractScope": null,
              "id": 1120,
              "name": "AddFoundersGoodDollarWithRep",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1107,
              "src": "2649:28:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                "typeString": "contract AddFoundersGoodDollarWithRep"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1130,
              "nodeType": "Block",
              "src": "2783:54:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1126,
                      "name": "addFoundersGoodDollar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1121,
                      "src": "2787:21:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                        "typeString": "contract AddFoundersGoodDollarWithRep"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1127,
                      "name": "_addFoundersGoodDollar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1123,
                      "src": "2811:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                        "typeString": "contract AddFoundersGoodDollarWithRep"
                      }
                    },
                    "src": "2787:46:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                      "typeString": "contract AddFoundersGoodDollarWithRep"
                    }
                  },
                  "id": 1129,
                  "nodeType": "ExpressionStatement",
                  "src": "2787:46:3"
                }
              ]
            },
            "documentation": null,
            "id": 1131,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1124,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1123,
                  "name": "_addFoundersGoodDollar",
                  "nodeType": "VariableDeclaration",
                  "scope": 1131,
                  "src": "2723:51:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                    "typeString": "contract AddFoundersGoodDollarWithRep"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1122,
                    "name": "AddFoundersGoodDollarWithRep",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1107,
                    "src": "2723:28:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                      "typeString": "contract AddFoundersGoodDollarWithRep"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2722:53:3"
            },
            "returnParameters": {
              "id": 1125,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2783:0:3"
            },
            "scope": 1379,
            "src": "2711:126:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1168,
              "nodeType": "Block",
              "src": "3722:270:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1157,
                        "name": "_tokenName",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1133,
                        "src": "3829:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1158,
                        "name": "_tokenSymbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1135,
                        "src": "3845:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1159,
                        "name": "_cap",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1137,
                        "src": "3863:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1160,
                        "name": "_formula",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1139,
                        "src": "3873:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_FeeFormula_$2633",
                          "typeString": "contract FeeFormula"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1161,
                        "name": "_identity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1141,
                        "src": "3887:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Identity_$5447",
                          "typeString": "contract Identity"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1162,
                        "name": "_reputation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1143,
                        "src": "3902:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Reputation_$12259",
                          "typeString": "contract Reputation"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1163,
                        "name": "_founders",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1146,
                        "src": "3919:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1164,
                        "name": "_avatarTokenAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1148,
                        "src": "3934:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1165,
                        "name": "_foundersReputationAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1151,
                        "src": "3958:25:3",
                        "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_contract$_Reputation_$12259",
                          "typeString": "contract Reputation"
                        },
                        {
                          "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": 1156,
                      "name": "_forgeOrg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1378,
                      "src": "3814:9:3",
                      "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_contract$_Reputation_$12259_$_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,contract Reputation,address[] memory,uint256,uint256[] memory) returns (address)"
                      }
                    },
                    "id": 1166,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3814:174:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 1155,
                  "id": 1167,
                  "nodeType": "Return",
                  "src": "3804:184:3"
                }
              ]
            },
            "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": 1169,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "forgeOrg",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1152,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1133,
                  "name": "_tokenName",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "3436:26:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1132,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3436:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1135,
                  "name": "_tokenSymbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "3466:28:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1134,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3466:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1137,
                  "name": "_cap",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "3498:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1136,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3498:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1139,
                  "name": "_formula",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "3514:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_FeeFormula_$2633",
                    "typeString": "contract FeeFormula"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1138,
                    "name": "FeeFormula",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2633,
                    "src": "3514:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FeeFormula_$2633",
                      "typeString": "contract FeeFormula"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1141,
                  "name": "_identity",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "3537:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Identity_$5447",
                    "typeString": "contract Identity"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1140,
                    "name": "Identity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5447,
                    "src": "3537:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Identity_$5447",
                      "typeString": "contract Identity"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1143,
                  "name": "_reputation",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "3559:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Reputation_$12259",
                    "typeString": "contract Reputation"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1142,
                    "name": "Reputation",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12259,
                    "src": "3559:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Reputation_$12259",
                      "typeString": "contract Reputation"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1146,
                  "name": "_founders",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "3585:28:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1144,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3585:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 1145,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3585:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1148,
                  "name": "_avatarTokenAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "3617:26:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1147,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3617:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1151,
                  "name": "_foundersReputationAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "3647:44:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1149,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3647:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1150,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3647:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3432:262:3"
            },
            "returnParameters": {
              "id": 1155,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1154,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "3713:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1153,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3713:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3712:9:3"
            },
            "scope": 1379,
            "src": "3415:577:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1261,
              "nodeType": "Block",
              "src": "4489:644:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1189,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1186,
                          "name": "lock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1111,
                          "src": "4599:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1187,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18007,
                            "src": "4607:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1188,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4607:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "4599:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6573736167652073656e646572206973206e6f74206c6f636b",
                        "id": 1190,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4619:28:3",
                        "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": 1185,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18010,
                        18011
                      ],
                      "referencedDeclaration": 18011,
                      "src": "4591:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1191,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4591:57:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1192,
                  "nodeType": "ExpressionStatement",
                  "src": "4591:57:3"
                },
                {
                  "assignments": [
                    1194
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1194,
                      "name": "controller",
                      "nodeType": "VariableDeclaration",
                      "scope": 1261,
                      "src": "4683:30:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                        "typeString": "contract ControllerInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1193,
                        "name": "ControllerInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 10230,
                        "src": "4683:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                          "typeString": "contract ControllerInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1200,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1196,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1171,
                            "src": "4736:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          },
                          "id": 1197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17178,
                          "src": "4736:13:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 1198,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4736:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1195,
                      "name": "ControllerInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10230,
                      "src": "4716:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ControllerInterface_$10230_$",
                        "typeString": "type(contract ControllerInterface)"
                      }
                    },
                    "id": 1199,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4716:36:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                      "typeString": "contract ControllerInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4683:69:3"
                },
                {
                  "body": {
                    "id": 1229,
                    "nodeType": "Block",
                    "src": "4802:116:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1215,
                                "name": "_schemes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1174,
                                "src": "4838:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 1217,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1216,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1202,
                                "src": "4847:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4838:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1218,
                                "name": "_params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1177,
                                "src": "4855:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                                  "typeString": "bytes32[] calldata"
                                }
                              },
                              "id": 1220,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1219,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1202,
                                "src": "4863:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4855:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1221,
                                "name": "_permissions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1180,
                                "src": "4871:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes4_$dyn_calldata_ptr",
                                  "typeString": "bytes4[] calldata"
                                }
                              },
                              "id": 1223,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1222,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1202,
                                "src": "4884:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4871:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1225,
                                  "name": "_avatar",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1171,
                                  "src": "4900:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Avatar_$8541",
                                    "typeString": "contract Avatar"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Avatar_$8541",
                                    "typeString": "contract Avatar"
                                  }
                                ],
                                "id": 1224,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4892:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 1226,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4892:16:3",
                              "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": 1212,
                              "name": "controller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1194,
                              "src": "4807:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                                "typeString": "contract ControllerInterface"
                              }
                            },
                            "id": 1214,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "registerScheme",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10047,
                            "src": "4807:25:3",
                            "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": 1227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4807:106:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1228,
                        "nodeType": "ExpressionStatement",
                        "src": "4807:106:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1208,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1205,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1202,
                      "src": "4776:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1206,
                        "name": "_schemes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1174,
                        "src": "4780:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      "id": 1207,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4780:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4776:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1230,
                  "initializationExpression": {
                    "assignments": [
                      1202
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1202,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 1230,
                        "src": "4761:9:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1201,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4761:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1204,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1203,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4773:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4761:13:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1210,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4797:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1209,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1202,
                        "src": "4797:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1211,
                    "nodeType": "ExpressionStatement",
                    "src": "4797:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "4756:162:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1234,
                        "name": "_metaData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1182,
                        "src": "4941:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1235,
                        "name": "_avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1171,
                        "src": "4952:7:3",
                        "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": 1231,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1194,
                        "src": "4921:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                          "typeString": "contract ControllerInterface"
                        }
                      },
                      "id": 1233,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "metaData",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10168,
                      "src": "4921:19:3",
                      "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": 1236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4921:39:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1237,
                  "nodeType": "ExpressionStatement",
                  "src": "4921:39:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1242,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18119,
                            "src": "5022:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DaoCreatorGoodDollarWithRep_$1379",
                              "typeString": "contract DaoCreatorGoodDollarWithRep"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DaoCreatorGoodDollarWithRep_$1379",
                              "typeString": "contract DaoCreatorGoodDollarWithRep"
                            }
                          ],
                          "id": 1241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5014:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1243,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5014:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1245,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1171,
                            "src": "5037:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 1244,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5029:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1246,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5029:16:3",
                        "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": 1238,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1194,
                        "src": "4986:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                          "typeString": "contract ControllerInterface"
                        }
                      },
                      "id": 1240,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "unregisterScheme",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10056,
                      "src": "4986:27:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address,address) external returns (bool)"
                      }
                    },
                    "id": 1247,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4986:60:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1248,
                  "nodeType": "ExpressionStatement",
                  "src": "4986:60:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1253,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1249,
                      "name": "lock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1111,
                      "src": "5068:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5083:1:3",
                          "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": 1250,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5075:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 1252,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5075:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "5068:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1254,
                  "nodeType": "ExpressionStatement",
                  "src": "5068:17:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1257,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1171,
                            "src": "5120:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 1256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5112:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1258,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5112:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 1255,
                      "name": "InitialSchemesSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1119,
                      "src": "5094:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 1259,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5094:35:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1260,
                  "nodeType": "EmitStatement",
                  "src": "5089:40:3"
                }
              ]
            },
            "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": 1262,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setSchemes",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1183,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1171,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 1262,
                  "src": "4338:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$8541",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1170,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8541,
                    "src": "4338:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1174,
                  "name": "_schemes",
                  "nodeType": "VariableDeclaration",
                  "scope": 1262,
                  "src": "4356:27:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1172,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4356:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 1173,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4356:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1177,
                  "name": "_params",
                  "nodeType": "VariableDeclaration",
                  "scope": 1262,
                  "src": "4387:26:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1175,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "4387:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 1176,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4387:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1180,
                  "name": "_permissions",
                  "nodeType": "VariableDeclaration",
                  "scope": 1262,
                  "src": "4417:30:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes4_$dyn_calldata_ptr",
                    "typeString": "bytes4[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1178,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "4417:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "id": 1179,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4417:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                      "typeString": "bytes4[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1182,
                  "name": "_metaData",
                  "nodeType": "VariableDeclaration",
                  "scope": 1262,
                  "src": "4451:25:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1181,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4451:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4334:145:3"
            },
            "returnParameters": {
              "id": 1184,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4489:0:3"
            },
            "scope": 1379,
            "src": "4315:818:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1377,
              "nodeType": "Block",
              "src": "6003:879:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1292,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1288,
                          "name": "lock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1111,
                          "src": "6057:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1290,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6073:1:3",
                              "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": 1289,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6065:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 1291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6065:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "6057:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4c6f636b20616c726561647920657869737473",
                        "id": 1293,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6077:21:3",
                        "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": 1287,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18010,
                        18011
                      ],
                      "referencedDeclaration": 18011,
                      "src": "6049:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1294,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6049:50:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1295,
                  "nodeType": "ExpressionStatement",
                  "src": "6049:50:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1301,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1297,
                            "name": "_founders",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1277,
                            "src": "6115:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 1298,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6115:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1299,
                            "name": "_foundersReputationAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1282,
                            "src": "6135:25:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 1300,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6135:32:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6115:52:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "466f756e6465722072657075746174696f6e206d697373696e67",
                        "id": 1302,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6172:28:3",
                        "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": 1296,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18010,
                        18011
                      ],
                      "referencedDeclaration": 18011,
                      "src": "6103:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1303,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6103:101:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1304,
                  "nodeType": "ExpressionStatement",
                  "src": "6103:101:3"
                },
                {
                  "assignments": [
                    1306
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1306,
                      "name": "nativeToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 1377,
                      "src": "6278:22:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_GoodDollar_$7633",
                        "typeString": "contract GoodDollar"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1305,
                        "name": "GoodDollar",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7633,
                        "src": "6278:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1318,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1309,
                        "name": "_tokenName",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1264,
                        "src": "6322:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1310,
                        "name": "_tokenSymbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1266,
                        "src": "6337:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1311,
                        "name": "_cap",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1268,
                        "src": "6354:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1312,
                        "name": "_formula",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1270,
                        "src": "6363:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_FeeFormula_$2633",
                          "typeString": "contract FeeFormula"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1313,
                        "name": "_identity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1272,
                        "src": "6376:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Identity_$5447",
                          "typeString": "contract Identity"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1315,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6398:1:3",
                            "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": 1314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6390:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1316,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6390:10:3",
                        "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": 1308,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "6303:14:3",
                      "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": 1307,
                        "name": "GoodDollar",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7633,
                        "src": "6307:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      }
                    },
                    "id": 1317,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6303:101:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_GoodDollar_$7633",
                      "typeString": "contract GoodDollar"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6278:126:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1323,
                            "name": "addFoundersGoodDollar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1121,
                            "src": "6460:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                              "typeString": "contract AddFoundersGoodDollarWithRep"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                              "typeString": "contract AddFoundersGoodDollarWithRep"
                            }
                          ],
                          "id": 1322,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6452:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1324,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6452:30:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1319,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1306,
                        "src": "6430:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 1321,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16638,
                      "src": "6430:21:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 1325,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6430:53:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1326,
                  "nodeType": "ExpressionStatement",
                  "src": "6430:53:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1327,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1306,
                        "src": "6487:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 1329,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "renounceMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16647,
                      "src": "6487:26:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 1330,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6487:28:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1331,
                  "nodeType": "ExpressionStatement",
                  "src": "6487:28:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1336,
                            "name": "addFoundersGoodDollar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1121,
                            "src": "6558:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                              "typeString": "contract AddFoundersGoodDollarWithRep"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                              "typeString": "contract AddFoundersGoodDollarWithRep"
                            }
                          ],
                          "id": 1335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6550:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1337,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6550:30:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1332,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1306,
                        "src": "6520:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 1334,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17229,
                      "src": "6520:29:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 1338,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6520:61:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1339,
                  "nodeType": "ExpressionStatement",
                  "src": "6520:61:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1351,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1340,
                      "name": "avatar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1109,
                      "src": "6586:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Avatar_$8541",
                        "typeString": "contract Avatar"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1343,
                          "name": "nativeToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1306,
                          "src": "6633:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_GoodDollar_$7633",
                            "typeString": "contract GoodDollar"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1344,
                          "name": "_nativeReputation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1274,
                          "src": "6649:17:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Reputation_$12259",
                            "typeString": "contract Reputation"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1345,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18007,
                            "src": "6671:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6671:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1347,
                          "name": "_founders",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1277,
                          "src": "6686:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1348,
                          "name": "_avatarTokenAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1279,
                          "src": "6700:18:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1349,
                          "name": "_foundersReputationAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1282,
                          "src": "6723:25:3",
                          "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": 1341,
                          "name": "addFoundersGoodDollar",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1121,
                          "src": "6595:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                            "typeString": "contract AddFoundersGoodDollarWithRep"
                          }
                        },
                        "id": 1342,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "addFounders",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1106,
                        "src": "6595:33:3",
                        "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": 1350,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6595:157:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Avatar_$8541",
                        "typeString": "contract Avatar"
                      }
                    },
                    "src": "6586:166:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "id": 1352,
                  "nodeType": "ExpressionStatement",
                  "src": "6586:166:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1357,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1109,
                            "src": "6787:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 1356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6779:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1358,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6779:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1353,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1306,
                        "src": "6757:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 1355,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addPauser",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16741,
                      "src": "6757:21:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 1359,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6757:38:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1360,
                  "nodeType": "ExpressionStatement",
                  "src": "6757:38:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1364,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1361,
                      "name": "lock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1111,
                      "src": "6800:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1362,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18007,
                        "src": "6807:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1363,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6807:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "6800:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1365,
                  "nodeType": "ExpressionStatement",
                  "src": "6800:17:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1368,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1109,
                            "src": "6842:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 1367,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6834:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1369,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6834:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 1366,
                      "name": "NewOrg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1115,
                      "src": "6827:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 1370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6827:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1371,
                  "nodeType": "EmitStatement",
                  "src": "6822:28:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1373,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1109,
                            "src": "6870:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 1372,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6862:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1374,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6862:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "id": 1375,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "6861:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 1286,
                  "id": 1376,
                  "nodeType": "Return",
                  "src": "6854:24:3"
                }
              ]
            },
            "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": 1378,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_forgeOrg",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1283,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1264,
                  "name": "_tokenName",
                  "nodeType": "VariableDeclaration",
                  "scope": 1378,
                  "src": "5720:24:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1263,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5720:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1266,
                  "name": "_tokenSymbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 1378,
                  "src": "5748:26:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1265,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5748:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1268,
                  "name": "_cap",
                  "nodeType": "VariableDeclaration",
                  "scope": 1378,
                  "src": "5778:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1267,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5778:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1270,
                  "name": "_formula",
                  "nodeType": "VariableDeclaration",
                  "scope": 1378,
                  "src": "5794:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_FeeFormula_$2633",
                    "typeString": "contract FeeFormula"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1269,
                    "name": "FeeFormula",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2633,
                    "src": "5794:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FeeFormula_$2633",
                      "typeString": "contract FeeFormula"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1272,
                  "name": "_identity",
                  "nodeType": "VariableDeclaration",
                  "scope": 1378,
                  "src": "5817:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Identity_$5447",
                    "typeString": "contract Identity"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1271,
                    "name": "Identity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5447,
                    "src": "5817:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Identity_$5447",
                      "typeString": "contract Identity"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1274,
                  "name": "_nativeReputation",
                  "nodeType": "VariableDeclaration",
                  "scope": 1378,
                  "src": "5839:28:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Reputation_$12259",
                    "typeString": "contract Reputation"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1273,
                    "name": "Reputation",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12259,
                    "src": "5839:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Reputation_$12259",
                      "typeString": "contract Reputation"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1277,
                  "name": "_founders",
                  "nodeType": "VariableDeclaration",
                  "scope": 1378,
                  "src": "5871:26:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1275,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5871:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 1276,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5871:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1279,
                  "name": "_avatarTokenAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1378,
                  "src": "5901:26:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1278,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5901:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1282,
                  "name": "_foundersReputationAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1378,
                  "src": "5931:42:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1280,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "5931:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1281,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5931:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5716:260:3"
            },
            "returnParameters": {
              "id": 1286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1285,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1378,
                  "src": "5994:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1284,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5994:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5993:9:3"
            },
            "scope": 1379,
            "src": "5698:1184:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          }
        ],
        "scope": 1380,
        "src": "2487:4397:3"
      }
    ],
    "src": "0:6885:3"
  },
  "legacyAST": {
    "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/DaoCreator2.sol",
    "exportedSymbols": {
      "AddFoundersGoodDollarWithRep": [
        1107
      ],
      "DaoCreatorGoodDollarWithRep": [
        1379
      ]
    },
    "id": 1380,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 909,
        "literals": [
          "solidity",
          ">",
          "0.5",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:3"
      },
      {
        "absolutePath": "@daostack/arc/contracts/controller/Controller.sol",
        "file": "@daostack/arc/contracts/controller/Controller.sol",
        "id": 910,
        "nodeType": "ImportDirective",
        "scope": 1380,
        "sourceUnit": 9998,
        "src": "25:59:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/Reputation.sol",
        "file": "@daostack/infra/contracts/Reputation.sol",
        "id": 911,
        "nodeType": "ImportDirective",
        "scope": 1380,
        "sourceUnit": 12260,
        "src": "85:50:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/token/GoodDollar.sol",
        "file": "../token/GoodDollar.sol",
        "id": 912,
        "nodeType": "ImportDirective",
        "scope": 1380,
        "sourceUnit": 7634,
        "src": "137:33:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/identity/IdentityGuard.sol",
        "file": "../identity/IdentityGuard.sol",
        "id": 913,
        "nodeType": "ImportDirective",
        "scope": 1380,
        "sourceUnit": 5735,
        "src": "171:39:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/schemes/FeeFormula.sol",
        "file": "../dao/schemes/FeeFormula.sol",
        "id": 914,
        "nodeType": "ImportDirective",
        "scope": 1380,
        "sourceUnit": 2634,
        "src": "211:39:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/contracts/dao/DaoCreator.sol",
        "file": "./DaoCreator.sol",
        "id": 915,
        "nodeType": "ImportDirective",
        "scope": 1380,
        "sourceUnit": 908,
        "src": "251:26:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "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": 1107,
        "linearizedBaseContracts": [
          1107
        ],
        "name": "AddFoundersGoodDollarWithRep",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 961,
              "nodeType": "Block",
              "src": "514:253:3",
              "statements": [
                {
                  "assignments": [
                    925
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 925,
                      "name": "controller",
                      "nodeType": "VariableDeclaration",
                      "scope": 961,
                      "src": "518:21:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Controller_$9997",
                        "typeString": "contract Controller"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 924,
                        "name": "Controller",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9997,
                        "src": "518:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 930,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 928,
                        "name": "_avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 917,
                        "src": "557:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      ],
                      "id": 927,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "542:14:3",
                      "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": 926,
                        "name": "Controller",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9997,
                        "src": "546:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      }
                    },
                    "id": 929,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "542:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Controller_$9997",
                      "typeString": "contract Controller"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "518:47:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 934,
                        "name": "_sender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 919,
                        "src": "599:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 936,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "619:1:3",
                            "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": 935,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "611:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes32_$",
                            "typeString": "type(bytes32)"
                          },
                          "typeName": "bytes32"
                        },
                        "id": 937,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "611:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30783030303030303166",
                            "id": 939,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "633:10:3",
                            "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": 938,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "626:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes4_$",
                            "typeString": "type(bytes4)"
                          },
                          "typeName": "bytes4"
                        },
                        "id": 940,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "626:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 942,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 917,
                            "src": "657:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 941,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "649:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 943,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "649:16:3",
                        "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": 931,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 925,
                        "src": "569:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      },
                      "id": 933,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "registerScheme",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9096,
                      "src": "569:25:3",
                      "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": 944,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "569:100:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 945,
                  "nodeType": "ExpressionStatement",
                  "src": "569:100:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 950,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18117,
                            "src": "709:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                              "typeString": "contract AddFoundersGoodDollarWithRep"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                              "typeString": "contract AddFoundersGoodDollarWithRep"
                            }
                          ],
                          "id": 949,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "701:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 951,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "701:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 953,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 917,
                            "src": "724:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "716:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 954,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "716:16:3",
                        "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": 946,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 925,
                        "src": "673:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      },
                      "id": 948,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "unregisterScheme",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9160,
                      "src": "673:27:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address,address) external returns (bool)"
                      }
                    },
                    "id": 955,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "673:60:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 956,
                  "nodeType": "ExpressionStatement",
                  "src": "673:60:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 958,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 925,
                        "src": "752:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Controller_$9997",
                          "typeString": "contract Controller"
                        }
                      ],
                      "id": 957,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "744:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": "address"
                    },
                    "id": 959,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "744:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 923,
                  "id": 960,
                  "nodeType": "Return",
                  "src": "737:26:3"
                }
              ]
            },
            "documentation": null,
            "id": 962,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "create",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 920,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 917,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 962,
                  "src": "449:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$8541",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 916,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8541,
                    "src": "449:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 919,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 962,
                  "src": "465:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 918,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "465:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "448:33:3"
            },
            "returnParameters": {
              "id": 923,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 922,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 962,
                  "src": "504:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 921,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "504:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "503:9:3"
            },
            "scope": 1107,
            "src": "433:334:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 1105,
              "nodeType": "Block",
              "src": "1312:1075:3",
              "statements": [
                {
                  "assignments": [
                    982
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 982,
                      "name": "avatar",
                      "nodeType": "VariableDeclaration",
                      "scope": 1105,
                      "src": "1316:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Avatar_$8541",
                        "typeString": "contract Avatar"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 981,
                        "name": "Avatar",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 8541,
                        "src": "1316:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 989,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "476f6f64446f6c6c6172",
                        "id": 985,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1343:12:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_33b56660e273ec0b5fe5bdc778b5778c5c4557efc9e1532b7177cc3a3803c64a",
                          "typeString": "literal_string \"GoodDollar\""
                        },
                        "value": "GoodDollar"
                      },
                      {
                        "argumentTypes": null,
                        "id": 986,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 964,
                        "src": "1357:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 987,
                        "name": "nativeReputation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 966,
                        "src": "1370:16:3",
                        "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": 984,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "1332:10:3",
                      "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": 983,
                        "name": "Avatar",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 8541,
                        "src": "1336:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      }
                    },
                    "id": 988,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1332:55:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1316:71:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 994,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 982,
                            "src": "1442:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 993,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1434:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 995,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1434:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 996,
                        "name": "_avatarTokenAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 973,
                        "src": "1451:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 990,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 964,
                        "src": "1417:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 992,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mint",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7430,
                      "src": "1417:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 997,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1417:53:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 998,
                  "nodeType": "ExpressionStatement",
                  "src": "1417:53:3"
                },
                {
                  "body": {
                    "id": 1039,
                    "nodeType": "Block",
                    "src": "1557:227:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1017,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1011,
                                  "name": "_founders",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 971,
                                  "src": "1575:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 1013,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1012,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1000,
                                  "src": "1585:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1575:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 1015,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1599:1:3",
                                    "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": 1014,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1591:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": "address"
                                },
                                "id": 1016,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1591:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1575:26:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "466f756e6465722063616e6e6f74206265207a65726f2061646472657373",
                              "id": 1018,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1607:32:3",
                              "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": 1010,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              18010,
                              18011
                            ],
                            "referencedDeclaration": 18011,
                            "src": "1562:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1562:82:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1020,
                        "nodeType": "ExpressionStatement",
                        "src": "1562:82:3"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1021,
                              "name": "_foundersReputationAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 976,
                              "src": "1653:25:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 1023,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1022,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1000,
                              "src": "1679:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1653:28:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1024,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1684:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1653:32:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1038,
                        "nodeType": "IfStatement",
                        "src": "1649:131:3",
                        "trueBody": {
                          "id": 1037,
                          "nodeType": "Block",
                          "src": "1687:93:3",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1029,
                                      "name": "_founders",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 971,
                                      "src": "1721:9:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 1031,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1030,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1000,
                                      "src": "1731:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1721:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 1032,
                                      "name": "_foundersReputationAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 976,
                                      "src": "1740:25:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 1034,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 1033,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1000,
                                      "src": "1766:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1740:28:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1026,
                                    "name": "nativeReputation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 966,
                                    "src": "1693:16:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_Reputation_$12259",
                                      "typeString": "contract Reputation"
                                    }
                                  },
                                  "id": 1028,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12021,
                                  "src": "1693:21:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,uint256) external returns (bool)"
                                  }
                                },
                                "id": 1035,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1693:81:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1036,
                              "nodeType": "ExpressionStatement",
                              "src": "1693:81:3"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1006,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1003,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1000,
                      "src": "1530:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1004,
                        "name": "_founders",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 971,
                        "src": "1534:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 1005,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1534:16:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1530:20:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1040,
                  "initializationExpression": {
                    "assignments": [
                      1000
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1000,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 1040,
                        "src": "1515:9:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 999,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1515:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1002,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1001,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1527:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1515:13:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1008,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "1552:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1007,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1000,
                        "src": "1552:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1009,
                    "nodeType": "ExpressionStatement",
                    "src": "1552:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "1510:274:3"
                },
                {
                  "assignments": [
                    1042
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1042,
                      "name": "controller",
                      "nodeType": "VariableDeclaration",
                      "scope": 1105,
                      "src": "1811:30:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                        "typeString": "contract ControllerInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1041,
                        "name": "ControllerInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 10230,
                        "src": "1811:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                          "typeString": "contract ControllerInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1050,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1045,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 982,
                            "src": "1875:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1046,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18007,
                              "src": "1883:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1047,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1883:10:3",
                            "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": 1044,
                          "name": "create",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 962,
                          "src": "1868:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_Avatar_$8541_$_t_address_$returns$_t_address_$",
                            "typeString": "function (contract Avatar,address) returns (address)"
                          }
                        },
                        "id": 1048,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1868:26:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1043,
                      "name": "ControllerInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10230,
                      "src": "1844:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ControllerInterface_$10230_$",
                        "typeString": "type(contract ControllerInterface)"
                      }
                    },
                    "id": 1049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1844:54:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                      "typeString": "contract ControllerInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1811:87:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1055,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 982,
                            "src": "1986:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 1054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1978:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1056,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1978:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1051,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 964,
                        "src": "1950:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 1053,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setFeeRecipient",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 7550,
                      "src": "1950:27:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 1057,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1950:44:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1058,
                  "nodeType": "ExpressionStatement",
                  "src": "1950:44:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1063,
                            "name": "controller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1042,
                            "src": "2032:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                              "typeString": "contract ControllerInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                              "typeString": "contract ControllerInterface"
                            }
                          ],
                          "id": 1062,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2024:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1064,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2024:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1059,
                        "name": "avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 982,
                        "src": "1999:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      },
                      "id": 1061,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17229,
                      "src": "1999:24:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 1065,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1999:45:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1066,
                  "nodeType": "ExpressionStatement",
                  "src": "1999:45:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1071,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 982,
                            "src": "2086:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 1070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2078:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1072,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2078:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1067,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 964,
                        "src": "2048:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 1069,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17229,
                      "src": "2048:29:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 1073,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2048:46:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1074,
                  "nodeType": "ExpressionStatement",
                  "src": "2048:46:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1078,
                        "name": "_sender",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 968,
                        "src": "2236:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1075,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 964,
                        "src": "2214:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 1077,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16638,
                      "src": "2214:21:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 1079,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2214:30:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1080,
                  "nodeType": "ExpressionStatement",
                  "src": "2214:30:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1085,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 982,
                            "src": "2278:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 1084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2270:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1086,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2270:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1081,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 964,
                        "src": "2248:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 1083,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16638,
                      "src": "2248:21:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 1087,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2248:38:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1088,
                  "nodeType": "ExpressionStatement",
                  "src": "2248:38:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1093,
                            "name": "controller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1042,
                            "src": "2320:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                              "typeString": "contract ControllerInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                              "typeString": "contract ControllerInterface"
                            }
                          ],
                          "id": 1092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2312:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1094,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2312:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1089,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 964,
                        "src": "2290:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 1091,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16638,
                      "src": "2290:21:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 1095,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2290:42:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1096,
                  "nodeType": "ExpressionStatement",
                  "src": "2290:42:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1097,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 964,
                        "src": "2336:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 1099,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "renounceMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16647,
                      "src": "2336:26:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 1100,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2336:28:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1101,
                  "nodeType": "ExpressionStatement",
                  "src": "2336:28:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "id": 1102,
                        "name": "avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 982,
                        "src": "2376:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Avatar_$8541",
                          "typeString": "contract Avatar"
                        }
                      }
                    ],
                    "id": 1103,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "2375:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "functionReturnParameters": 980,
                  "id": 1104,
                  "nodeType": "Return",
                  "src": "2368:15:3"
                }
              ]
            },
            "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": 1106,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addFounders",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 977,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 964,
                  "name": "nativeToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 1106,
                  "src": "1106:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_GoodDollar_$7633",
                    "typeString": "contract GoodDollar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 963,
                    "name": "GoodDollar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7633,
                    "src": "1106:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_GoodDollar_$7633",
                      "typeString": "contract GoodDollar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 966,
                  "name": "nativeReputation",
                  "nodeType": "VariableDeclaration",
                  "scope": 1106,
                  "src": "1132:27:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Reputation_$12259",
                    "typeString": "contract Reputation"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 965,
                    "name": "Reputation",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12259,
                    "src": "1132:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Reputation_$12259",
                      "typeString": "contract Reputation"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 968,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 1106,
                  "src": "1163:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 967,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1163:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 971,
                  "name": "_founders",
                  "nodeType": "VariableDeclaration",
                  "scope": 1106,
                  "src": "1182:26:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 969,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1182:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 970,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1182:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 973,
                  "name": "_avatarTokenAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1106,
                  "src": "1212:26:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 972,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1212:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 976,
                  "name": "_foundersReputationAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1106,
                  "src": "1242:42:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 974,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1242:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 975,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1242:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1102:185:3"
            },
            "returnParameters": {
              "id": 980,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 979,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1106,
                  "src": "1304:6:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$8541",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 978,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8541,
                    "src": "1304:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1303:8:3"
            },
            "scope": 1107,
            "src": "1082:1305:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 1380,
        "src": "392:1997:3"
      },
      {
        "baseContracts": [],
        "contractDependencies": [
          7633
        ],
        "contractKind": "contract",
        "documentation": "@title Genesis Scheme that creates organizations. Taken and modified from @daostack.",
        "fullyImplemented": true,
        "id": 1379,
        "linearizedBaseContracts": [
          1379
        ],
        "name": "DaoCreatorGoodDollarWithRep",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 1109,
            "name": "avatar",
            "nodeType": "VariableDeclaration",
            "scope": 1379,
            "src": "2527:20:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Avatar_$8541",
              "typeString": "contract Avatar"
            },
            "typeName": {
              "contractScope": null,
              "id": 1108,
              "name": "Avatar",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8541,
              "src": "2527:6:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Avatar_$8541",
                "typeString": "contract Avatar"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1111,
            "name": "lock",
            "nodeType": "VariableDeclaration",
            "scope": 1379,
            "src": "2550:19:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 1110,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "2550:7:3",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1115,
            "name": "NewOrg",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1114,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1113,
                  "indexed": false,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 1115,
                  "src": "2586:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1112,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2586:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2585:17:3"
            },
            "src": "2573:30:3"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1119,
            "name": "InitialSchemesSet",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1118,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1117,
                  "indexed": false,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 1119,
                  "src": "2629:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1116,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2629:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2628:17:3"
            },
            "src": "2605:41:3"
          },
          {
            "constant": false,
            "id": 1121,
            "name": "addFoundersGoodDollar",
            "nodeType": "VariableDeclaration",
            "scope": 1379,
            "src": "2649:58:3",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
              "typeString": "contract AddFoundersGoodDollarWithRep"
            },
            "typeName": {
              "contractScope": null,
              "id": 1120,
              "name": "AddFoundersGoodDollarWithRep",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1107,
              "src": "2649:28:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                "typeString": "contract AddFoundersGoodDollarWithRep"
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 1130,
              "nodeType": "Block",
              "src": "2783:54:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1126,
                      "name": "addFoundersGoodDollar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1121,
                      "src": "2787:21:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                        "typeString": "contract AddFoundersGoodDollarWithRep"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 1127,
                      "name": "_addFoundersGoodDollar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1123,
                      "src": "2811:22:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                        "typeString": "contract AddFoundersGoodDollarWithRep"
                      }
                    },
                    "src": "2787:46:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                      "typeString": "contract AddFoundersGoodDollarWithRep"
                    }
                  },
                  "id": 1129,
                  "nodeType": "ExpressionStatement",
                  "src": "2787:46:3"
                }
              ]
            },
            "documentation": null,
            "id": 1131,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1124,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1123,
                  "name": "_addFoundersGoodDollar",
                  "nodeType": "VariableDeclaration",
                  "scope": 1131,
                  "src": "2723:51:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                    "typeString": "contract AddFoundersGoodDollarWithRep"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1122,
                    "name": "AddFoundersGoodDollarWithRep",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1107,
                    "src": "2723:28:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                      "typeString": "contract AddFoundersGoodDollarWithRep"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2722:53:3"
            },
            "returnParameters": {
              "id": 1125,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2783:0:3"
            },
            "scope": 1379,
            "src": "2711:126:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1168,
              "nodeType": "Block",
              "src": "3722:270:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1157,
                        "name": "_tokenName",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1133,
                        "src": "3829:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1158,
                        "name": "_tokenSymbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1135,
                        "src": "3845:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1159,
                        "name": "_cap",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1137,
                        "src": "3863:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1160,
                        "name": "_formula",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1139,
                        "src": "3873:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_FeeFormula_$2633",
                          "typeString": "contract FeeFormula"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1161,
                        "name": "_identity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1141,
                        "src": "3887:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Identity_$5447",
                          "typeString": "contract Identity"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1162,
                        "name": "_reputation",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1143,
                        "src": "3902:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Reputation_$12259",
                          "typeString": "contract Reputation"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1163,
                        "name": "_founders",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1146,
                        "src": "3919:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1164,
                        "name": "_avatarTokenAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1148,
                        "src": "3934:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1165,
                        "name": "_foundersReputationAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1151,
                        "src": "3958:25:3",
                        "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_contract$_Reputation_$12259",
                          "typeString": "contract Reputation"
                        },
                        {
                          "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": 1156,
                      "name": "_forgeOrg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1378,
                      "src": "3814:9:3",
                      "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_contract$_Reputation_$12259_$_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,contract Reputation,address[] memory,uint256,uint256[] memory) returns (address)"
                      }
                    },
                    "id": 1166,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3814:174:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 1155,
                  "id": 1167,
                  "nodeType": "Return",
                  "src": "3804:184:3"
                }
              ]
            },
            "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": 1169,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "forgeOrg",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1152,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1133,
                  "name": "_tokenName",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "3436:26:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1132,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3436:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1135,
                  "name": "_tokenSymbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "3466:28:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1134,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3466:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1137,
                  "name": "_cap",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "3498:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1136,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3498:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1139,
                  "name": "_formula",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "3514:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_FeeFormula_$2633",
                    "typeString": "contract FeeFormula"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1138,
                    "name": "FeeFormula",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2633,
                    "src": "3514:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FeeFormula_$2633",
                      "typeString": "contract FeeFormula"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1141,
                  "name": "_identity",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "3537:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Identity_$5447",
                    "typeString": "contract Identity"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1140,
                    "name": "Identity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5447,
                    "src": "3537:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Identity_$5447",
                      "typeString": "contract Identity"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1143,
                  "name": "_reputation",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "3559:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Reputation_$12259",
                    "typeString": "contract Reputation"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1142,
                    "name": "Reputation",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12259,
                    "src": "3559:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Reputation_$12259",
                      "typeString": "contract Reputation"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1146,
                  "name": "_founders",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "3585:28:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1144,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3585:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 1145,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3585:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1148,
                  "name": "_avatarTokenAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "3617:26:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1147,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3617:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1151,
                  "name": "_foundersReputationAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "3647:44:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1149,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3647:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1150,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3647:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3432:262:3"
            },
            "returnParameters": {
              "id": 1155,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1154,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1169,
                  "src": "3713:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1153,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3713:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3712:9:3"
            },
            "scope": 1379,
            "src": "3415:577:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1261,
              "nodeType": "Block",
              "src": "4489:644:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1189,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1186,
                          "name": "lock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1111,
                          "src": "4599:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1187,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18007,
                            "src": "4607:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1188,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4607:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "4599:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4d6573736167652073656e646572206973206e6f74206c6f636b",
                        "id": 1190,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4619:28:3",
                        "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": 1185,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18010,
                        18011
                      ],
                      "referencedDeclaration": 18011,
                      "src": "4591:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1191,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4591:57:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1192,
                  "nodeType": "ExpressionStatement",
                  "src": "4591:57:3"
                },
                {
                  "assignments": [
                    1194
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1194,
                      "name": "controller",
                      "nodeType": "VariableDeclaration",
                      "scope": 1261,
                      "src": "4683:30:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                        "typeString": "contract ControllerInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1193,
                        "name": "ControllerInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 10230,
                        "src": "4683:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                          "typeString": "contract ControllerInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1200,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1196,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1171,
                            "src": "4736:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          },
                          "id": 1197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owner",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17178,
                          "src": "4736:13:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 1198,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4736:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1195,
                      "name": "ControllerInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10230,
                      "src": "4716:19:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ControllerInterface_$10230_$",
                        "typeString": "type(contract ControllerInterface)"
                      }
                    },
                    "id": 1199,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4716:36:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                      "typeString": "contract ControllerInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4683:69:3"
                },
                {
                  "body": {
                    "id": 1229,
                    "nodeType": "Block",
                    "src": "4802:116:3",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1215,
                                "name": "_schemes",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1174,
                                "src": "4838:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 1217,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1216,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1202,
                                "src": "4847:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4838:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1218,
                                "name": "_params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1177,
                                "src": "4855:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                                  "typeString": "bytes32[] calldata"
                                }
                              },
                              "id": 1220,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1219,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1202,
                                "src": "4863:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4855:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1221,
                                "name": "_permissions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1180,
                                "src": "4871:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes4_$dyn_calldata_ptr",
                                  "typeString": "bytes4[] calldata"
                                }
                              },
                              "id": 1223,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1222,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1202,
                                "src": "4884:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4871:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1225,
                                  "name": "_avatar",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1171,
                                  "src": "4900:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Avatar_$8541",
                                    "typeString": "contract Avatar"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Avatar_$8541",
                                    "typeString": "contract Avatar"
                                  }
                                ],
                                "id": 1224,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4892:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": "address"
                              },
                              "id": 1226,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4892:16:3",
                              "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": 1212,
                              "name": "controller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1194,
                              "src": "4807:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                                "typeString": "contract ControllerInterface"
                              }
                            },
                            "id": 1214,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "registerScheme",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 10047,
                            "src": "4807:25:3",
                            "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": 1227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4807:106:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1228,
                        "nodeType": "ExpressionStatement",
                        "src": "4807:106:3"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1208,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1205,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1202,
                      "src": "4776:1:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1206,
                        "name": "_schemes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1174,
                        "src": "4780:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[] calldata"
                        }
                      },
                      "id": 1207,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4780:15:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4776:19:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1230,
                  "initializationExpression": {
                    "assignments": [
                      1202
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1202,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 1230,
                        "src": "4761:9:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1201,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4761:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1204,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1203,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4773:1:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4761:13:3"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1210,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4797:3:3",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1209,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1202,
                        "src": "4797:1:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1211,
                    "nodeType": "ExpressionStatement",
                    "src": "4797:3:3"
                  },
                  "nodeType": "ForStatement",
                  "src": "4756:162:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1234,
                        "name": "_metaData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1182,
                        "src": "4941:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1235,
                        "name": "_avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1171,
                        "src": "4952:7:3",
                        "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": 1231,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1194,
                        "src": "4921:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                          "typeString": "contract ControllerInterface"
                        }
                      },
                      "id": 1233,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "metaData",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10168,
                      "src": "4921:19:3",
                      "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": 1236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4921:39:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1237,
                  "nodeType": "ExpressionStatement",
                  "src": "4921:39:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1242,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18119,
                            "src": "5022:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_DaoCreatorGoodDollarWithRep_$1379",
                              "typeString": "contract DaoCreatorGoodDollarWithRep"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_DaoCreatorGoodDollarWithRep_$1379",
                              "typeString": "contract DaoCreatorGoodDollarWithRep"
                            }
                          ],
                          "id": 1241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5014:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1243,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5014:13:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1245,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1171,
                            "src": "5037:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 1244,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5029:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1246,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5029:16:3",
                        "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": 1238,
                        "name": "controller",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1194,
                        "src": "4986:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ControllerInterface_$10230",
                          "typeString": "contract ControllerInterface"
                        }
                      },
                      "id": 1240,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "unregisterScheme",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 10056,
                      "src": "4986:27:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (address,address) external returns (bool)"
                      }
                    },
                    "id": 1247,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4986:60:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1248,
                  "nodeType": "ExpressionStatement",
                  "src": "4986:60:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1253,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1249,
                      "name": "lock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1111,
                      "src": "5068:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5083:1:3",
                          "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": 1250,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5075:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 1252,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5075:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "5068:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1254,
                  "nodeType": "ExpressionStatement",
                  "src": "5068:17:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1257,
                            "name": "_avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1171,
                            "src": "5120:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 1256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5112:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1258,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5112:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 1255,
                      "name": "InitialSchemesSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1119,
                      "src": "5094:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 1259,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5094:35:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1260,
                  "nodeType": "EmitStatement",
                  "src": "5089:40:3"
                }
              ]
            },
            "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": 1262,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setSchemes",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1183,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1171,
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "scope": 1262,
                  "src": "4338:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Avatar_$8541",
                    "typeString": "contract Avatar"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1170,
                    "name": "Avatar",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8541,
                    "src": "4338:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1174,
                  "name": "_schemes",
                  "nodeType": "VariableDeclaration",
                  "scope": 1262,
                  "src": "4356:27:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1172,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "4356:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 1173,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4356:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1177,
                  "name": "_params",
                  "nodeType": "VariableDeclaration",
                  "scope": 1262,
                  "src": "4387:26:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1175,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "4387:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 1176,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4387:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1180,
                  "name": "_permissions",
                  "nodeType": "VariableDeclaration",
                  "scope": 1262,
                  "src": "4417:30:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes4_$dyn_calldata_ptr",
                    "typeString": "bytes4[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1178,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "4417:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      }
                    },
                    "id": 1179,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4417:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                      "typeString": "bytes4[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1182,
                  "name": "_metaData",
                  "nodeType": "VariableDeclaration",
                  "scope": 1262,
                  "src": "4451:25:3",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1181,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4451:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4334:145:3"
            },
            "returnParameters": {
              "id": 1184,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4489:0:3"
            },
            "scope": 1379,
            "src": "4315:818:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1377,
              "nodeType": "Block",
              "src": "6003:879:3",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1292,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1288,
                          "name": "lock",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1111,
                          "src": "6057:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1290,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6073:1:3",
                              "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": 1289,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6065:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 1291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6065:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "6057:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4c6f636b20616c726561647920657869737473",
                        "id": 1293,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6077:21:3",
                        "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": 1287,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18010,
                        18011
                      ],
                      "referencedDeclaration": 18011,
                      "src": "6049:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1294,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6049:50:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1295,
                  "nodeType": "ExpressionStatement",
                  "src": "6049:50:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1301,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1297,
                            "name": "_founders",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1277,
                            "src": "6115:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 1298,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6115:16:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1299,
                            "name": "_foundersReputationAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1282,
                            "src": "6135:25:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 1300,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6135:32:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6115:52:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "466f756e6465722072657075746174696f6e206d697373696e67",
                        "id": 1302,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6172:28:3",
                        "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": 1296,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18010,
                        18011
                      ],
                      "referencedDeclaration": 18011,
                      "src": "6103:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1303,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6103:101:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1304,
                  "nodeType": "ExpressionStatement",
                  "src": "6103:101:3"
                },
                {
                  "assignments": [
                    1306
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1306,
                      "name": "nativeToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 1377,
                      "src": "6278:22:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_GoodDollar_$7633",
                        "typeString": "contract GoodDollar"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1305,
                        "name": "GoodDollar",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7633,
                        "src": "6278:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1318,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1309,
                        "name": "_tokenName",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1264,
                        "src": "6322:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1310,
                        "name": "_tokenSymbol",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1266,
                        "src": "6337:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1311,
                        "name": "_cap",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1268,
                        "src": "6354:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1312,
                        "name": "_formula",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1270,
                        "src": "6363:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_FeeFormula_$2633",
                          "typeString": "contract FeeFormula"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1313,
                        "name": "_identity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1272,
                        "src": "6376:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Identity_$5447",
                          "typeString": "contract Identity"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1315,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6398:1:3",
                            "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": 1314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6390:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1316,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6390:10:3",
                        "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": 1308,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "6303:14:3",
                      "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": 1307,
                        "name": "GoodDollar",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7633,
                        "src": "6307:10:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      }
                    },
                    "id": 1317,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6303:101:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_GoodDollar_$7633",
                      "typeString": "contract GoodDollar"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6278:126:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1323,
                            "name": "addFoundersGoodDollar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1121,
                            "src": "6460:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                              "typeString": "contract AddFoundersGoodDollarWithRep"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                              "typeString": "contract AddFoundersGoodDollarWithRep"
                            }
                          ],
                          "id": 1322,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6452:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1324,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6452:30:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1319,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1306,
                        "src": "6430:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 1321,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16638,
                      "src": "6430:21:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 1325,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6430:53:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1326,
                  "nodeType": "ExpressionStatement",
                  "src": "6430:53:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1327,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1306,
                        "src": "6487:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 1329,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "renounceMinter",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16647,
                      "src": "6487:26:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 1330,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6487:28:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1331,
                  "nodeType": "ExpressionStatement",
                  "src": "6487:28:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1336,
                            "name": "addFoundersGoodDollar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1121,
                            "src": "6558:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                              "typeString": "contract AddFoundersGoodDollarWithRep"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                              "typeString": "contract AddFoundersGoodDollarWithRep"
                            }
                          ],
                          "id": 1335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6550:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1337,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6550:30:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1332,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1306,
                        "src": "6520:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 1334,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferOwnership",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17229,
                      "src": "6520:29:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 1338,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6520:61:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1339,
                  "nodeType": "ExpressionStatement",
                  "src": "6520:61:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1351,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1340,
                      "name": "avatar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1109,
                      "src": "6586:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Avatar_$8541",
                        "typeString": "contract Avatar"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1343,
                          "name": "nativeToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1306,
                          "src": "6633:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_GoodDollar_$7633",
                            "typeString": "contract GoodDollar"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1344,
                          "name": "_nativeReputation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1274,
                          "src": "6649:17:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Reputation_$12259",
                            "typeString": "contract Reputation"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1345,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18007,
                            "src": "6671:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6671:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1347,
                          "name": "_founders",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1277,
                          "src": "6686:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1348,
                          "name": "_avatarTokenAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1279,
                          "src": "6700:18:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1349,
                          "name": "_foundersReputationAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1282,
                          "src": "6723:25:3",
                          "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": 1341,
                          "name": "addFoundersGoodDollar",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1121,
                          "src": "6595:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_AddFoundersGoodDollarWithRep_$1107",
                            "typeString": "contract AddFoundersGoodDollarWithRep"
                          }
                        },
                        "id": 1342,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "addFounders",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1106,
                        "src": "6595:33:3",
                        "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": 1350,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6595:157:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Avatar_$8541",
                        "typeString": "contract Avatar"
                      }
                    },
                    "src": "6586:166:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Avatar_$8541",
                      "typeString": "contract Avatar"
                    }
                  },
                  "id": 1352,
                  "nodeType": "ExpressionStatement",
                  "src": "6586:166:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1357,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1109,
                            "src": "6787:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 1356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6779:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1358,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6779:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1353,
                        "name": "nativeToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1306,
                        "src": "6757:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_GoodDollar_$7633",
                          "typeString": "contract GoodDollar"
                        }
                      },
                      "id": 1355,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addPauser",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16741,
                      "src": "6757:21:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 1359,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6757:38:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1360,
                  "nodeType": "ExpressionStatement",
                  "src": "6757:38:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1364,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1361,
                      "name": "lock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1111,
                      "src": "6800:4:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1362,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18007,
                        "src": "6807:3:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 1363,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6807:10:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "6800:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 1365,
                  "nodeType": "ExpressionStatement",
                  "src": "6800:17:3"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1368,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1109,
                            "src": "6842:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 1367,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6834:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1369,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6834:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 1366,
                      "name": "NewOrg",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1115,
                      "src": "6827:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 1370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6827:23:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1371,
                  "nodeType": "EmitStatement",
                  "src": "6822:28:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1373,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1109,
                            "src": "6870:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Avatar_$8541",
                              "typeString": "contract Avatar"
                            }
                          ],
                          "id": 1372,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6862:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 1374,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6862:15:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "id": 1375,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "6861:17:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 1286,
                  "id": 1376,
                  "nodeType": "Return",
                  "src": "6854:24:3"
                }
              ]
            },
            "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": 1378,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_forgeOrg",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1283,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1264,
                  "name": "_tokenName",
                  "nodeType": "VariableDeclaration",
                  "scope": 1378,
                  "src": "5720:24:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1263,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5720:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1266,
                  "name": "_tokenSymbol",
                  "nodeType": "VariableDeclaration",
                  "scope": 1378,
                  "src": "5748:26:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1265,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5748:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1268,
                  "name": "_cap",
                  "nodeType": "VariableDeclaration",
                  "scope": 1378,
                  "src": "5778:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1267,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5778:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1270,
                  "name": "_formula",
                  "nodeType": "VariableDeclaration",
                  "scope": 1378,
                  "src": "5794:19:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_FeeFormula_$2633",
                    "typeString": "contract FeeFormula"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1269,
                    "name": "FeeFormula",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2633,
                    "src": "5794:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_FeeFormula_$2633",
                      "typeString": "contract FeeFormula"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1272,
                  "name": "_identity",
                  "nodeType": "VariableDeclaration",
                  "scope": 1378,
                  "src": "5817:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Identity_$5447",
                    "typeString": "contract Identity"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1271,
                    "name": "Identity",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5447,
                    "src": "5817:8:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Identity_$5447",
                      "typeString": "contract Identity"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1274,
                  "name": "_nativeReputation",
                  "nodeType": "VariableDeclaration",
                  "scope": 1378,
                  "src": "5839:28:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Reputation_$12259",
                    "typeString": "contract Reputation"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1273,
                    "name": "Reputation",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12259,
                    "src": "5839:10:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Reputation_$12259",
                      "typeString": "contract Reputation"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1277,
                  "name": "_founders",
                  "nodeType": "VariableDeclaration",
                  "scope": 1378,
                  "src": "5871:26:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1275,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5871:7:3",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 1276,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5871:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1279,
                  "name": "_avatarTokenAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1378,
                  "src": "5901:26:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1278,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5901:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1282,
                  "name": "_foundersReputationAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1378,
                  "src": "5931:42:3",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1280,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "5931:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1281,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "5931:9:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5716:260:3"
            },
            "returnParameters": {
              "id": 1286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1285,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1378,
                  "src": "5994:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1284,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5994:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5993:9:3"
            },
            "scope": 1379,
            "src": "5698:1184:3",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          }
        ],
        "scope": 1380,
        "src": "2487:4397:3"
      }
    ],
    "src": "0:6885:3"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.16+commit.9c3226ce.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.3",
  "updatedAt": "2022-10-27T11:34:11.030Z",
  "devdoc": {
    "methods": {
      "forgeOrg(string,string,uint256,address,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": {}
  }
}